wallet2: finalize_multisig now rejects non N-1/N multisig wallets

This commit is contained in:
moneromooo-monero 2018-12-21 23:39:05 +00:00
parent 6bc0c7e685
commit de9dcdd179
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3

View file

@ -4356,6 +4356,23 @@ std::string wallet2::make_multisig(const epee::wipeable_string &password,
bool wallet2::finalize_multisig(const epee::wipeable_string &password, const std::unordered_set<crypto::public_key> &pkeys, std::vector<crypto::public_key> signers) bool wallet2::finalize_multisig(const epee::wipeable_string &password, const std::unordered_set<crypto::public_key> &pkeys, std::vector<crypto::public_key> signers)
{ {
bool ready;
uint32_t threshold, total;
if (!multisig(&ready, &threshold, &total))
{
MERROR("This is not a multisig wallet");
return false;
}
if (ready)
{
MERROR("This multisig wallet is already finalized");
return false;
}
if (threshold + 1 != total)
{
MERROR("finalize_multisig should only be used for N-1/N wallets, use exchange_multisig_keys instead");
return false;
}
exchange_multisig_keys(password, pkeys, signers); exchange_multisig_keys(password, pkeys, signers);
return true; return true;
} }