diff options
author | luigi1111 <luigi1111w@gmail.com> | 2021-06-24 14:06:13 -0500 |
---|---|---|
committer | luigi1111 <luigi1111w@gmail.com> | 2021-06-24 14:06:13 -0500 |
commit | 99aa45fd34ef7c5a7a105dc7ed1131b734a296f1 (patch) | |
tree | ca930ea2d3c3545a3ff7b0dd54d7140baaefb60a /src/wallet/api/wallet.cpp | |
parent | Merge pull request #7742 (diff) | |
parent | wallet_api: signMessage: add sign with subaddress (diff) | |
download | monero-99aa45fd34ef7c5a7a105dc7ed1131b734a296f1.tar.xz |
Merge pull request #7746
1aa1850 wallet_api: signMessage: add sign with subaddress (tobtoht)
Diffstat (limited to 'src/wallet/api/wallet.cpp')
-rw-r--r-- | src/wallet/api/wallet.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp index 31d772457..e9586c163 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp @@ -2058,9 +2058,24 @@ bool WalletImpl::checkReserveProof(const std::string &address, const std::string } } -std::string WalletImpl::signMessage(const std::string &message) +std::string WalletImpl::signMessage(const std::string &message, const std::string &address) { - return m_wallet->sign(message, tools::wallet2::sign_with_spend_key); + if (address.empty()) { + return m_wallet->sign(message, tools::wallet2::sign_with_spend_key); + } + + cryptonote::address_parse_info info; + if (!cryptonote::get_account_address_from_str(info, m_wallet->nettype(), address)) { + setStatusError(tr("Failed to parse address")); + return ""; + } + auto index = m_wallet->get_subaddress_index(info.address); + if (!index) { + setStatusError(tr("Address doesn't belong to the wallet")); + return ""; + } + + return m_wallet->sign(message, tools::wallet2::sign_with_spend_key, *index); } bool WalletImpl::verifySignedMessage(const std::string &message, const std::string &address, const std::string &signature) const |