diff options
| author | Riccardo Spagni <ric@spagni.net> | 2016-11-11 12:43:52 +0200 |
|---|---|---|
| committer | Riccardo Spagni <ric@spagni.net> | 2016-11-11 12:43:52 +0200 |
| commit | 1b9c864c74642a4233490d786e45b99ec1c49dfb (patch) | |
| tree | 2e030aaa15e4292b3d627929073854cea5a356d7 /src/libwalletqt/Wallet.cpp | |
| parent | d6f200ff06bb6bbb101eed99d15c47f174769bc8 (diff) | |
| parent | 472f55933266bc3d07940656156bdb529e43776f (diff) | |
| download | monzero-gui-1b9c864c74642a4233490d786e45b99ec1c49dfb.tar.gz monzero-gui-1b9c864c74642a4233490d786e45b99ec1c49dfb.tar.xz monzero-gui-1b9c864c74642a4233490d786e45b99ec1c49dfb.zip | |
Merge pull request #133
472f559 sign/verify message/file (moneromooo.monero)
Diffstat (limited to 'src/libwalletqt/Wallet.cpp')
| -rw-r--r-- | src/libwalletqt/Wallet.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index d281c03a..18ded2c8 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -275,6 +275,78 @@ QString Wallet::getTxKey(const QString &txid) const return QString::fromStdString(m_walletImpl->getTxKey(txid.toStdString())); } +QString Wallet::signMessage(const QString &message, bool filename) const +{ + if (filename) { + QFile file(message); + uchar *data = NULL; + + try { + if (!file.open(QIODevice::ReadOnly)) + return ""; + quint64 size = file.size(); + if (size == 0) { + file.close(); + return QString::fromStdString(m_walletImpl->signMessage(std::string())); + } + data = file.map(0, size); + if (!data) { + file.close(); + return ""; + } + std::string signature = m_walletImpl->signMessage(std::string((const char*)data, size)); + file.unmap(data); + file.close(); + return QString::fromStdString(signature); + } + catch (const std::exception &e) { + if (data) + file.unmap(data); + file.close(); + return ""; + } + } + else { + return QString::fromStdString(m_walletImpl->signMessage(message.toStdString())); + } +} + +bool Wallet::verifySignedMessage(const QString &message, const QString &address, const QString &signature, bool filename) const +{ + if (filename) { + QFile file(message); + uchar *data = NULL; + + try { + if (!file.open(QIODevice::ReadOnly)) + return false; + quint64 size = file.size(); + if (size == 0) { + file.close(); + return m_walletImpl->verifySignedMessage(std::string(), address.toStdString(), signature.toStdString()); + } + data = file.map(0, size); + if (!data) { + file.close(); + return false; + } + bool ret = m_walletImpl->verifySignedMessage(std::string((const char*)data, size), address.toStdString(), signature.toStdString()); + file.unmap(data); + file.close(); + return ret; + } + catch (const std::exception &e) { + if (data) + file.unmap(data); + file.close(); + return false; + } + } + else { + return m_walletImpl->verifySignedMessage(message.toStdString(), address.toStdString(), signature.toStdString()); + } +} + Wallet::Wallet(Bitmonero::Wallet *w, QObject *parent) : QObject(parent) , m_walletImpl(w) |
