wallet2_api: API to sign and verify a message

This commit is contained in:
moneromooo-monero 2016-11-08 09:58:46 +00:00
parent e8a55db29d
commit c441a61ef6
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
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

@ -362,6 +362,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;
}; };
/** /**