Skip to content

Commit a618453

Browse files
committed
Change signmessage returned signature type
Change the strong type of the returned signature to `MessageSignature` to match `signmessagewithprivkey` add a test for it and update the types tables.
1 parent c51b9f7 commit a618453

File tree

16 files changed

+38
-21
lines changed

16 files changed

+38
-21
lines changed

integration_test/tests/wallet.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,23 @@ fn wallet__send_to_address__modelled() {
263263
model.unwrap();
264264
}
265265

266+
#[test]
267+
fn wallet__sign_message__modelled() {
268+
let node = Node::with_wallet(Wallet::Default, &[]);
269+
node.fund_wallet();
270+
271+
let address = node.client.new_address_with_type(AddressType::Legacy).unwrap();
272+
let message = "integration test message";
273+
274+
// Sign the message with the address key
275+
let json: SignMessage = node
276+
.client
277+
.sign_message(&address, message)
278+
.expect("signmessage");
279+
let res: Result<mtype::SignMessage, _> = json.into_model();
280+
let _ = res.expect("SignMessage into model");
281+
}
282+
266283
fn create_load_unload_wallet() {
267284
let node = Node::with_wallet(Wallet::None, &[]);
268285

types/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ default = ["std"]
1717
std = ["bitcoin/std"]
1818

1919
[dependencies]
20-
bitcoin = { version = "0.32.0", default-features = false, features = ["serde", "base64"] }
20+
bitcoin = { version = "0.32.0", default-features = false, features = ["serde", "base64", "secp-recovery"] }
2121
serde = { version = "1.0.103", default-features = false, features = [ "derive", "alloc" ] }
2222
serde_json = { version = "1.0.117" }
2323

types/src/model/wallet.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ use alloc::collections::BTreeMap;
1010
use bitcoin::address::NetworkUnchecked;
1111
use bitcoin::hashes::hash160;
1212
use bitcoin::{
13-
bip32, ecdsa, Address, Amount, BlockHash, FeeRate, PrivateKey, Psbt, PublicKey, ScriptBuf,
14-
SignedAmount, Transaction, Txid, WitnessProgram, WitnessVersion,
13+
bip32, sign_message, Address, Amount, BlockHash, FeeRate, PrivateKey, Psbt, PublicKey,
14+
ScriptBuf, SignedAmount, Transaction, Txid, WitnessProgram, WitnessVersion,
1515
};
1616
use serde::{Deserialize, Serialize};
1717

@@ -622,8 +622,8 @@ pub struct SendToAddress {
622622
}
623623

624624
/// Models the result of JSON-RPC method `signmessage`.
625-
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
626-
pub struct SignMessage(pub ecdsa::Signature);
625+
#[derive(Clone, Debug, PartialEq, Eq)]
626+
pub struct SignMessage(pub sign_message::MessageSignature);
627627

628628
/// Models the result of JSON-RPC method `unloadwallet`.
629629
///

types/src/v17/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@
200200
//! | setaccount | returns nothing | |
201201
//! | sethdseed | returns nothing | |
202202
//! | settxfee | returns boolean | |
203-
//! | signmessage | version + model | UNTESTED |
203+
//! | signmessage | version + model | |
204204
//! | signrawtransactionwithwallet | version + model | |
205205
//! | unloadwallet | returns nothing | |
206206
//! | walletcreatefundedpsbt | version + model | UNTESTED |

types/src/v17/wallet/into.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use bitcoin::hex::FromHex;
88
use bitcoin::key::{self, PrivateKey, PublicKey};
99
use bitcoin::psbt::PsbtParseError;
1010
use bitcoin::{
11-
address, bip32, ecdsa, Address, Amount, BlockHash, Psbt, ScriptBuf, SignedAmount, Transaction,
12-
Txid, WitnessProgram, WitnessVersion,
11+
address, bip32, sign_message, Address, Amount, BlockHash, Psbt, ScriptBuf, SignedAmount,
12+
Transaction, Txid, WitnessProgram, WitnessVersion,
1313
};
1414

1515
// TODO: Use explicit imports?
@@ -695,8 +695,8 @@ impl SendToAddress {
695695

696696
impl SignMessage {
697697
/// Converts version specific type to a version nonspecific, more strongly typed type.
698-
pub fn into_model(self) -> Result<model::SignMessage, ecdsa::Error> {
699-
let sig = self.0.parse::<ecdsa::Signature>()?;
698+
pub fn into_model(self) -> Result<model::SignMessage, sign_message::MessageSignatureError> {
699+
let sig = self.0.parse::<sign_message::MessageSignature>()?;
700700
Ok(model::SignMessage(sig))
701701
}
702702
}

types/src/v18/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@
202202
//! | sethdseed | returns nothing | |
203203
//! | setlabel | returns nothing | |
204204
//! | settxfee | returns boolean | |
205-
//! | signmessage | version + model | UNTESTED |
205+
//! | signmessage | version + model | |
206206
//! | signrawtransactionwithwallet | version + model | |
207207
//! | unloadwallet | returns nothing | |
208208
//! | walletcreatefundedpsbt | version + model | UNTESTED |

types/src/v19/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@
204204
//! | setlabel | returns nothing | |
205205
//! | settxfee | returns boolean | |
206206
//! | setwalletflag | version | TODO |
207-
//! | signmessage | version + model | UNTESTED |
207+
//! | signmessage | version + model | |
208208
//! | signrawtransactionwithwallet | version + model | |
209209
//! | unloadwallet | returns nothing | |
210210
//! | walletcreatefundedpsbt | version + model | UNTESTED |

types/src/v20/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@
205205
//! | setlabel | returns nothing | |
206206
//! | settxfee | returns boolean | |
207207
//! | setwalletflag | version | TODO |
208-
//! | signmessage | version + model | UNTESTED |
208+
//! | signmessage | version + model | |
209209
//! | signrawtransactionwithwallet | version + model | |
210210
//! | unloadwallet | returns nothing | |
211211
//! | walletcreatefundedpsbt | version + model | UNTESTED |

types/src/v21/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@
210210
//! | setlabel | returns nothing | |
211211
//! | settxfee | returns boolean | |
212212
//! | setwalletflag | version | TODO |
213-
//! | signmessage | version + model | UNTESTED |
213+
//! | signmessage | version + model | |
214214
//! | signrawtransactionwithwallet | version + model | |
215215
//! | unloadwallet | returns nothing | |
216216
//! | upgradewallet | version | TODO |

types/src/v22/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@
220220
//! | setlabel | returns nothing | |
221221
//! | settxfee | returns boolean | |
222222
//! | setwalletflag | version | TODO |
223-
//! | signmessage | version + model | UNTESTED |
223+
//! | signmessage | version + model | |
224224
//! | signrawtransactionwithwallet | version + model | |
225225
//! | unloadwallet | returns nothing | |
226226
//! | upgradewallet | version | TODO |

0 commit comments

Comments
 (0)