aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/api/wallet.cpp
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2021-06-24 14:06:13 -0500
committerluigi1111 <luigi1111w@gmail.com>2021-06-24 14:06:13 -0500
commit99aa45fd34ef7c5a7a105dc7ed1131b734a296f1 (patch)
treeca930ea2d3c3545a3ff7b0dd54d7140baaefb60a /src/wallet/api/wallet.cpp
parentMerge pull request #7742 (diff)
parentwallet_api: signMessage: add sign with subaddress (diff)
downloadmonero-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.cpp19
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