v0.2.6-pre.015
This commit is contained in:
55
crates/ksp-wallet-lib/unit_tests/transcript_v2.rs
Normal file
55
crates/ksp-wallet-lib/unit_tests/transcript_v2.rs
Normal file
@@ -0,0 +1,55 @@
|
||||
// file: crates/ksp-wallet-lib/unit_tests/transcript_v2.rs
|
||||
// version: 1
|
||||
|
||||
const FIXTURE: &[u8] = include_bytes!("../tests/fixtures/kspwallet_v2_wire_only.bin");
|
||||
|
||||
#[test]
|
||||
fn v2_state_transcript_is_domain_separated_and_deterministic() -> ksp_core_lib::Result<()> {
|
||||
let envelope = match crate::KspWalletEnvelopeV2::parse_binary(FIXTURE) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
let first = envelope.state_transcript();
|
||||
let second = envelope.state_transcript();
|
||||
assert_eq!(first, second);
|
||||
assert!(first.starts_with(crate::KSPWALLET_V2_STATE_TRANSCRIPT_DOMAIN));
|
||||
assert!(!first.starts_with(crate::KSPWALLET_V1_STATE_TRANSCRIPT_DOMAIN));
|
||||
return std::result::Result::Ok(());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn v2_owner_and_view_slot_aad_are_role_domain_separated() -> ksp_core_lib::Result<()> {
|
||||
let envelope = match crate::KspWalletEnvelopeV2::parse_binary(FIXTURE) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
let owner = envelope.owner_slot_aad();
|
||||
let view = match envelope.view_slot_aad() {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => {
|
||||
return std::result::Result::Err(ksp_core_lib::Error::new(crate::ERROR_CODE_FORMAT_INVALID, "fixture VIEW slot is missing"));
|
||||
},
|
||||
};
|
||||
assert!(owner.starts_with(crate::KSPWALLET_V2_OWNER_SLOT_AAD_DOMAIN));
|
||||
assert!(view.starts_with(crate::KSPWALLET_V2_VIEW_SLOT_AAD_DOMAIN));
|
||||
assert_ne!(owner, view);
|
||||
return std::result::Result::Ok(());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn v2_compartment_aad_is_domain_separated_by_kind() -> ksp_core_lib::Result<()> {
|
||||
let envelope = match crate::KspWalletEnvelopeV2::parse_binary(FIXTURE) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
let owner_control = envelope.compartment_aad(crate::WalletCompartmentKindV2::OwnerControl);
|
||||
let metadata = envelope.compartment_aad(crate::WalletCompartmentKindV2::Metadata);
|
||||
let secret = envelope.compartment_aad(crate::WalletCompartmentKindV2::Secret);
|
||||
assert!(owner_control.starts_with(crate::KSPWALLET_V2_OWNER_CONTROL_AAD_DOMAIN));
|
||||
assert!(metadata.starts_with(crate::KSPWALLET_V2_METADATA_AAD_DOMAIN));
|
||||
assert!(secret.starts_with(crate::KSPWALLET_V2_SECRET_AAD_DOMAIN));
|
||||
assert_ne!(owner_control, metadata);
|
||||
assert_ne!(metadata, secret);
|
||||
assert_ne!(owner_control, secret);
|
||||
return std::result::Result::Ok(());
|
||||
}
|
||||
Reference in New Issue
Block a user