mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-10 22:18:54 +01:00
Deduplicate the message verifying code
The logic of verifying a message was duplicated in 2 places: src/qt/signverifymessagedialog.cpp SignVerifyMessageDialog::on_verifyMessageButton_VM_clicked() src/rpc/misc.cpp verifymessage() with the only difference being the result handling. Move the logic into a dedicated src/util/message.cpp MessageVerify() which returns a set of result codes, call it from the 2 places and just handle the results differently in the callers.
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include <sync.h>
|
||||
#include <test/util/setup_common.h>
|
||||
#include <test/util/str.h>
|
||||
#include <util/message.h> // For MessageVerify()
|
||||
#include <util/moneystr.h>
|
||||
#include <util/strencodings.h>
|
||||
#include <util/string.h>
|
||||
@@ -2025,4 +2026,56 @@ BOOST_AUTO_TEST_CASE(test_tracked_vector)
|
||||
BOOST_CHECK_EQUAL(v8[2].copies, 0);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(message_verify)
|
||||
{
|
||||
BOOST_CHECK_EQUAL(
|
||||
MessageVerify(
|
||||
"invalid address",
|
||||
"signature should be irrelevant",
|
||||
"message too"),
|
||||
MessageVerificationResult::ERR_INVALID_ADDRESS);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
MessageVerify(
|
||||
"3B5fQsEXEaV8v6U3ejYc8XaKXAkyQj2MjV",
|
||||
"signature should be irrelevant",
|
||||
"message too"),
|
||||
MessageVerificationResult::ERR_ADDRESS_NO_KEY);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
MessageVerify(
|
||||
"1KqbBpLy5FARmTPD4VZnDDpYjkUvkr82Pm",
|
||||
"invalid signature, not in base64 encoding",
|
||||
"message should be irrelevant"),
|
||||
MessageVerificationResult::ERR_MALFORMED_SIGNATURE);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
MessageVerify(
|
||||
"1KqbBpLy5FARmTPD4VZnDDpYjkUvkr82Pm",
|
||||
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||
"message should be irrelevant"),
|
||||
MessageVerificationResult::ERR_PUBKEY_NOT_RECOVERED);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
MessageVerify(
|
||||
"15CRxFdyRpGZLW9w8HnHvVduizdL5jKNbs",
|
||||
"IPojfrX2dfPnH26UegfbGQQLrdK844DlHq5157/P6h57WyuS/Qsl+h/WSVGDF4MUi4rWSswW38oimDYfNNUBUOk=",
|
||||
"I never signed this"),
|
||||
MessageVerificationResult::ERR_NOT_SIGNED);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
MessageVerify(
|
||||
"15CRxFdyRpGZLW9w8HnHvVduizdL5jKNbs",
|
||||
"IPojfrX2dfPnH26UegfbGQQLrdK844DlHq5157/P6h57WyuS/Qsl+h/WSVGDF4MUi4rWSswW38oimDYfNNUBUOk=",
|
||||
"Trust no one"),
|
||||
MessageVerificationResult::OK);
|
||||
|
||||
BOOST_CHECK_EQUAL(
|
||||
MessageVerify(
|
||||
"11canuhp9X2NocwCq7xNrQYTmUgZAnLK3",
|
||||
"IIcaIENoYW5jZWxsb3Igb24gYnJpbmsgb2Ygc2Vjb25kIGJhaWxvdXQgZm9yIGJhbmtzIAaHRtbCeDZINyavx14=",
|
||||
"Trust me"),
|
||||
MessageVerificationResult::OK);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
Reference in New Issue
Block a user