Skip to content

Commit 2b4582b

Browse files
authored
Merge pull request #1961 from mintlayer/trezor_fw_sign_message_fix_tests_update
Update `trezor_signer::tests::test_sign_message` after the corresponding firmware fix
2 parents 3074e1f + 38c9ba3 commit 2b4582b

File tree

5 files changed

+56
-11
lines changed

5 files changed

+56
-11
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,8 @@ zeroize = "1.5"
251251

252252
[workspace.dependencies.trezor-client]
253253
git = "https://github.com/mintlayer/mintlayer-trezor-firmware"
254-
# The commit "Mintlayer firmware versioning"
255-
rev = "397155e26660993a044e78447dad893852fa44d1"
254+
# The commit "Merge pull request #16 from mintlayer/sign_message_convert_to_hex_if_non_ascii"
255+
rev = "8154c7a3bc65d27d64186f1b733750e029f8cad0"
256256
features = ["bitcoin", "mintlayer"]
257257

258258
[workspace.metadata.dist.dependencies.apt]

wallet/src/signer/software_signer/tests.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use crate::signer::tests::{
2424
},
2525
generic_tests::{
2626
test_sign_message_generic, test_sign_transaction_generic,
27-
test_sign_transaction_intent_generic,
27+
test_sign_transaction_intent_generic, MessageToSign,
2828
},
2929
make_deterministic_software_signer, make_software_signer, no_another_signer,
3030
};
@@ -35,7 +35,12 @@ use crate::signer::tests::{
3535
fn test_sign_message(#[case] seed: Seed) {
3636
let mut rng = make_seedable_rng(seed);
3737

38-
test_sign_message_generic(&mut rng, make_software_signer, no_another_signer());
38+
test_sign_message_generic(
39+
&mut rng,
40+
MessageToSign::Random,
41+
make_software_signer,
42+
no_another_signer(),
43+
);
3944
}
4045

4146
#[rstest]

wallet/src/signer/tests/generic_tests.rs

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ use crypto::{
5151
use logging::log;
5252
use randomness::{CryptoRng, Rng};
5353
use serialization::extras::non_empty_vec::DataOrNoVec;
54-
use test_utils::{random::gen_random_bytes, random_ascii_alphanumeric_string};
54+
use test_utils::{
55+
random::{gen_random_bytes, make_seedable_rng},
56+
random_ascii_alphanumeric_string,
57+
};
5558
use tx_verifier::error::{InputCheckErrorPayload, ScriptError};
5659
use wallet_storage::{DefaultBackend, Store, TransactionRwUnlocked, Transactional};
5760
use wallet_types::{
@@ -69,8 +72,15 @@ use crate::{
6972
Account, SendRequest,
7073
};
7174

75+
#[derive(Debug)]
76+
pub enum MessageToSign {
77+
Random,
78+
Predefined(Vec<u8>),
79+
}
80+
7281
pub fn test_sign_message_generic<MkS1, MkS2, S1, S2>(
7382
rng: &mut (impl Rng + CryptoRng),
83+
message_to_sign: MessageToSign,
7484
make_signer: MkS1,
7585
make_another_signer: Option<MkS2>,
7686
) where
@@ -85,6 +95,21 @@ pub fn test_sign_message_generic<MkS1, MkS2, S1, S2>(
8595

8696
let mut account = account_from_mnemonic(&chain_config, &mut db_tx, DEFAULT_ACCOUNT_INDEX);
8797

98+
let mut make_message = {
99+
// Note: can't pass rng to the closure without knowing its exact type, so we create a new one.
100+
let mut rng = make_seedable_rng(rng.gen());
101+
move || {
102+
let msg = match &message_to_sign {
103+
MessageToSign::Random => {
104+
vec![rng.r#gen::<u8>(), rng.r#gen::<u8>(), rng.r#gen::<u8>()]
105+
}
106+
MessageToSign::Predefined(msg) => msg.clone(),
107+
};
108+
log::debug!("Using message: {msg:?}");
109+
msg
110+
}
111+
};
112+
88113
let pkh_destination = account
89114
.get_new_address(&mut db_tx, KeyPurpose::ReceiveFunds)
90115
.unwrap()
@@ -106,7 +131,7 @@ pub fn test_sign_message_generic<MkS1, MkS2, S1, S2>(
106131
let standalone_pk_destination = Destination::PublicKey(standalone_pk);
107132

108133
for destination in [pkh_destination, pk_destination, standalone_pk_destination] {
109-
let message = vec![rng.gen::<u8>(), rng.gen::<u8>(), rng.gen::<u8>()];
134+
let message = make_message();
110135
let message_challenge = produce_message_challenge(&message);
111136

112137
let mut signer = make_signer(chain_config.clone(), account.account_index());
@@ -136,7 +161,7 @@ pub fn test_sign_message_generic<MkS1, MkS2, S1, S2>(
136161

137162
let mut signer = make_signer(chain_config.clone(), account.account_index());
138163

139-
let message = vec![rng.gen::<u8>(), rng.gen::<u8>(), rng.gen::<u8>()];
164+
let message = make_message();
140165
let err = signer
141166
.sign_challenge(
142167
&message,

wallet/src/signer/trezor_signer/tests.rs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use crate::signer::{
3030
},
3131
generic_tests::{
3232
test_sign_message_generic, test_sign_transaction_generic,
33-
test_sign_transaction_intent_generic,
33+
test_sign_transaction_intent_generic, MessageToSign,
3434
},
3535
make_deterministic_software_signer, no_another_signer,
3636
},
@@ -75,14 +75,28 @@ pub fn make_deterministic_trezor_signer(
7575
#[trace]
7676
#[serial]
7777
#[case(Seed::from_entropy())]
78-
fn test_sign_message(#[case] seed: Seed) {
78+
fn test_sign_message(
79+
#[case] seed: Seed,
80+
#[values(
81+
MessageToSign::Random,
82+
// Special case: an "overlong" utf-8 string (basically, the letter 'K' encoded with 2 bytes
83+
// instead of 1). The firmware used to have troubles with this.
84+
MessageToSign::Predefined(vec![193, 139])
85+
)]
86+
message_to_sign: MessageToSign,
87+
) {
7988
log::debug!("test_sign_message, seed = {seed:?}");
8089

8190
let _join_guard = maybe_spawn_auto_confirmer();
8291

8392
let mut rng = make_seedable_rng(seed);
8493

85-
test_sign_message_generic(&mut rng, make_trezor_signer, no_another_signer());
94+
test_sign_message_generic(
95+
&mut rng,
96+
message_to_sign,
97+
make_trezor_signer,
98+
no_another_signer(),
99+
);
86100
}
87101

88102
#[rstest]
@@ -175,6 +189,7 @@ fn test_sign_message_sig_consistency(#[case] seed: Seed) {
175189

176190
test_sign_message_generic(
177191
&mut rng,
192+
MessageToSign::Random,
178193
make_deterministic_trezor_signer,
179194
Some(make_deterministic_software_signer),
180195
);

0 commit comments

Comments
 (0)