Skip to content

Commit 05f5b82

Browse files
committed
Merge #326: Replace Signature with Message Signature
2e4dac9 Replace Signature with Message Signature (Masud) Pull request description: When attempting to use verify_message() function, using Singature kept leading to InvalidSignature. As such, we replaced Signature with MessageSignature from bitcoin::sign_message::MessageSignature. We also noticed that there was a // TODO comment to test verify_message, so we also added a test function and it works with the new MessageSignature. ACKs for top commit: tcharding: ACK 2e4dac9 Tree-SHA512: d6279086c66f420009c5600e3d5028090c8df3a7088d2fbe928d94fc796dedf227b8536295bd231bf5ddc6ad306120685020c4cf6f4f0c631c3075d9ff9f0009
2 parents c0fc7cb + 2e4dac9 commit 05f5b82

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

Diff for: client/src/client.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use serde_json;
2323

2424
use crate::bitcoin::address::{NetworkUnchecked, NetworkChecked};
2525
use crate::bitcoin::hashes::hex::FromHex;
26-
use crate::bitcoin::secp256k1::ecdsa::Signature;
26+
use bitcoin::sign_message::MessageSignature;
2727
use crate::bitcoin::{
2828
Address, Amount, Block, OutPoint, PrivateKey, PublicKey, Script, Transaction,
2929
};
@@ -874,7 +874,7 @@ pub trait RpcApi: Sized {
874874
fn verify_message(
875875
&self,
876876
address: &Address,
877-
signature: &Signature,
877+
signature: &MessageSignature,
878878
message: &str,
879879
) -> Result<bool> {
880880
let args = [address.to_string().into(), signature.to_string().into(), into_json(message)?];

Diff for: integration_test/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ edition = "2018"
66

77
[dependencies]
88
bitcoincore-rpc = { path = "../client" }
9-
bitcoin = { version = "0.31.0", features = ["serde", "rand"]}
9+
bitcoin = { version = "0.31.0", features = ["serde", "rand", "base64"]}
1010
lazy_static = "1.4.0"
1111
log = "0.4"

Diff for: integration_test/src/main.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ use crate::json::BlockStatsFields as BsFields;
2626
use bitcoin::consensus::encode::{deserialize, serialize_hex};
2727
use bitcoin::hashes::hex::FromHex;
2828
use bitcoin::hashes::Hash;
29+
use bitcoin::sign_message::MessageSignature;
2930
use bitcoin::{secp256k1, ScriptBuf, sighash};
3031
use bitcoin::{
3132
transaction, Address, Amount, Network, OutPoint, PrivateKey, Sequence, SignedAmount,
@@ -146,6 +147,7 @@ fn main() {
146147
test_get_blockchain_info(&cl);
147148
test_get_new_address(&cl);
148149
test_get_raw_change_address(&cl);
150+
test_verify_message_with_messagesignature(&cl);
149151
test_dump_private_key(&cl);
150152
test_generate(&cl);
151153
test_get_balance_generate_to_address(&cl);
@@ -216,7 +218,7 @@ fn main() {
216218
test_get_mempool_info(&cl);
217219
test_add_multisig_address(&cl);
218220
//TODO import_multi(
219-
//TODO verify_message(
221+
220222
//TODO encrypt_wallet(&self, passphrase: &str) -> Result<()> {
221223
//TODO get_by_id<T: queryable::Queryable<Self>>(
222224
test_add_node(&cl);
@@ -1368,6 +1370,16 @@ fn test_add_multisig_address(cl: &Client) {
13681370
assert!(cl.add_multisig_address(addresses.len(), &addresses, None, Some(json::AddressType::Bech32)).is_ok());
13691371
}
13701372

1373+
fn test_verify_message_with_messagesignature(cl: &Client) {
1374+
let addr: Address = Address::from_str("mm68FdwbpxkVcqjU3fu7iiBGEwrsC6Hk66").unwrap().assume_checked();
1375+
let signature = MessageSignature::from_base64(
1376+
"H3X+ic7axKtHGIsKiqDq0TmP9HIAkONwunln17ROlvB4SOVVUoG5e79EwAz94x2eERPwqcGJ5rLuWRhIu85pEwE=",)
1377+
.expect("a valid signature");
1378+
let message = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
1379+
1380+
assert!(cl.verify_message(&addr, &signature, message).expect("a valid signature"));
1381+
}
1382+
13711383
#[rustfmt::skip]
13721384
fn test_derive_addresses(cl: &Client) {
13731385
let descriptor = r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x";

0 commit comments

Comments
 (0)