Skip to content

Commit 441b42a

Browse files
committed
test: assert restored keys are the same as original ones
1 parent 00e45d4 commit 441b42a

1 file changed

Lines changed: 42 additions & 1 deletion

File tree

src/swap/btcxmr.rs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,6 @@ impl Encodable for KeyManager {
205205
let mut len = Into::<u32>::into(self.swap_index).consensus_encode(writer)?;
206206
len += self.bitcoin_account_key.consensus_encode(writer)?;
207207
len += self.monero_account_key.consensus_encode(writer)?;
208-
// TODO: don't add derivations, but test that key manager encoding is correct modulo cached derivations
209208
Ok(len)
210209
}
211210
}
@@ -564,3 +563,45 @@ fn test_keymanager_consensus_encoding() {
564563
key_manager.consensus_encode(&mut encoder).unwrap();
565564
KeyManager::consensus_decode(&mut std::io::Cursor::new(encoder)).unwrap();
566565
}
566+
567+
#[test]
568+
fn test_keymanager_restore_index() {
569+
let key_manager = KeyManager::new([0; 32], 42).unwrap();
570+
let mut encoder = Vec::new();
571+
key_manager.consensus_encode(&mut encoder).unwrap();
572+
let restore = KeyManager::consensus_decode(&mut std::io::Cursor::new(encoder)).unwrap();
573+
assert_eq!(
574+
restore.swap_index,
575+
ChildNumber::from_hardened_idx(42).unwrap()
576+
);
577+
}
578+
579+
#[test]
580+
fn test_keymanager_restore_bitcoin_key() {
581+
let mut key_manager = KeyManager::new([0; 32], 1).unwrap();
582+
let orig_key = key_manager
583+
.get_or_derive_bitcoin_key(ArbitratingKeyId::Lock)
584+
.unwrap();
585+
let mut encoder = Vec::new();
586+
key_manager.consensus_encode(&mut encoder).unwrap();
587+
let mut restore = KeyManager::consensus_decode(&mut std::io::Cursor::new(encoder)).unwrap();
588+
let restored_key = restore
589+
.get_or_derive_bitcoin_key(ArbitratingKeyId::Lock)
590+
.unwrap();
591+
assert_eq!(orig_key, restored_key);
592+
}
593+
594+
#[test]
595+
fn test_keymanager_restore_monero_key() {
596+
let mut key_manager = KeyManager::new([0; 32], 1).unwrap();
597+
let orig_key = key_manager
598+
.get_or_derive_monero_key(AccordantKeyId::Spend)
599+
.unwrap();
600+
let mut encoder = Vec::new();
601+
key_manager.consensus_encode(&mut encoder).unwrap();
602+
let mut restore = KeyManager::consensus_decode(&mut std::io::Cursor::new(encoder)).unwrap();
603+
let restored_key = restore
604+
.get_or_derive_monero_key(AccordantKeyId::Spend)
605+
.unwrap();
606+
assert_eq!(orig_key, restored_key);
607+
}

0 commit comments

Comments
 (0)