Reserve proof

This commit is contained in:
stoffu
2017-12-28 22:50:10 +09:00
parent 35d5aa36c9
commit 6d40a92026
10 changed files with 580 additions and 0 deletions

View File

@@ -1576,6 +1576,55 @@ bool WalletImpl::checkSpendProof(const std::string &txid_str, const std::string
}
}
std::string WalletImpl::getReserveProof(bool all, uint32_t account_index, uint64_t amount, const std::string &message) const {
try
{
m_status = Status_Ok;
boost::optional<std::pair<uint32_t, uint64_t>> account_minreserve;
if (!all)
{
account_minreserve = std::make_pair(account_index, amount);
}
return m_wallet->get_reserve_proof(account_minreserve, message);
}
catch (const std::exception &e)
{
m_status = Status_Error;
m_errorString = e.what();
return "";
}
}
bool WalletImpl::checkReserveProof(const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &total, uint64_t &spent) const {
cryptonote::address_parse_info info;
if (!cryptonote::get_account_address_from_str(info, m_wallet->testnet(), address))
{
m_status = Status_Error;
m_errorString = tr("Failed to parse address");
return false;
}
if (info.is_subaddress)
{
m_status = Status_Error;
m_errorString = tr("Address must not be a subaddress");
return false;
}
good = false;
try
{
m_status = Status_Ok;
good = m_wallet->check_reserve_proof(info.address, message, signature, total, spent);
return true;
}
catch (const std::exception &e)
{
m_status = Status_Error;
m_errorString = e.what();
return false;
}
}
std::string WalletImpl::signMessage(const std::string &message)
{
return m_wallet->sign(message);