Skip to content

Commit e8413aa

Browse files
committed
feat: add test for shielded from mnemonic seed
1 parent d40a535 commit e8413aa

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

packages/crypto/lib/src/crypto/zip32.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ impl ShieldedHDWallet {
8686
#[cfg(test)]
8787
mod tests {
8888
use super::*;
89+
use crate::crypto::bip39;
8990
use masp_primitives::sapling::PaymentAddress;
9091
use wasm_bindgen_test::*;
9192

@@ -134,4 +135,36 @@ mod tests {
134135
assert_eq!(xsk.expsk.to_bytes().len(), KEY_SIZE);
135136
assert_eq!(xfvk.fvk.to_bytes().len(), KEY_SIZE);
136137
}
138+
139+
#[wasm_bindgen_test]
140+
fn can_restore_keys_from_mnemonic() {
141+
let phrase = "great sphere inmate december menu warrior adjust glass flat heavy act mail";
142+
let mnemonic = bip39::Mnemonic::from_phrase(phrase.into()).unwrap();
143+
let seed = mnemonic
144+
.to_seed(None)
145+
.expect("Should return seed from mnemonic phrase");
146+
147+
let shielded_wallet = ShieldedHDWallet::new(JsValue::from(seed))
148+
.expect("Instantiating ShieldedHDWallet should not fail");
149+
150+
let shielded_account = shielded_wallet
151+
.derive(vec![32, 877, 0], None)
152+
.expect("Deriving from ExtendedKeys should not fail");
153+
154+
let payment_address = PaymentAddress::try_from_slice(&shielded_account.payment_address())
155+
.expect("should instantiate from serialized bytes");
156+
let xfvk = ExtendedFullViewingKey::try_from_slice(&shielded_account.xfvk())
157+
.expect("should instantiate from serialized bytes");
158+
159+
assert_eq!(payment_address.to_string(), "0a918bd974d1abddcc2e15eddec2557abae385ed59fb3089ed4aff418819a63bf4a7890591ff107a2b7569");
160+
assert_eq!(
161+
xfvk.fvk.to_string(),
162+
format!(
163+
"{}{}{}",
164+
"9f89bdaf176f8528f43303ae793ce128af3436902a39ebbe46509f6fef11eb",
165+
"585270060da4c12f1a52b63c7c6906dddcabb0ecd00735e11b0d7cbee277342dd89a10e9c7",
166+
"e69bca34b50a3c8525bbee96347a7cadfd6c32d3af5b92ad1ecf07da"
167+
)
168+
);
169+
}
137170
}

0 commit comments

Comments
 (0)