Merge pull request #1309

c441a61 wallet2_api: API to sign and verify a message (moneromooo-monero)
This commit is contained in:
Riccardo Spagni 2016-11-09 14:10:39 +02:00
commit 56c594a8fe
No known key found for this signature in database
GPG Key ID: 55432DF31CCD4FCD
3 changed files with 35 additions and 0 deletions

View File

@ -752,6 +752,23 @@ std::string WalletImpl::getTxKey(const std::string &txid) const
} }
} }
std::string WalletImpl::signMessage(const std::string &message)
{
return m_wallet->sign(message);
}
bool WalletImpl::verifySignedMessage(const std::string &message, const std::string &address, const std::string &signature) const
{
cryptonote::account_public_address addr;
bool has_payment_id;
crypto::hash8 payment_id;
if (!cryptonote::get_account_integrated_address_from_str(addr, has_payment_id, payment_id, m_wallet->testnet(), address))
return false;
return m_wallet->verify(message, addr, signature);
}
bool WalletImpl::connectToDaemon() bool WalletImpl::connectToDaemon()
{ {
bool result = m_wallet->check_connection(); bool result = m_wallet->check_connection();

View File

@ -101,6 +101,9 @@ public:
virtual std::string getUserNote(const std::string &txid) const; virtual std::string getUserNote(const std::string &txid) const;
virtual std::string getTxKey(const std::string &txid) const; virtual std::string getTxKey(const std::string &txid) const;
virtual std::string signMessage(const std::string &message);
virtual bool verifySignedMessage(const std::string &message, const std::string &address, const std::string &signature) const;
private: private:
void clearStatus(); void clearStatus();
void refreshThreadFunc(); void refreshThreadFunc();

View File

@ -367,6 +367,21 @@ struct Wallet
*/ */
virtual std::string getUserNote(const std::string &txid) const = 0; virtual std::string getUserNote(const std::string &txid) const = 0;
virtual std::string getTxKey(const std::string &txid) const = 0; virtual std::string getTxKey(const std::string &txid) const = 0;
/*
* \brief signMessage - sign a message with the spend private key
* \param message - the message to sign (arbitrary byte data)
* \return the signature
*/
virtual std::string signMessage(const std::string &message) = 0;
/*!
* \brief verifySignedMessage - verify a signature matches a given message
* \param message - the message (arbitrary byte data)
* \param address - the address the signature claims to be made with
* \param signature - the signature
* \return true if the signature verified, false otherwise
*/
virtual bool verifySignedMessage(const std::string &message, const std::string &addres, const std::string &signature) const = 0;
}; };
/** /**