aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt/Wallet.cpp
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2016-11-11 12:43:52 +0200
committerRiccardo Spagni <ric@spagni.net>2016-11-11 12:43:52 +0200
commit1b9c864c74642a4233490d786e45b99ec1c49dfb (patch)
tree2e030aaa15e4292b3d627929073854cea5a356d7 /src/libwalletqt/Wallet.cpp
parentd6f200ff06bb6bbb101eed99d15c47f174769bc8 (diff)
parent472f55933266bc3d07940656156bdb529e43776f (diff)
downloadmonzero-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.cpp72
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)