[PATCH 1 of 2] (issue178) Show checksums after installer creation
Wald Commits
scm-commit at wald.intevation.org
Thu Jan 15 11:50:24 CET 2015
# HG changeset patch
# User Andre Heinecke <andre.heinecke at intevation.de>
# Date 1421317367 -3600
# Node ID c8a6a3e6bdeb2556858bd12247deda072fb26966
# Parent fdef94da2d7065d062e143930557ec956769b4df
(issue178) Show checksums after installer creation
diff -r fdef94da2d70 -r c8a6a3e6bdeb ui/createinstallerdialog.cpp
--- a/ui/createinstallerdialog.cpp Thu Dec 04 14:32:16 2014 +0100
+++ b/ui/createinstallerdialog.cpp Thu Jan 15 11:22:47 2015 +0100
@@ -32,10 +32,10 @@
#define SIGN_HASH "sha256"
#endif
#ifndef SIGN_URL
-#define SIGN_URL "http://wald.intevation.org/projects/trustbridge/"
+#define SIGN_URL "https://www.trustbridge.de"
#endif
#ifndef SIGN_PUBLISHER
-#define SIGN_PUBLISHER "TrustBridge Test with ümlaut"
+#define SIGN_PUBLISHER "Bundesamt für Sicherheit in der Informationstechnik"
#endif
CreateInstallerDialog::CreateInstallerDialog(QMainWindow *parent) :
@@ -185,16 +185,65 @@
delete mCurrentWorkingDir;
mCurrentWorkingDir = NULL;
}
- FinishedDialog *fin = new FinishedDialog(0, tr("Created installer in %1.")
- .arg(mSaveFile->text()), mNSISProc.readAll(), false);
- qDebug() << "Finished: " << mNSISProc.readAll();
+
mProgress.setLabelText(tr("Signing installer package..."));
if (!signFile(mInstallerPath)) {
showErrorMessage(tr("Failed to sign installer package."));
QFile::remove(mInstallerPath);
+ mProgress.cancel();
+ } else {
+ mProgress.setLabelText(tr("Calculating checksums..."));
+ QString checksums = QString::fromLatin1("<br/><h3>") + tr("Checksums:") + "</h3>";
+ QDir outDir(mSaveFile->text());
+ bool checksumErr = false;
+ QStringList filters;
+ filters << "TrustBridge-*.sh" << "TrustBridge-*.exe";
+ qDebug() << "Entries: " << outDir.entryList(filters);
+ qDebug() << "Entries unfiltered: " << outDir.entryList();
+ foreach (const QString &file, outDir.entryList(filters)) {
+ QFile f(outDir.filePath(file));
+ if (!f.open(QIODevice::ReadOnly)) {
+ showErrorMessage (tr("Failed to open file \"%1\".").arg(file));
+ checksumErr = true;
+ break;
+ }
+ const QByteArray fileData = f.readAll();
+ if (fileData.isEmpty()) {
+ showErrorMessage (tr("Failed to read file \"%1\".").arg(file));
+ checksumErr = true;
+ break;
+ }
+ const QByteArray theSha256sum = sha256sum(fileData);
+ const QByteArray theSha1sum = sha1sum(fileData);
+ if (theSha1sum.isEmpty() || theSha256sum.isEmpty()) {
+ showErrorMessage (tr("Failed to calculate checksums for \"%1\".").arg(file));
+ checksumErr = true;
+ break;
+ }
+ checksums += QString::fromLatin1("<br/><b>%1:</b><br/><pre>").arg(file);
+ checksums += " SHA1: ";
+ for (int i=0; i < theSha1sum.size(); i++) {
+ checksums += QString("%1").arg(
+ (unsigned char)(theSha1sum[i]), 0, 16).rightJustified(2, '0');
+ }
+
+ checksums += "\n SHA256: ";
+ for (int i=0; i < theSha256sum.size(); i++) {
+ checksums += QString("%1").arg(
+ (unsigned char)(theSha256sum[i]), 0, 16).rightJustified(2, '0');
+ }
+ checksums += "</pre>";
+
+ }
+
+ mProgress.cancel();
+ if (!checksumErr) {
+ FinishedDialog *fin = new FinishedDialog(0, tr("Successfully created the installation packages in \"%1\".")
+ .arg(mSaveFile->text()) + checksums, mNSISProc.readAll(), false);
+ qDebug() << "Finished: " << mNSISProc.readAll();
+ fin->show();
+ }
}
- mProgress.cancel();
- fin->show();
close();
}
@@ -552,6 +601,9 @@
QStyle::SP_MessageBoxCritical).pixmap(16, 16));
}
msgLabel->setText(msg);
+ msgLabel->setTextInteractionFlags(
+ Qt::TextSelectableByMouse |
+ Qt::TextSelectableByKeyboard);
topLayout->addWidget(msgLabel);
topLayout->addWidget(detailsWindow);
diff -r fdef94da2d70 -r c8a6a3e6bdeb ui/sslhelp.cpp
--- a/ui/sslhelp.cpp Thu Dec 04 14:32:16 2014 +0100
+++ b/ui/sslhelp.cpp Thu Jan 15 11:22:47 2015 +0100
@@ -7,6 +7,7 @@
*/
#include "sslhelp.h"
#include <polarssl/sha256.h>
+#include <polarssl/sha1.h>
#include <polarssl/pk.h>
#include <polarssl/entropy.h>
#include <polarssl/ctr_drbg.h>
@@ -29,6 +30,13 @@
return QByteArray((const char *)output, 32);
}
+QByteArray sha1sum(const QByteArray& data)
+{
+ unsigned char output[20];
+ sha1((unsigned char *)data.constData(), (size_t)data.size(), output);
+ return QByteArray((const char *)output, 20);
+}
+
QByteArray rsaSignSHA256Hash(const QByteArray& hash, pk_context *pk)
{
int ret = 0;
diff -r fdef94da2d70 -r c8a6a3e6bdeb ui/sslhelp.h
--- a/ui/sslhelp.h Thu Dec 04 14:32:16 2014 +0100
+++ b/ui/sslhelp.h Thu Jan 15 11:22:47 2015 +0100
@@ -32,6 +32,13 @@
*/
QByteArray sha256sum(const QByteArray& data);
+/** @brief calculate the sha1 of the bytearray data
+ *
+ * @param [in] data The data to hash
+ * @returns the sha1sum of the data
+ */
+QByteArray sha1sum(const QByteArray& data);
+
/** @brief Create a RSA signature fur a sha256 hashsum
*
* @param [in] hash the hash to sign.
More information about the Trustbridge-commits
mailing list