diff options
| author | luigi1111 <luigi1111w@gmail.com> | 2020-04-17 20:45:24 -0500 |
|---|---|---|
| committer | luigi1111 <luigi1111w@gmail.com> | 2020-04-17 20:45:24 -0500 |
| commit | 4a7a98034e12450f1f4f5f8e30f62a582dcbfcec (patch) | |
| tree | 108de1b37fc79928f134516b990cf9f3e301aefe /src/libwalletqt/WalletManager.cpp | |
| parent | 79f78f48e2d14b2f58b1d0a95d989a081eb9392f (diff) | |
| parent | ea25b71ca66a7d81203bbfed7fa1a1d6fa79553f (diff) | |
| download | monzero-gui-4a7a98034e12450f1f4f5f8e30f62a582dcbfcec.tar.gz monzero-gui-4a7a98034e12450f1f4f5f8e30f62a582dcbfcec.tar.xz monzero-gui-4a7a98034e12450f1f4f5f8e30f62a582dcbfcec.zip | |
Merge pull request #2832
ea25b71 updater: fetch signed hashes from getmonero.org, verify downloads (xiphon)
Diffstat (limited to 'src/libwalletqt/WalletManager.cpp')
| -rw-r--r-- | src/libwalletqt/WalletManager.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp index 01faf905..ed4f5776 100644 --- a/src/libwalletqt/WalletManager.cpp +++ b/src/libwalletqt/WalletManager.cpp @@ -41,6 +41,8 @@ #include <QMutexLocker> #include <QString> +#include "qt/updater.h" + class WalletPassphraseListenerImpl : public Monero::WalletListener { public: @@ -464,11 +466,31 @@ bool WalletManager::saveQrCode(const QString &code, const QString &path) const void WalletManager::checkUpdatesAsync(const QString &software, const QString &subdir) { m_scheduler.run([this, software, subdir] { - emit checkUpdatesComplete(checkUpdates(software, subdir)); - }); -} + const auto updateInfo = Monero::WalletManager::checkUpdates(software.toStdString(), subdir.toStdString()); + if (!std::get<0>(updateInfo)) + { + return; + } + + const QString version = QString::fromStdString(std::get<1>(updateInfo)); + const QByteArray hashFromDns = QByteArray::fromHex(QString::fromStdString(std::get<2>(updateInfo)).toUtf8()); + const QString downloadUrl = QString::fromStdString(std::get<4>(updateInfo)); + try + { + const QString binaryFilename = QUrl(downloadUrl).fileName(); + QPair<QString, QString> signers; + const QString signedHash = Updater().fetchSignedHash(binaryFilename, hashFromDns, signers).toHex(); + qInfo() << "Update found" << version << downloadUrl << "hash" << signedHash << "signed by" << signers; + emit checkUpdatesComplete(version, downloadUrl, signedHash, signers.first, signers.second); + } + catch (const std::exception &e) + { + qCritical() << "Failed to fetch and verify signed hash:" << e.what(); + } + }); +} QString WalletManager::checkUpdates(const QString &software, const QString &subdir) const { |
