wallet: allow signing a message with spend or view key

This commit is contained in:
moneromooo-monero 2020-05-20 21:43:09 +00:00 committed by Sarang Noether
parent 5946002105
commit 743608ec16
16 changed files with 178 additions and 43 deletions

View file

@ -2007,7 +2007,20 @@ namespace tools
return false;
}
res.signature = m_wallet->sign(req.data, {req.account_index, req.address_index});
tools::wallet2::message_signature_type_t signature_type = tools::wallet2::sign_with_spend_key;
if (req.signature_type == "spend" || req.signature_type == "")
signature_type = tools::wallet2::sign_with_spend_key;
else if (req.signature_type == "view")
signature_type = tools::wallet2::sign_with_view_key;
else if (req.signature_type == "both")
signature_type = tools::wallet2::sign_with_both_keys;
else
{
er.code = WALLET_RPC_ERROR_CODE_INVALID_SIGNATURE_TYPE;
er.message = "Invalid signature type requested";
return false;
}
res.signature = m_wallet->sign(req.data, signature_type, {req.account_index, req.address_index});
return true;
}
//------------------------------------------------------------------------------------------------------------------------------
@ -2042,7 +2055,17 @@ namespace tools
return false;
}
res.good = m_wallet->verify(req.data, info.address, req.signature);
const auto result = m_wallet->verify(req.data, info.address, req.signature);
res.good = result.valid;
res.version = result.version;
res.old = result.old;
switch (result.type)
{
case tools::wallet2::sign_with_spend_key: res.signature_type = "spend"; break;
case tools::wallet2::sign_with_view_key: res.signature_type = "view"; break;
case tools::wallet2::sign_with_both_keys: res.signature_type = "both"; break;
default: res.signature_type = "invalid"; break;
}
return true;
}
//------------------------------------------------------------------------------------------------------------------------------