Mercurial > trustbridge
view ui/certificatelist.cpp @ 464:2e100d3e414a
Add helper functions for sha256 sum and rsa signing
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 23 Apr 2014 15:33:42 +0000 |
parents | 17e1c8f37d72 |
children | cf25bb040186 |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #include "certificatelist.h" #include <QDebug> #define PARSER_VERSION "1" CertificateList::CertificateList() : mStatus(NoList) { } list_status_t CertificateList::readList(const char *fileName) { char *data = NULL; size_t size = 0; mCertificates.clear(); mDate = QDateTime(); mData = QString(); mFileName = QString::fromUtf8(fileName); mStatus = read_and_verify_list(fileName, &data, &size); if (!isValid()) { return mStatus; } // Take the data into the Qt Universe where memory is plentiful // and CPU's are fast :) mData = QString::fromLatin1(data, size); free(data); data = NULL; QStringList lines = mData.split("\n"); for (int i = 0; i < lines.size(); ++i) { QString curLine = lines[i].trimmed(); if (curLine.startsWith("F:")) { if (curLine.right(1) != PARSER_VERSION) { qDebug() << "Invalid Format Version"; mStatus = IncompatibleVersion; return mStatus; } } else if (curLine.startsWith("D:")) { bool ok = false; qlonglong timestamp = 0; curLine.remove(0, 2); timestamp = curLine.toLongLong(&ok); if (!ok) { qDebug() << "Invalid Date"; mStatus = InvalidFormat; return mStatus; } mDate = QDateTime::fromMSecsSinceEpoch(timestamp * 1000); } else if (curLine.startsWith("I:")) { mCertificates << Certificate(curLine); } else if (curLine.startsWith("R:")) { mCertificates << Certificate(curLine); } else if (curLine.startsWith("S:")) { // Signature is verified in read_and_verify_list continue; } else if (!curLine.isEmpty()){ qDebug () << "Don't know how to handle: " << curLine; } } return mStatus; } CertificateList::CertificateList(const char *fileName) : mStatus(NoList) { readList(fileName); } const QList<Certificate>& CertificateList::getCertificates() const { return mCertificates; }