Skip to content

Commit

Permalink
wallet rpc: support making integrated address of given standard address
Browse files Browse the repository at this point in the history
  • Loading branch information
stoffu committed Jul 20, 2018
1 parent 702a410 commit 7db7ec8
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
34 changes: 33 additions & 1 deletion src/wallet/wallet_rpc_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1255,7 +1255,39 @@ namespace tools
}
}

res.integrated_address = m_wallet->get_integrated_address_as_str(payment_id);
if (req.standard_address.empty())
{
res.integrated_address = m_wallet->get_integrated_address_as_str(payment_id);
}
else
{
cryptonote::address_parse_info info;
if(!get_account_address_from_str(info, m_wallet->nettype(), req.standard_address))
{
er.code = WALLET_RPC_ERROR_CODE_WRONG_ADDRESS;
er.message = "Invalid address";
return false;
}
if (info.is_subaddress)
{
er.code = WALLET_RPC_ERROR_CODE_WRONG_ADDRESS;
er.message = "Subaddress shouldn't be used";
return false;
}
if (info.has_payment_id)
{
er.code = WALLET_RPC_ERROR_CODE_WRONG_ADDRESS;
er.message = "Already integrated address";
return false;
}
if (req.payment_id.empty())
{
er.code = WALLET_RPC_ERROR_CODE_WRONG_PAYMENT_ID;
er.message = "Payment ID shouldn't be left unspecified";
return false;
}
res.integrated_address = get_account_integrated_address_as_str(m_wallet->nettype(), info.address, payment_id);
}
res.payment_id = epee::string_tools::pod_to_hex(payment_id);
return true;
}
Expand Down
2 changes: 2 additions & 0 deletions src/wallet/wallet_rpc_server_commands_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -914,9 +914,11 @@ namespace wallet_rpc
{
struct request
{
std::string standard_address;
std::string payment_id;

BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(standard_address)
KV_SERIALIZE(payment_id)
END_KV_SERIALIZE_MAP()
};
Expand Down

0 comments on commit 7db7ec8

Please sign in to comment.