diff --git a/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp b/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp index 537db0dc..dd9ba7de 100644 --- a/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp +++ b/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp @@ -21,6 +21,8 @@ #include #include +#include + namespace graphene { namespace peerplays_sidechain { // ============================================================================= @@ -858,8 +860,12 @@ void sidechain_net_handler_bitcoin::transfer_all_btc(const std::string &from_add std::set plugin_sons = plugin.get_sons(); for (auto si : from_sons) { if (plugin_sons.find(si.son_id) != plugin_sons.end()) { - fc::ecc::private_key k = plugin.get_private_key(si.son_id); - std::vector signatures = signatures_for_raw_transaction(op.unsigned_tx, amounts, from_redeem_script, k); + std::string son_btc_pub_key = si.sidechain_public_keys[peerplays_sidechain::sidechain_type::bitcoin]; + std::string str_priv_key = get_private_key(son_btc_pub_key); + fc::optional k = graphene::utilities::wif_to_key(str_priv_key); + if (!k) + FC_THROW("Invalid bitcoi private key"); + std::vector signatures = signatures_for_raw_transaction(op.unsigned_tx, amounts, from_redeem_script, *k); op.signatures[si.son_id] = signatures; } else { op.signatures[si.son_id]; @@ -983,8 +989,12 @@ std::string sidechain_net_handler_bitcoin::transfer_withdrawal_from_primary_wall std::set plugin_sons = plugin.get_sons(); for (auto si : from_sons) { if (plugin_sons.find(si.son_id) != plugin_sons.end()) { - fc::ecc::private_key k = plugin.get_private_key(si.son_id); - std::vector signatures = signatures_for_raw_transaction(op.unsigned_tx, amounts, from_redeem_script, k); + std::string son_btc_pub_key = si.sidechain_public_keys[peerplays_sidechain::sidechain_type::bitcoin]; + std::string str_priv_key = get_private_key(son_btc_pub_key); + fc::optional k = graphene::utilities::wif_to_key(str_priv_key); + if (!k) + FC_THROW("Invalid bitcoi private key"); + std::vector signatures = signatures_for_raw_transaction(op.unsigned_tx, amounts, from_redeem_script, *k); op.signatures[si.son_id] = signatures; } else { op.signatures[si.son_id];