diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9855149a..6d8ccd75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: run: echo "MASP_PARAMS=$(cargo run --release --example get-params-path --features directories)" >> $GITHUB_ENV - name: Cache MASP parameters id: cache-params - uses: actions/cache@v3.3.1 + uses: actions/cache@v3.3.2 with: path: ${{ env.MASP_PARAMS }} key: ${{ runner.os }}-params @@ -127,4 +127,4 @@ jobs: - name: Install cargo-audit run: cargo install cargo-audit - name: Cargo Audit - run: cargo audit \ No newline at end of file + run: cargo audit diff --git a/masp_note_encryption/Cargo.toml b/masp_note_encryption/Cargo.toml index afd7920d..1b4c075e 100644 --- a/masp_note_encryption/Cargo.toml +++ b/masp_note_encryption/Cargo.toml @@ -5,7 +5,7 @@ version = "0.2.0" authors = [ "Jack Grigg ", "Kris Nuttycombe ", - "joe@heliax.dev" + "joe@heliax.dev", ] homepage = "https://github.com/anoma/masp" repository = "https://github.com/anoma/masp" @@ -24,7 +24,7 @@ chacha20 = { version = "0.9", default-features = false } chacha20poly1305 = { version = "0.10", default-features = false } rand_core = { version = "0.6", default-features = false } subtle = { version = "2.3", default-features = false } -borsh = {version = "0.9", features = ["const-generics"]} +borsh = {version = "1.0.0-alpha.4", features = ["schema", "derive"]} [features] default = ["alloc"] diff --git a/masp_primitives/Cargo.toml b/masp_primitives/Cargo.toml index 9eb2bf48..babd4e09 100644 --- a/masp_primitives/Cargo.toml +++ b/masp_primitives/Cargo.toml @@ -6,7 +6,7 @@ authors = [ "Jack Grigg ", "Kris Nuttycombe ", "joe ", - "Murisi Tarusenga ", + "Murisi Tarusenga ", "Heliax AG ", ] homepage = "https://github.com/anoma/masp" @@ -14,14 +14,14 @@ repository = "https://github.com/anoma/masp" readme = "README.md" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.65" +rust-version = "1.70" categories = ["cryptography::cryptocurrencies"] [package.metadata.docs.rs] all-features = true [dependencies] -zcash_encoding = { version = "0.0", git = "https://github.com/zcash/librustzcash", rev = "43c18d0" } +zcash_encoding = { version = "0.2", git = "https://github.com/zcash/librustzcash", rev = "bd7f9d7" } # Dependencies exposed in a public API: # (Breaking upgrades to these require a breaking upgrade to this crate.) @@ -31,7 +31,7 @@ rand_core = "0.6" # - Digests (output types exposed) blake2b_simd = "1" -sha2 = "0.9" +sha2 = "0.10" # - Metrics memuse = "0.2.1" @@ -43,11 +43,11 @@ num-traits = "0.2.14" subtle = "2.2.3" # - Shielded protocols -bls12_381 = "0.7" -ff = "0.12" -group = { version = "0.12.1", features = ["wnaf-memuse"] } +bls12_381 = "0.8" +ff = "0.13" +group = { version = "0.13", features = ["wnaf-memuse"] } incrementalmerkletree = "0.3" -jubjub = "0.9" +jubjub = "0.10" nonempty = "0.7" # - Static constants @@ -57,7 +57,7 @@ lazy_static = "1" proptest = { version = "1.0.0", optional = true } # - ZIP 339 -bip0039 = { version = "0.9", features = ["std", "all-languages"] } +bip0039 = { version = "0.10", features = ["std", "all-languages"] } # Dependencies used internally: # (Breaking upgrades to these are usually backwards-compatible, but check MSRVs.) @@ -70,10 +70,10 @@ bitvec = "1" blake2s_simd = "1" # - ZIP 32 -aes = "0.7" -fpe = "0.5" +aes = "0.8" +fpe = "0.6" -borsh = {version = "0.9", features = ["const-generics"]} +borsh = {version = "1.0.0-alpha.4", features = ["schema", "derive"]} [dependencies.masp_note_encryption] version = "0.2" path = "../masp_note_encryption" diff --git a/masp_primitives/src/asset_type.rs b/masp_primitives/src/asset_type.rs index b36bf46a..0a5981ba 100644 --- a/masp_primitives/src/asset_type.rs +++ b/masp_primitives/src/asset_type.rs @@ -17,7 +17,7 @@ use std::{ #[derive(Debug, BorshSerialize, BorshDeserialize, Clone, Copy, Eq)] pub struct AssetType { identifier: [u8; ASSET_IDENTIFIER_LENGTH], //32 byte asset type preimage - #[borsh_skip] + #[borsh(skip)] nonce: Option, } @@ -148,6 +148,15 @@ impl AssetType { pub fn get_nonce(&self) -> Option { self.nonce } + + /// Deserialize an AssetType object + pub fn read(reader: &mut R) -> std::io::Result { + let mut atype = [0; crate::constants::ASSET_IDENTIFIER_LENGTH]; + reader.read_exact(&mut atype)?; + AssetType::from_identifier(&atype).ok_or_else(|| { + std::io::Error::new(std::io::ErrorKind::InvalidData, "invalid asset type") + }) + } } impl PartialEq for AssetType { @@ -170,7 +179,7 @@ impl Hash for AssetType { impl PartialOrd for AssetType { fn partial_cmp(&self, other: &Self) -> Option { - self.get_identifier().partial_cmp(other.get_identifier()) + Some(self.cmp(other)) } } diff --git a/masp_primitives/src/convert.rs b/masp_primitives/src/convert.rs index effde97c..27e3ba65 100644 --- a/masp_primitives/src/convert.rs +++ b/masp_primitives/src/convert.rs @@ -111,7 +111,7 @@ impl From for AllowedConversion { } impl BorshSerialize for AllowedConversion { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.assets.write(writer)?; writer.write_all(&self.generator.to_bytes())?; Ok(()) @@ -122,10 +122,10 @@ impl BorshDeserialize for AllowedConversion { /// This deserialization is unsafe because it does not do the expensive /// computation of checking whether the asset generator corresponds to the /// deserialized amount. - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - let assets = I128Sum::read(buf)?; + fn deserialize_reader(reader: &mut R) -> io::Result { + let assets = I128Sum::read(reader)?; let gen_bytes = - <::Repr as BorshDeserialize>::deserialize(buf)?; + <::Repr as BorshDeserialize>::deserialize_reader(reader)?; let generator = Option::from(jubjub::ExtendedPoint::from_bytes(&gen_bytes)) .ok_or_else(|| io::Error::from(io::ErrorKind::InvalidData))?; let allowed_conversion: AllowedConversion = assets.clone().into(); diff --git a/masp_primitives/src/lib.rs b/masp_primitives/src/lib.rs index d1b2d6d2..308e9323 100644 --- a/masp_primitives/src/lib.rs +++ b/masp_primitives/src/lib.rs @@ -13,7 +13,7 @@ // Allow manual RangeIncludes for now #![allow(clippy::manual_range_contains)] // TODO -#![allow(clippy::derive_hash_xor_eq)] +#![allow(clippy::derived_hash_with_manual_eq)] pub mod asset_type; pub mod consensus; diff --git a/masp_primitives/src/memo.rs b/masp_primitives/src/memo.rs index aeaf664d..4c53a478 100644 --- a/masp_primitives/src/memo.rs +++ b/masp_primitives/src/memo.rs @@ -146,9 +146,10 @@ impl Deref for TextMemo { } /// An unencrypted memo received alongside a shielded note in a Zcash transaction. -#[derive(Clone)] +#[derive(Clone, Default)] pub enum Memo { /// An empty memo field. + #[default] Empty, /// A memo field containing a UTF-8 string. Text(TextMemo), @@ -173,12 +174,6 @@ impl fmt::Debug for Memo { } } -impl Default for Memo { - fn default() -> Self { - Memo::Empty - } -} - impl PartialEq for Memo { fn eq(&self, rhs: &Memo) -> bool { match (self, rhs) { diff --git a/masp_primitives/src/merkle_tree.rs b/masp_primitives/src/merkle_tree.rs index 26ae6635..fbdfd247 100644 --- a/masp_primitives/src/merkle_tree.rs +++ b/masp_primitives/src/merkle_tree.rs @@ -255,14 +255,14 @@ impl FrozenCommitmentTree { } impl BorshSerialize for FrozenCommitmentTree { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { (&self.0, self.1).serialize(writer) } } impl BorshDeserialize for FrozenCommitmentTree { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - let tup: (Vec, usize) = BorshDeserialize::deserialize(buf)?; + fn deserialize_reader(reader: &mut R) -> io::Result { + let tup: (Vec, usize) = BorshDeserialize::deserialize_reader(reader)?; Ok(Self(tup.0, tup.1)) } } @@ -303,7 +303,6 @@ impl CommitmentTree { left, right, parents: (1..DEPTH) - .into_iter() .map(|i| { if upos & (1 << i) == 0 { None @@ -471,14 +470,14 @@ impl CommitmentTree { } impl BorshSerialize for CommitmentTree { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.write(writer) } } impl BorshDeserialize for CommitmentTree { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Self::read(buf) + fn deserialize_reader(reader: &mut R) -> io::Result { + Self::read(reader) } } @@ -699,14 +698,14 @@ impl IncrementalWitness { } impl BorshSerialize for IncrementalWitness { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.write(writer) } } impl BorshDeserialize for IncrementalWitness { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Self::read(buf) + fn deserialize_reader(reader: &mut R) -> io::Result { + Self::read(reader) } } @@ -762,17 +761,18 @@ impl MerklePath { } impl BorshDeserialize for MerklePath { - fn deserialize(witness: &mut &[u8]) -> Result { + fn deserialize_reader(witness: &mut R) -> Result { // Skip the first byte, which should be "depth" to signify the length of // the following vector of Pedersen hashes. - let depth = witness[0] as usize; - *witness = &witness[1..]; + let depth = witness.read_u8()? as usize; // Begin to construct the authentication path // Do not use any data in the witness after the expected depth - let iter = witness[..33 * depth + 8].chunks_exact(33); - // Update the witness to its final position - *witness = &witness[33 * depth + 8..]; + let mut iter = vec![]; + let _ = witness + .take((33 * depth + 8usize) as u64) + .read_to_end(&mut iter)?; + let iter = iter.chunks_exact(33); // Read the position from the witness let position = iter.remainder().read_u64::()?; diff --git a/masp_primitives/src/sapling.rs b/masp_primitives/src/sapling.rs index 05b74f97..52d78191 100644 --- a/masp_primitives/src/sapling.rs +++ b/masp_primitives/src/sapling.rs @@ -301,20 +301,20 @@ impl ViewingKey { } impl BorshSerialize for ViewingKey { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.write(writer) } } impl BorshDeserialize for ViewingKey { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Self::read(buf) + fn deserialize_reader(reader: &mut R) -> io::Result { + Self::read(reader) } } impl PartialOrd for ViewingKey { fn partial_cmp(&self, other: &Self) -> Option { - self.to_bytes().partial_cmp(&other.to_bytes()) + Some(self.cmp(other)) } } @@ -462,7 +462,7 @@ impl FromStr for PaymentAddress { impl PartialOrd for PaymentAddress { fn partial_cmp(&self, other: &Self) -> Option { - self.to_bytes().partial_cmp(&other.to_bytes()) + Some(self.cmp(other)) } } impl Ord for PaymentAddress { @@ -477,18 +477,16 @@ impl Hash for PaymentAddress { } impl BorshSerialize for PaymentAddress { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { writer.write(self.to_bytes().as_ref()).and(Ok(())) } } impl BorshDeserialize for PaymentAddress { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - let data = buf - .get(..43) - .ok_or_else(|| io::Error::from(io::ErrorKind::UnexpectedEof))?; - let res = Self::from_bytes(data.try_into().unwrap()); + fn deserialize_reader(reader: &mut R) -> io::Result { + let mut data = [0u8; 43]; + reader.read_exact(&mut data)?; + let res = Self::from_bytes(&data); let pa = res.ok_or_else(|| io::Error::from(io::ErrorKind::InvalidData))?; - *buf = &buf[43..]; Ok(pa) } } @@ -538,7 +536,7 @@ impl TryFrom for NoteValue { type Error = (); fn try_from(value: u64) -> Result { - if value <= MAX_MONEY as u64 { + if value <= MAX_MONEY { Ok(NoteValue(value)) } else { Err(()) @@ -684,7 +682,7 @@ impl Note { } impl BorshSerialize for Note { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { // Write asset type self.asset_type.serialize(writer)?; // Write note value @@ -712,23 +710,23 @@ impl BorshSerialize for Note { } impl BorshDeserialize for Note { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { + fn deserialize_reader(reader: &mut R) -> io::Result { // Read asset type - let asset_type = AssetType::deserialize(buf)?; + let asset_type = AssetType::deserialize_reader(reader)?; // Read note value - let value = buf.read_u64::()?; + let value = reader.read_u64::()?; // Read diversified base - let g_d_bytes = <[u8; 32]>::deserialize(buf)?; + let g_d_bytes = <[u8; 32]>::deserialize_reader(reader)?; let g_d = Option::from(jubjub::SubgroupPoint::from_bytes(&g_d_bytes)) .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "g_d not in field"))?; // Read diversified transmission key - let pk_d_bytes = <[u8; 32]>::deserialize(buf)?; + let pk_d_bytes = <[u8; 32]>::deserialize_reader(reader)?; let pk_d = Option::from(jubjub::SubgroupPoint::from_bytes(&pk_d_bytes)) .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "pk_d not in field"))?; // Read note plaintext lead byte - let rseed_type = buf.read_u8()?; + let rseed_type = reader.read_u8()?; // Read rseed - let rseed_bytes = <[u8; 32]>::deserialize(buf)?; + let rseed_bytes = <[u8; 32]>::deserialize_reader(reader)?; let rseed = if rseed_type == 0x01 { let data = Option::from(jubjub::Fr::from_bytes(&rseed_bytes)) .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "rseed not in field"))?; @@ -759,7 +757,7 @@ pub mod testing { }; prop_compose! { - pub fn arb_note_value()(value in 0u64..=MAX_MONEY as u64) -> NoteValue { + pub fn arb_note_value()(value in 0u64..=MAX_MONEY) -> NoteValue { NoteValue::try_from(value).unwrap() } } @@ -767,7 +765,7 @@ pub mod testing { prop_compose! { /// The pub fn arb_positive_note_value(bound: u64)( - value in 1u64..=(min(bound, MAX_MONEY as u64)) + value in 1u64..=(min(bound, MAX_MONEY)) ) -> NoteValue { NoteValue::try_from(value).unwrap() } @@ -820,15 +818,15 @@ mod tests { sapling::Note, transaction::components::amount::MAX_MONEY, }; - use borsh::{BorshDeserialize, BorshSerialize}; + use borsh::BorshDeserialize; use proptest::prelude::*; proptest! { #![proptest_config(ProptestConfig::with_cases(10))] #[test] - fn note_serialization(note in arb_positive_note_value(MAX_MONEY as u64).prop_flat_map(arb_note)) { + fn note_serialization(note in arb_positive_note_value(MAX_MONEY).prop_flat_map(arb_note)) { // BorshSerialize - let borsh = note.try_to_vec().unwrap(); + let borsh = borsh::to_vec(¬e).unwrap(); // BorshDeserialize let de_note: Note = BorshDeserialize::deserialize(&mut borsh.as_ref()).unwrap(); prop_assert_eq!(note, de_note); diff --git a/masp_primitives/src/sapling/note_encryption.rs b/masp_primitives/src/sapling/note_encryption.rs index fa3f5fe8..efad1941 100644 --- a/masp_primitives/src/sapling/note_encryption.rs +++ b/masp_primitives/src/sapling/note_encryption.rs @@ -368,7 +368,7 @@ impl BatchDomain for SaplingDomain

{ shared_secrets .into_iter() .map(|s| s.and_then(|_| secrets_affine.next())) - .zip(ephemeral_keys.into_iter()) + .zip(ephemeral_keys) .map(|(secret, ephemeral_key)| { secret.map(|dhsecret| { Blake2bParams::new() @@ -389,7 +389,7 @@ impl BatchDomain for SaplingDomain

{ let ephemeral_keys: Vec<_> = ephemeral_keys.collect(); let epks = jubjub::AffinePoint::batch_from_bytes(ephemeral_keys.iter().map(|b| b.0)); epks.into_iter() - .zip(ephemeral_keys.into_iter()) + .zip(ephemeral_keys) .map(|(epk, ephemeral_key)| { ( epk.map(jubjub::ExtendedPoint::from) diff --git a/masp_primitives/src/sapling/pedersen_hash.rs b/masp_primitives/src/sapling/pedersen_hash.rs index 31e8de70..89640a90 100644 --- a/masp_primitives/src/sapling/pedersen_hash.rs +++ b/masp_primitives/src/sapling/pedersen_hash.rs @@ -32,10 +32,7 @@ pub fn pedersen_hash(personalization: Personalization, bits: I) -> jubjub::Su where I: IntoIterator, { - let mut bits = personalization - .get_bits() - .into_iter() - .chain(bits.into_iter()); + let mut bits = personalization.get_bits().into_iter().chain(bits); let mut result = jubjub::SubgroupPoint::identity(); let mut generators = PEDERSEN_HASH_EXP_TABLE.iter(); diff --git a/masp_primitives/src/sapling/redjubjub.rs b/masp_primitives/src/sapling/redjubjub.rs index 72c68b78..86659a44 100644 --- a/masp_primitives/src/sapling/redjubjub.rs +++ b/masp_primitives/src/sapling/redjubjub.rs @@ -58,25 +58,25 @@ impl Hash for PublicKey { } impl BorshDeserialize for PublicKey { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Ok(Self(read_point(buf, "public key")?)) + fn deserialize_reader(reader: &mut R) -> io::Result { + Ok(Self(read_point(reader, "public key")?)) } } impl BorshSerialize for PublicKey { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { BorshSerialize::serialize(&self.0.to_bytes(), writer) } } impl BorshDeserialize for Signature { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Self::read(buf) + fn deserialize_reader(reader: &mut R) -> io::Result { + Self::read(reader) } } impl BorshSerialize for Signature { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.write(writer) } } @@ -215,9 +215,9 @@ pub struct BatchEntry<'a> { // TODO: #82: This is a naive implementation currently, // and doesn't use multiexp. -pub fn batch_verify<'a, R: RngCore>( +pub fn batch_verify( mut rng: &mut R, - batch: &[BatchEntry<'a>], + batch: &[BatchEntry<'_>], p_g: SubgroupPoint, ) -> bool { let mut acc = ExtendedPoint::identity(); diff --git a/masp_primitives/src/test_vectors/note_encryption_new.rs b/masp_primitives/src/test_vectors/note_encryption_new.rs deleted file mode 100644 index e2783c94..00000000 --- a/masp_primitives/src/test_vectors/note_encryption_new.rs +++ /dev/null @@ -1,564 +0,0 @@ - struct TestVector { - ovk: [u8; 32], - ivk: [u8; 32], - default_d: [u8; 11], - default_pk_d: [u8; 32], - v: u64, - rcm: [u8; 32], - memo: [u8; 512], - cv: [u8; 32], - cmu: [u8; 32], - esk: [u8; 32], - epk: [u8; 32], - shared_secret: [u8; 32], - k_enc: [u8; 32], - p_enc: [u8; 564], - c_enc: [u8; 580], - ock: [u8; 32], - op: [u8; 64], - c_out: [u8; 80], - }; - - // From https://github.com/zcash-hackworks/zcash-test-vectors/blob/master/sapling_note_encryption.py - let test_vectors = vec![ - TestVector { - ovk: [ - 0x52, 0xac, 0x15, 0x88, 0x17, 0x5f, 0x5a, 0x5e, 0x97, 0x94, 0xe6, 0xdd, 0xb8, 0x53, 0x63, 0x61, 0x63, 0xc1, 0x3f, 0x91, 0x5d, 0x76, 0x08, 0x9d, 0x20, 0xde, 0x9f, 0x32, 0x05, 0xf0, 0x18, 0x5c - ], - ivk: [ - 0xbc, 0xc2, 0x5a, 0x9b, 0xf1, 0x42, 0xff, 0x98, 0x79, 0x67, 0x96, 0xea, 0xa1, 0xbc, 0xd5, 0xff, 0xb7, 0x28, 0xb3, 0x65, 0x0f, 0xf0, 0x49, 0x4a, 0x17, 0x02, 0x7d, 0xee, 0x93, 0x06, 0x6f, 0x02 - ], - default_d: [ - 0x84, 0x4f, 0x9a, 0x4b, 0x31, 0x8b, 0x71, 0x39, 0xab, 0x60, 0x56 - ], - default_pk_d: [ - 0x47, 0xd2, 0x3d, 0x02, 0xa8, 0x0a, 0x28, 0xaf, 0xc0, 0xd2, 0xc5, 0xfc, 0x57, 0xbd, 0x30, 0x1b, 0xb3, 0x99, 0xf8, 0x26, 0xb2, 0xca, 0xba, 0x6b, 0x62, 0x88, 0x36, 0x77, 0x23, 0x29, 0x4a, 0x64 - ], - v: 100000000, - rcm: [ - 0x39, 0x17, 0x6d, 0xac, 0x39, 0xac, 0xe4, 0x98, 0x0e, 0xcc, 0x8d, 0x77, 0x8e, 0x89, 0x86, 0x02, 0x55, 0xec, 0x36, 0x15, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0x9e, 0x1c, 0xf5, 0xc3, 0x2e, 0xdc, 0xd3, 0x30, 0x87, 0x11, 0x60, 0x06, 0x35, 0xad, 0x95, 0xe1, 0x35, 0x46, 0xfb, 0xd9, 0xe0, 0x40, 0x70, 0x51, 0x79, 0x7d, 0x1f, 0x79, 0xcb, 0xcc, 0x4a, 0x3e - ], - cmu: [ - 0x3c, 0x7d, 0x5a, 0xeb, 0xcf, 0x4d, 0xa7, 0x9c, 0xf9, 0x05, 0xa1, 0xd9, 0x8a, 0xa0, 0x0b, 0xcf, 0x18, 0xee, 0x2a, 0x0a, 0xf2, 0xf8, 0x4a, 0x1a, 0x0f, 0x61, 0x20, 0x54, 0x7e, 0xd5, 0x95, 0x1f - ], - esk: [ - 0x81, 0xc7, 0xb2, 0x17, 0x1f, 0xf4, 0x41, 0x52, 0x50, 0xca, 0xc0, 0x1f, 0x59, 0x82, 0xfd, 0x8f, 0x49, 0x61, 0x9d, 0x61, 0xad, 0x78, 0xf6, 0x83, 0x0b, 0x3c, 0x60, 0x61, 0x45, 0x96, 0x2a, 0x0e - ], - epk: [ - 0x3e, 0x83, 0x55, 0x13, 0xb6, 0x77, 0xdb, 0x35, 0x95, 0x39, 0x67, 0xb0, 0x48, 0x1e, 0xe6, 0xd7, 0x0d, 0x64, 0x7e, 0xb0, 0x00, 0x82, 0x0f, 0x9d, 0x1e, 0x52, 0x0c, 0x1c, 0xde, 0x52, 0x42, 0xac - ], - shared_secret: [ - 0x0b, 0xe0, 0x22, 0x02, 0x17, 0x98, 0x36, 0x6c, 0xcd, 0x2d, 0x96, 0xf5, 0xe4, 0xb3, 0x9b, 0xc9, 0x1a, 0x59, 0x88, 0x48, 0xab, 0x95, 0x54, 0x81, 0xf8, 0xa8, 0x72, 0x10, 0x40, 0x0c, 0xef, 0x43 - ], - k_enc: [ - 0x2c, 0xd7, 0x9c, 0x0f, 0x1d, 0x54, 0xb5, 0x94, 0x3c, 0x2a, 0x6a, 0x6d, 0x83, 0x4a, 0x11, 0x98, 0xc9, 0xd6, 0xac, 0x12, 0xf0, 0x19, 0xc8, 0x92, 0x66, 0xd0, 0x3c, 0xc1, 0x83, 0xb9, 0x3a, 0x93 - ], - p_enc: [ - 0x02, 0x84, 0x4f, 0x9a, 0x4b, 0x31, 0x8b, 0x71, 0x39, 0xab, 0x60, 0x56, 0x00, 0xe1, 0xf5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x39, 0x17, 0x6d, 0xac, 0x39, 0xac, 0xe4, 0x98, 0x0e, 0xcc, 0x8d, 0x77, 0x8e, 0x89, 0x86, 0x02, 0x55, 0xec, 0x36, 0x15, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x96, 0x86, 0x5d, 0x04, 0x2a, 0x58, 0xdc, 0x2a, 0x2c, 0x34, 0x3e, 0x9b, 0xf1, 0x30, 0xe8, 0x2b, 0x1d, 0x2e, 0xa2, 0x77, 0x2c, 0x42, 0xda, 0x53, 0x48, 0x09, 0xd0, 0x71, 0x16, 0xa4, 0xeb, 0x28, 0xa7, 0x24, 0x9b, 0xf8, 0x19, 0x2f, 0xc0, 0xf5, 0xd7, 0xad, 0xe8, 0xce, 0xc9, 0x4d, 0x6b, 0xa7, 0xc5, 0x12, 0x73, 0x12, 0xcd, 0xc6, 0xc7, 0x57, 0x5b, 0x96, 0xea, 0xa8, 0x3f, 0x53, 0xd9, 0x3e, 0x32, 0x7b, 0xfe, 0x3f, 0x15, 0xc1, 0x9e, 0x8c, 0x36, 0xe1, 0xc2, 0x89, 0xe4, 0x4a, 0xea, 0x66, 0x89, 0xc3, 0xc2, 0xe3, 0xe9, 0x10, 0x02, 0x1e, 0xc3, 0xb4, 0x96, 0xee, 0x91, 0x37, 0xff, 0x1a, 0x28, 0x19, 0x11, 0xc2, 0x44, 0xa5, 0x81, 0xd3, 0x7a, 0x67, 0x6f, 0xca, 0xf1, 0x85, 0x17, 0x88, 0xe8, 0x43, 0xf2, 0xac, 0xd9, 0x25, 0x0c, 0x10, 0xf1, 0xd9, 0xac, 0xf1, 0x9c, 0x22, 0xbb, 0xba, 0xcc, 0x53, 0x51, 0xc5, 0x9c, 0xca, 0x98, 0x8b, 0x9b, 0xd1, 0xd5, 0x06, 0x76, 0xce, 0x78, 0x8a, 0xa6, 0xf8, 0x43, 0x8d, 0x95, 0x34, 0xcc, 0xf6, 0xa8, 0x34, 0x0b, 0xc1, 0xb2, 0xbe, 0xf8, 0x55, 0xe0, 0xd9, 0x06, 0xa2, 0x17, 0x00, 0x4e, 0x84, 0x18, 0x4f, 0x63, 0x2a, 0x07, 0xf6, 0xcd, 0x0e, 0x68, 0xf2, 0x86, 0xda, 0x3d, 0xdd, 0xdd, 0x35, 0x42, 0x99, 0xb4, 0xb2, 0xbc, 0xb4, 0xfa, 0x41, 0x8d, 0x36, 0x61, 0x55, 0x8e, 0x50, 0xf4, 0x85, 0xba, 0xe7, 0xf1, 0x88, 0xef, 0x4e, 0xd8, 0xbc, 0x62, 0xbe, 0xa7, 0x32, 0xfb, 0xc8, 0x13, 0xb2, 0xfc, 0x2a, 0x94, 0xa0, 0xfe, 0x88, 0x2e, 0x80, 0xe4, 0x1c, 0x92, 0x71, 0x2b, 0x05, 0x03, 0x64, 0x1a, 0xe4, 0xed, 0xba, 0xb6, 0x1d, 0x54, 0x57, 0xfd, 0xd1, 0xe5, 0x68, 0x61, 0x97, 0x24, 0x70, 0xd9, 0xc6, 0x45, 0xad, 0x7c, 0x26, 0x0b, 0x07, 0xd0, 0x2b, 0x17, 0xf9, 0xee, 0xe6, 0xe9, 0xc5, 0x8f, 0x15, 0x95, 0xbf, 0x0d, 0x20, 0x5e, 0x21, 0xb5, 0x48, 0xd3, 0x8e, 0x61, 0xcf, 0x96, 0x6a, 0x4c, 0x82, 0xb0, 0x45, 0x59, 0xb6, 0x47, 0x7a, 0x7e, 0x41, 0xf1, 0x5f, 0xe2, 0x6a, 0xcc, 0x74, 0x54, 0xf1, 0x21, 0xb5, 0xa3, 0x96, 0x3c, 0x08, 0x65, 0x81, 0xa7, 0x8a, 0x7e, 0xbb, 0x11, 0xe7, 0xa5, 0x18, 0x08, 0x60, 0x8d, 0x1e, 0x35, 0xe2, 0xd4, 0x03, 0x64, 0xe8, 0x86, 0xe9, 0xb8, 0xea, 0x24, 0x6c, 0x59, 0xe3, 0x1e, 0xbf, 0x6f, 0x3f, 0x2d, 0x48, 0x2d, 0x96, 0xb7, 0xb0, 0x89, 0x85, 0xbd, 0xec, 0xb9, 0x13, 0x49, 0x25, 0xfe, 0x3a, 0xe2, 0x7a, 0x64, 0x34, 0x4c, 0x20, 0x09, 0xbd, 0x7f, 0x44, 0x22, 0xaa, 0xbd, 0xcf, 0xa6, 0x1c, 0xb0, 0x58, 0xcf, 0x76, 0x31, 0x1e, 0x7e, 0x07, 0x7f, 0x55, 0xd6, 0x2b, 0x86, 0xe9, 0x63, 0x8d, 0x93, 0x68, 0x71, 0x6a, 0x21, 0x68, 0x86, 0xe8, 0x64, 0x22, 0x88, 0x0e, 0x4d, 0x21, 0xa9, 0xc1, 0x52, 0x22, 0xb3, 0x75, 0xe2, 0xb9, 0x48, 0xc1, 0x68, 0xbc, 0x50, 0x56, 0xbe, 0xeb, 0x87, 0x20, 0xb6, 0x9b, 0x55, 0x3d, 0xff, 0x20, 0x34, 0xcc, 0x2b, 0xc9, 0xc0, 0x55, 0x8a, 0xf0, 0x21, 0xdd, 0x93, 0xe2, 0x03, 0x8d, 0x1a, 0x73, 0xf8, 0x61, 0xd1, 0xdd, 0xb6, 0xe3, 0x15, 0x23, 0xd8, 0x18, 0x04, 0x4b, 0x43, 0x43, 0x21, 0x5d, 0x34, 0x04, 0x79, 0xed, 0xb4, 0x86, 0xe5, 0x0f, 0x9f, 0x72, 0xcb, 0x1f, 0xd6, 0x96, 0xbf, 0xc7, 0xb4, 0xda, 0x8d, 0x8b, 0x0b, 0xc5, 0xc9, 0x59, 0xf8, 0xf6, 0x96, 0xf5, 0x40, 0xd5, 0x5a, 0xce, 0x75, 0xd7, 0x47, 0x11, 0x6f, 0x17, 0x83, 0x45, 0xee, 0x43, 0x3c, 0x06, 0xae, 0xef, 0x2a, 0x25, 0xd4, 0x3b, 0xac, 0xe4, 0x83, 0x2b, 0xdb, 0x68, 0x19, 0xbc, 0x27, 0xed, 0x0e, 0x04, 0x9d, 0x98, 0x95, 0x0b, 0x19, 0x7e, 0xeb, 0x44, 0x78, 0x73, 0x69, 0xc5, 0xbc, 0xb3, 0xe4, 0x65, 0x96, 0x27, 0x21, 0x31, 0xa6, 0x23, 0x37, 0x3e, 0x25, 0x98, 0x76, 0xfa, 0xf2, 0xd9, 0xe2, 0xa5, 0x6e, 0xc7, 0x2c, 0xe1, 0xb7, 0x44, 0x79, 0xb9, 0xef, 0x79, 0xe0, 0x31, 0x41, 0x75, 0x8c, 0x1d, 0x8b, 0xe1, 0xfc, 0x5b, 0xbb, 0xb7, 0xe7, 0xb5, 0xd7, 0x46, 0x58, 0xe6, 0x01, 0xc2, 0x75, 0x7d, 0x59, 0x9b, 0x3e, 0xd2, 0x42, 0xba, 0xb9, 0x86, 0x46, 0xd3, 0xc8, 0x89, 0xce, 0xdf, 0x25, 0x11, 0x7e, 0x0c, 0x9a, 0xec, 0x3f, 0xfc, 0xbf, 0xd7, 0x55, 0x8c, 0x4f, 0xbf, 0xcf, 0xe1, 0x1b, 0xe0 - ], - ock: [ - 0x37, 0xc9, 0xe1, 0x33, 0xc8, 0x08, 0x39, 0x66, 0xf6, 0xde, 0x35, 0x59, 0x01, 0xb2, 0x29, 0xb3, 0xd7, 0x59, 0x7f, 0x08, 0x05, 0xae, 0x0b, 0xc4, 0xd2, 0xe1, 0x24, 0x17, 0xbe, 0xcc, 0x95, 0xdb - ], - op: [ - 0x47, 0xd2, 0x3d, 0x02, 0xa8, 0x0a, 0x28, 0xaf, 0xc0, 0xd2, 0xc5, 0xfc, 0x57, 0xbd, 0x30, 0x1b, 0xb3, 0x99, 0xf8, 0x26, 0xb2, 0xca, 0xba, 0x6b, 0x62, 0x88, 0x36, 0x77, 0x23, 0x29, 0x4a, 0x64, 0x81, 0xc7, 0xb2, 0x17, 0x1f, 0xf4, 0x41, 0x52, 0x50, 0xca, 0xc0, 0x1f, 0x59, 0x82, 0xfd, 0x8f, 0x49, 0x61, 0x9d, 0x61, 0xad, 0x78, 0xf6, 0x83, 0x0b, 0x3c, 0x60, 0x61, 0x45, 0x96, 0x2a, 0x0e - ], - c_out: [ - 0xbb, 0x71, 0x55, 0xbb, 0x76, 0x7f, 0x97, 0x35, 0x7d, 0x2b, 0xac, 0xa0, 0x4c, 0xe6, 0xe0, 0x64, 0x41, 0x4f, 0x73, 0xd8, 0xdf, 0xb2, 0xb9, 0xac, 0x99, 0xd3, 0x24, 0xa8, 0xbf, 0x2f, 0xae, 0x77, 0x8b, 0xcf, 0x47, 0xd3, 0xfa, 0xcb, 0x24, 0x1f, 0x4f, 0x9b, 0xee, 0xdb, 0x0f, 0xbf, 0x7f, 0x7f, 0xf3, 0x5d, 0x9e, 0xe2, 0xb3, 0xe2, 0xd5, 0x75, 0xa8, 0x9f, 0x5e, 0xd7, 0xe6, 0x35, 0xc1, 0xac, 0x32, 0x11, 0x62, 0xe7, 0x55, 0xcf, 0xd0, 0x0e, 0x56, 0x4a, 0x6f, 0xb8, 0xbc, 0xee, 0x96, 0x31 - ], - }, - TestVector { - ovk: [ - 0x38, 0x2e, 0x85, 0xa6, 0x11, 0x09, 0xb0, 0x8a, 0x35, 0x88, 0xe0, 0x97, 0xa1, 0xe4, 0x87, 0xbe, 0x9b, 0x49, 0xc1, 0x8c, 0x9d, 0x3b, 0x70, 0xb5, 0x57, 0xd3, 0x77, 0x8e, 0xe3, 0xf1, 0x28, 0x44 - ], - ivk: [ - 0xb4, 0xed, 0xfb, 0x7c, 0x92, 0xb5, 0xef, 0xd2, 0x88, 0x7c, 0xb7, 0xce, 0x32, 0x0d, 0xde, 0xc2, 0x85, 0xf6, 0xfd, 0xfb, 0xa2, 0xa9, 0x81, 0x3c, 0x2f, 0x16, 0x68, 0x0c, 0x4e, 0x6b, 0x78, 0x01 - ], - default_d: [ - 0xe6, 0x77, 0xa4, 0xdd, 0x26, 0x76, 0xe0, 0x81, 0x88, 0xb9, 0x0f - ], - default_pk_d: [ - 0xdc, 0x53, 0x68, 0x2c, 0x0d, 0xd8, 0x90, 0x38, 0x2d, 0x89, 0x28, 0x30, 0xf6, 0xf3, 0x7c, 0x80, 0x83, 0x87, 0x34, 0xa2, 0xaf, 0xaa, 0xc4, 0x0e, 0x8b, 0xee, 0xec, 0x09, 0xa5, 0x7d, 0x24, 0xee - ], - v: 200000000, - rcm: [ - 0x47, 0x8b, 0xa0, 0xee, 0x6e, 0x1a, 0x75, 0xb6, 0x00, 0x03, 0x6f, 0x26, 0xf1, 0x8b, 0x70, 0x15, 0xab, 0x55, 0x6b, 0xed, 0xdf, 0x8b, 0x96, 0x02, 0x38, 0x86, 0x9f, 0x89, 0xdd, 0x80, 0x4e, 0x06 - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0x3e, 0x71, 0x2f, 0xc2, 0x46, 0x65, 0xc4, 0x5e, 0x4f, 0xd8, 0x96, 0xa9, 0x00, 0xc8, 0xc8, 0xb1, 0x74, 0x64, 0xa4, 0x21, 0x8a, 0xa2, 0xf9, 0xa5, 0x43, 0xfc, 0x2b, 0xbc, 0xe4, 0x54, 0x29, 0x43 - ], - cmu: [ - 0x5f, 0x2e, 0xab, 0x4e, 0xf9, 0x92, 0x6f, 0x60, 0x65, 0xe2, 0x1e, 0xca, 0x6e, 0x78, 0x69, 0x32, 0x62, 0x90, 0xda, 0x1e, 0x68, 0xa1, 0x58, 0xda, 0x67, 0x96, 0xa0, 0x6b, 0x6d, 0x9c, 0xb5, 0x54 - ], - esk: [ - 0xad, 0x4a, 0xd6, 0x24, 0x77, 0xc2, 0xc8, 0x83, 0xc8, 0xba, 0xbf, 0xed, 0x5d, 0x38, 0x5b, 0x51, 0xab, 0xdc, 0xc6, 0x98, 0xe9, 0x36, 0xe7, 0x8d, 0xc2, 0x26, 0x71, 0x72, 0x91, 0x55, 0x62, 0x0b - ], - epk: [ - 0x11, 0xec, 0x16, 0x4b, 0x05, 0xbd, 0x16, 0x0f, 0x22, 0x76, 0x63, 0xe2, 0x90, 0x53, 0xea, 0x8d, 0xce, 0x65, 0xe8, 0x16, 0x09, 0xf9, 0x75, 0x30, 0x90, 0xbd, 0xb5, 0x50, 0x2b, 0x2e, 0xa4, 0x06 - ], - shared_secret: [ - 0x6b, 0x9a, 0xfe, 0xa9, 0x95, 0x58, 0x75, 0x0c, 0xc5, 0xd2, 0x28, 0x0b, 0x2b, 0xfb, 0x6d, 0xd5, 0x40, 0xf7, 0x7f, 0x32, 0xa4, 0x13, 0x05, 0x4e, 0x31, 0x97, 0xb4, 0x4d, 0x95, 0x24, 0xe2, 0x94 - ], - k_enc: [ - 0x6a, 0xc9, 0xca, 0xdb, 0xae, 0x5c, 0x54, 0x65, 0x93, 0xbc, 0x09, 0x97, 0x4b, 0x8b, 0xbf, 0x30, 0xa4, 0xa8, 0x1a, 0xe1, 0x21, 0x5f, 0x56, 0xf5, 0xbf, 0xdb, 0x83, 0x49, 0x7c, 0x02, 0x24, 0xa1 - ], - p_enc: [ - 0x02, 0xe6, 0x77, 0xa4, 0xdd, 0x26, 0x76, 0xe0, 0x81, 0x88, 0xb9, 0x0f, 0x00, 0xc2, 0xeb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x47, 0x8b, 0xa0, 0xee, 0x6e, 0x1a, 0x75, 0xb6, 0x00, 0x03, 0x6f, 0x26, 0xf1, 0x8b, 0x70, 0x15, 0xab, 0x55, 0x6b, 0xed, 0xdf, 0x8b, 0x96, 0x02, 0x38, 0x86, 0x9f, 0x89, 0xdd, 0x80, 0x4e, 0x06, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x73, 0xef, 0x0c, 0xd5, 0x09, 0x89, 0x0a, 0x02, 0x64, 0xc2, 0x5a, 0xdd, 0xcd, 0x73, 0x3d, 0x24, 0xfd, 0x42, 0xef, 0xd0, 0xc8, 0xe8, 0x1d, 0xe7, 0x87, 0x0c, 0xbe, 0xa6, 0x5d, 0x4e, 0x6f, 0x77, 0x6f, 0x45, 0x7f, 0xbd, 0x12, 0xd1, 0xf8, 0xfb, 0x26, 0xba, 0x86, 0xf2, 0x48, 0x64, 0x53, 0x17, 0xbd, 0x6c, 0x6d, 0xb7, 0xe5, 0x46, 0xf0, 0x6e, 0xb3, 0x02, 0xf7, 0x98, 0xd0, 0xdd, 0x4c, 0xd2, 0x65, 0xc4, 0x40, 0xea, 0x0f, 0xa0, 0x98, 0x6a, 0x0d, 0x3f, 0x66, 0x9e, 0xe4, 0xb4, 0x44, 0x94, 0x08, 0x4f, 0x3a, 0x14, 0x0c, 0x99, 0xd0, 0xb6, 0x37, 0x6d, 0xdd, 0xe0, 0xa8, 0x01, 0x90, 0x24, 0x42, 0xc0, 0x47, 0x11, 0xff, 0x86, 0xfc, 0x80, 0xba, 0xb5, 0x74, 0xd2, 0xf4, 0xd9, 0x08, 0xdf, 0x88, 0x49, 0x35, 0xdd, 0xfe, 0xce, 0x41, 0x1e, 0xef, 0x4c, 0xdd, 0x43, 0xf5, 0x0e, 0x26, 0xe0, 0x02, 0x41, 0xcb, 0x46, 0xfd, 0x9f, 0x59, 0xed, 0x75, 0xe1, 0x1c, 0x1a, 0x30, 0x90, 0x72, 0x50, 0x35, 0x3f, 0x1d, 0x2c, 0xdf, 0x8e, 0x02, 0x58, 0x5c, 0x4b, 0xa2, 0xf7, 0x34, 0xb6, 0x82, 0xe7, 0xaf, 0xe9, 0xeb, 0xf5, 0x8b, 0x97, 0xa0, 0xde, 0x8d, 0x0f, 0x06, 0xef, 0x83, 0xfc, 0x20, 0xe7, 0xe2, 0x1f, 0x16, 0x34, 0x7d, 0xb9, 0x94, 0x48, 0x68, 0xd0, 0x16, 0xe9, 0x14, 0x9c, 0xb8, 0xcd, 0x2a, 0x3d, 0xc8, 0x31, 0x72, 0x58, 0xd3, 0xb3, 0x8c, 0x48, 0x39, 0x82, 0x13, 0x6c, 0xa6, 0x5f, 0x43, 0x07, 0x8a, 0xd0, 0x88, 0x53, 0x82, 0x40, 0x21, 0x44, 0xdf, 0x1b, 0x87, 0x89, 0x34, 0x63, 0xdf, 0x45, 0xde, 0xae, 0xc8, 0x4f, 0x36, 0xfd, 0xe7, 0x52, 0xd9, 0x9e, 0x38, 0xc4, 0x2e, 0xf3, 0x83, 0x08, 0xf7, 0xc5, 0x12, 0xbf, 0xfd, 0x11, 0x2a, 0xb3, 0x26, 0x65, 0x6c, 0x6c, 0x4e, 0x5c, 0xad, 0x16, 0xe2, 0x37, 0x52, 0xbb, 0x95, 0xe1, 0x16, 0xb6, 0x90, 0x9d, 0xeb, 0x52, 0x84, 0x32, 0x83, 0x4d, 0x5d, 0xd2, 0x09, 0x78, 0xfe, 0xa7, 0x1e, 0x3e, 0xb2, 0x94, 0xc7, 0x4d, 0x49, 0xb0, 0x31, 0x0e, 0xb5, 0x65, 0x70, 0x93, 0xec, 0x9f, 0xdc, 0x57, 0x86, 0xe7, 0xf7, 0xe9, 0xd7, 0x84, 0xc8, 0x69, 0x08, 0xb5, 0xbb, 0x98, 0x04, 0x0a, 0x0a, 0x4b, 0xd1, 0x9d, 0xa8, 0xcd, 0x5e, 0x90, 0xa0, 0x7f, 0xc7, 0x11, 0x20, 0x4b, 0x79, 0xf0, 0x70, 0xfb, 0x67, 0xf7, 0x72, 0xf3, 0x68, 0x98, 0x49, 0x82, 0xaa, 0xb1, 0x27, 0xfc, 0x25, 0x78, 0xed, 0xd3, 0x27, 0xc4, 0x73, 0xc2, 0x99, 0x20, 0xe9, 0xe6, 0x63, 0x24, 0xed, 0x70, 0xa8, 0x3b, 0x28, 0x66, 0x31, 0x88, 0xb0, 0x94, 0xc8, 0x04, 0x2f, 0xf7, 0x27, 0x21, 0xb1, 0x9e, 0x54, 0xc0, 0xed, 0xe1, 0x1d, 0xa5, 0x0c, 0x2a, 0xa4, 0xb1, 0xb8, 0x03, 0xdc, 0xfe, 0x52, 0x62, 0xc7, 0x61, 0x26, 0x42, 0x3d, 0x4f, 0x30, 0xb5, 0x77, 0xa0, 0x94, 0x69, 0x99, 0x08, 0x43, 0xfa, 0x92, 0xa9, 0xe1, 0xca, 0xed, 0x49, 0xc2, 0x4b, 0xcb, 0x2b, 0x7e, 0xa5, 0x93, 0xee, 0xd8, 0xda, 0x12, 0xa7, 0x96, 0xa4, 0xd1, 0x77, 0x5e, 0x21, 0x71, 0x50, 0x1c, 0x04, 0xd9, 0x79, 0x44, 0x7f, 0xf0, 0x52, 0x5c, 0x81, 0xa6, 0x09, 0xd1, 0x73, 0xb6, 0x1f, 0x57, 0x6a, 0xbb, 0x7b, 0x38, 0xa1, 0x56, 0x68, 0x3b, 0xfb, 0xf0, 0xad, 0x4e, 0x6f, 0xdf, 0x2f, 0xb9, 0xd3, 0x4f, 0x5c, 0xb9, 0x80, 0x63, 0xf3, 0xc6, 0xf2, 0x47, 0x62, 0xee, 0x6a, 0x7e, 0x32, 0xe4, 0x0a, 0xe9, 0x26, 0x02, 0x9c, 0x7f, 0x2c, 0xd6, 0xa4, 0xb0, 0xf5, 0x89, 0x0d, 0xad, 0x32, 0x20, 0xf4, 0x6f, 0xd5, 0x71, 0x0d, 0x32, 0x93, 0x78, 0xd6, 0x5f, 0x1c, 0xea, 0x59, 0xb9, 0xb7, 0x12, 0xc1, 0x25, 0x26, 0xe6, 0x3e, 0xf1, 0x95, 0x49, 0x63, 0x9d, 0x7f, 0x2b, 0x57, 0x2d, 0x08, 0xcd, 0x1b, 0x7f, 0x8c, 0x25, 0x94, 0xff, 0xcf, 0x4a, 0x4f, 0xb6, 0x65, 0xfe, 0x9b, 0xcc, 0x9a, 0x4e, 0x57, 0xe4, 0xad, 0x39, 0xfd, 0x96, 0xa8, 0xf5, 0x5f, 0x4e, 0x8a, 0x55, 0xd3, 0x55, 0x0b, 0x22, 0x19, 0xf0, 0xce, 0xa6, 0x38, 0x85, 0x1d, 0xbe, 0x9a, 0x39, 0xdd, 0xec, 0xfc, 0x82, 0xe7, 0xc4, 0x63, 0x4b, 0x6d, 0x77, 0x59, 0x69, 0x2f, 0xf0, 0xa3, 0x18, 0xff, 0x47, 0x61, 0x6a, 0x79, 0xa0, 0x85, 0x24, 0x13, 0x02, 0x59, 0xb7, 0xb3, 0x92, 0x64, 0xd4, 0xc3, 0x3b, 0xc1, 0xa2, 0xcf, 0x88, 0x26, 0x29, 0x43 - ], - ock: [ - 0xdd, 0x74, 0xd6, 0x97, 0xc7, 0x0a, 0x56, 0x41, 0xfa, 0xd2, 0x6c, 0x31, 0xc6, 0x69, 0x8a, 0x59, 0x29, 0x8a, 0x44, 0xee, 0x9d, 0xaa, 0x27, 0x33, 0x5f, 0xac, 0x31, 0x0c, 0x79, 0x2e, 0x6a, 0xf5 - ], - op: [ - 0xdc, 0x53, 0x68, 0x2c, 0x0d, 0xd8, 0x90, 0x38, 0x2d, 0x89, 0x28, 0x30, 0xf6, 0xf3, 0x7c, 0x80, 0x83, 0x87, 0x34, 0xa2, 0xaf, 0xaa, 0xc4, 0x0e, 0x8b, 0xee, 0xec, 0x09, 0xa5, 0x7d, 0x24, 0xee, 0xad, 0x4a, 0xd6, 0x24, 0x77, 0xc2, 0xc8, 0x83, 0xc8, 0xba, 0xbf, 0xed, 0x5d, 0x38, 0x5b, 0x51, 0xab, 0xdc, 0xc6, 0x98, 0xe9, 0x36, 0xe7, 0x8d, 0xc2, 0x26, 0x71, 0x72, 0x91, 0x55, 0x62, 0x0b - ], - c_out: [ - 0x4e, 0x74, 0x7e, 0x34, 0xb4, 0x7a, 0x8e, 0xb5, 0x24, 0x88, 0x7b, 0xe9, 0xcb, 0xab, 0x64, 0xad, 0x8d, 0x43, 0xf7, 0xe9, 0x46, 0xae, 0xe7, 0x2e, 0x89, 0x1d, 0xe6, 0xba, 0x2b, 0x24, 0x3e, 0x60, 0x99, 0x87, 0xc5, 0xae, 0xe3, 0x6f, 0xe7, 0x3b, 0x59, 0xfa, 0xa7, 0xb5, 0x9f, 0xf7, 0x98, 0xd8, 0xc3, 0x79, 0xdb, 0xbc, 0x95, 0x00, 0x1f, 0x24, 0xca, 0x5d, 0xbc, 0xcd, 0xf9, 0x27, 0x56, 0x62, 0xa9, 0x05, 0x3e, 0x34, 0x36, 0xfd, 0xd9, 0x8e, 0x40, 0x42, 0x3d, 0x43, 0x83, 0xb6, 0x1c, 0x04 - ], - }, - TestVector { - ovk: [ - 0x8d, 0xc3, 0x73, 0xff, 0xec, 0xa3, 0xd8, 0x57, 0x8d, 0x51, 0x6f, 0x35, 0x4a, 0xa8, 0xa9, 0x73, 0x6f, 0x27, 0x8b, 0xee, 0xf1, 0x7a, 0x54, 0x4b, 0x16, 0xb3, 0x47, 0x8d, 0xc5, 0x95, 0x46, 0xbd - ], - ivk: [ - 0xdf, 0x4a, 0xfb, 0x34, 0x37, 0x3a, 0x88, 0x4f, 0x8d, 0x86, 0x53, 0x5a, 0x2c, 0x45, 0xd6, 0xd3, 0x21, 0x66, 0x9e, 0xbf, 0xb8, 0x59, 0x99, 0x03, 0xa6, 0x40, 0x7d, 0xd3, 0x82, 0x09, 0x76, 0x01 - ], - default_d: [ - 0xa1, 0xe0, 0xf5, 0x3c, 0x47, 0x3e, 0xd9, 0x8c, 0x17, 0xb6, 0xd0 - ], - default_pk_d: [ - 0xb3, 0x23, 0xbb, 0x8b, 0x98, 0x03, 0x11, 0x44, 0x88, 0x26, 0x0f, 0x9f, 0x51, 0xe5, 0x46, 0xc2, 0xb4, 0x5f, 0x3d, 0x03, 0x6d, 0x03, 0x9b, 0x0f, 0x0c, 0xb2, 0x86, 0x13, 0x9d, 0x4c, 0x25, 0xb5 - ], - v: 300000000, - rcm: [ - 0x14, 0x7c, 0xf2, 0xb5, 0x1b, 0x4c, 0x7c, 0x63, 0xcb, 0x77, 0xb9, 0x9e, 0x8b, 0x78, 0x3e, 0x5b, 0x51, 0x11, 0xdb, 0x0a, 0x7c, 0xa0, 0x4d, 0x6c, 0x01, 0x4a, 0x1d, 0x7d, 0xa8, 0x3b, 0xae, 0x0a - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0x48, 0x59, 0xd1, 0xb5, 0x37, 0x31, 0xfc, 0xb3, 0xe1, 0x50, 0x4a, 0xf5, 0x63, 0x94, 0x32, 0x54, 0x7f, 0x30, 0x1c, 0x59, 0x8d, 0x41, 0x27, 0xd8, 0x0d, 0x87, 0xa4, 0xc0, 0x3a, 0xad, 0x60, 0x1e - ], - cmu: [ - 0xdd, 0xdb, 0xb9, 0x62, 0x51, 0x66, 0x84, 0x26, 0x02, 0x2f, 0x25, 0x73, 0xd4, 0x44, 0x2f, 0x0a, 0xbe, 0x2a, 0xea, 0xf6, 0x15, 0xb2, 0x6d, 0x1d, 0xeb, 0x2e, 0xa0, 0xe2, 0xb8, 0xb3, 0x88, 0x23 - ], - esk: [ - 0x99, 0xaa, 0x10, 0xc0, 0x57, 0x88, 0x08, 0x1c, 0x0d, 0xa7, 0xd8, 0x79, 0xcd, 0x95, 0x43, 0xec, 0x18, 0x92, 0x15, 0x72, 0x92, 0x40, 0x2e, 0x96, 0x0b, 0x06, 0x99, 0x5a, 0x08, 0x96, 0x4c, 0x03 - ], - epk: [ - 0xbe, 0x1c, 0x98, 0xaa, 0xee, 0xf2, 0x4a, 0x12, 0xff, 0x3e, 0x3b, 0xe4, 0x2c, 0x92, 0xda, 0x1f, 0xca, 0x4e, 0x26, 0x33, 0x38, 0x1c, 0xf6, 0x7d, 0x68, 0x36, 0xe0, 0x8c, 0x76, 0x89, 0xac, 0x8e - ], - shared_secret: [ - 0xc4, 0x2e, 0xf4, 0x8e, 0x45, 0x53, 0xbb, 0xe5, 0xa2, 0x0b, 0x41, 0x78, 0x93, 0x82, 0xd5, 0xa0, 0x40, 0x9f, 0x08, 0x28, 0x45, 0xd1, 0xda, 0x97, 0x1c, 0x01, 0xc4, 0x9d, 0xb3, 0x93, 0xf9, 0xcc - ], - k_enc: [ - 0x2f, 0x29, 0x71, 0xf4, 0xd0, 0x83, 0xb4, 0x9f, 0x26, 0x14, 0xa9, 0x8a, 0x29, 0x43, 0xc6, 0xf1, 0x30, 0x9b, 0xf3, 0xfc, 0x2b, 0x07, 0x9e, 0x52, 0xf1, 0x68, 0x3f, 0xa6, 0x75, 0x4b, 0x30, 0x6b - ], - p_enc: [ - 0x02, 0xa1, 0xe0, 0xf5, 0x3c, 0x47, 0x3e, 0xd9, 0x8c, 0x17, 0xb6, 0xd0, 0x00, 0xa3, 0xe1, 0x11, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x14, 0x7c, 0xf2, 0xb5, 0x1b, 0x4c, 0x7c, 0x63, 0xcb, 0x77, 0xb9, 0x9e, 0x8b, 0x78, 0x3e, 0x5b, 0x51, 0x11, 0xdb, 0x0a, 0x7c, 0xa0, 0x4d, 0x6c, 0x01, 0x4a, 0x1d, 0x7d, 0xa8, 0x3b, 0xae, 0x0a, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x6b, 0x36, 0x53, 0x04, 0x70, 0x77, 0xfe, 0x85, 0x30, 0xab, 0x62, 0xdf, 0xb5, 0x59, 0xc9, 0x75, 0x42, 0x29, 0x57, 0x34, 0x4c, 0x3c, 0x9f, 0x19, 0x12, 0x00, 0x50, 0xe8, 0x47, 0x2a, 0xa2, 0xe2, 0x18, 0x69, 0xee, 0x6c, 0x1a, 0xad, 0x56, 0x11, 0x0b, 0xf9, 0x39, 0xcd, 0xa5, 0x2e, 0xab, 0x2c, 0xb2, 0x92, 0x84, 0xd7, 0xc2, 0x05, 0x7e, 0xbe, 0xfd, 0x02, 0x7a, 0x8c, 0x71, 0x7f, 0x50, 0xc7, 0x89, 0x2a, 0xd6, 0xc3, 0x4b, 0xc9, 0xdb, 0x71, 0xb1, 0x6e, 0x82, 0x33, 0xa6, 0xd8, 0x1c, 0x4d, 0x22, 0x84, 0x68, 0xc4, 0x4d, 0x30, 0x32, 0x0e, 0x3b, 0xcb, 0x5b, 0x23, 0xcf, 0x8e, 0x0a, 0x47, 0x15, 0x44, 0x9f, 0x61, 0x1d, 0xa4, 0xac, 0x22, 0xcc, 0xee, 0x1c, 0x1a, 0xa7, 0x47, 0xd0, 0xe4, 0xc3, 0xe2, 0x4a, 0x27, 0x45, 0x89, 0x87, 0x76, 0x35, 0x5b, 0x5d, 0x1a, 0xac, 0xa5, 0xa1, 0xd4, 0x27, 0x20, 0x4c, 0xbb, 0x13, 0x52, 0x3e, 0x58, 0xad, 0x54, 0xed, 0x1c, 0x3f, 0x88, 0x7a, 0xbe, 0x29, 0x6e, 0xaf, 0xff, 0xe7, 0x2d, 0xd5, 0xe8, 0xe7, 0x82, 0x3f, 0x22, 0xa8, 0xb0, 0x87, 0xa7, 0x84, 0xd7, 0x1a, 0x97, 0x6c, 0x3e, 0xb5, 0xbf, 0xb7, 0x49, 0xaa, 0x1a, 0x49, 0x81, 0xc2, 0x2e, 0x4d, 0xb6, 0xd6, 0x4f, 0x69, 0xd3, 0x83, 0xd8, 0xd2, 0x2d, 0x49, 0xb1, 0x06, 0xf1, 0x3b, 0xfc, 0xa0, 0xae, 0x67, 0x22, 0x92, 0x66, 0x23, 0x12, 0x07, 0x89, 0x97, 0xdd, 0xdd, 0xd6, 0xb0, 0xb6, 0x80, 0x9f, 0x69, 0x18, 0xbe, 0x81, 0x5a, 0x45, 0xcc, 0x2c, 0x7f, 0x2e, 0x0b, 0x0f, 0xcc, 0xd5, 0xdc, 0x86, 0x25, 0x2c, 0xe6, 0xe9, 0x61, 0x9d, 0xf2, 0x38, 0x08, 0xb1, 0x12, 0xe4, 0xa2, 0x6c, 0xe5, 0x80, 0x1e, 0x4b, 0xb1, 0x2a, 0xec, 0x68, 0xa3, 0x87, 0x2a, 0x85, 0x6f, 0xcc, 0x2e, 0x20, 0xc2, 0x01, 0x65, 0x12, 0x81, 0x9c, 0x00, 0x89, 0xad, 0xb4, 0xda, 0xbf, 0x9f, 0x44, 0x22, 0x4a, 0xf8, 0x8c, 0xcf, 0x36, 0x58, 0xec, 0x72, 0xa7, 0xa3, 0x94, 0xfc, 0x84, 0xa2, 0xb6, 0xbb, 0xcf, 0x09, 0x5d, 0x88, 0x14, 0x72, 0x6a, 0xd3, 0xbc, 0xf1, 0x2f, 0xb1, 0xa0, 0x4d, 0x7f, 0x7a, 0xfd, 0x08, 0x64, 0x73, 0x6b, 0x4a, 0x64, 0x88, 0x95, 0xa7, 0x5e, 0x74, 0x3e, 0xa4, 0x67, 0x16, 0x0e, 0x4b, 0x7b, 0x37, 0xd5, 0x91, 0x44, 0x99, 0x96, 0x97, 0x78, 0x75, 0xf0, 0xce, 0xc3, 0x61, 0x5b, 0x1f, 0x53, 0xfe, 0xac, 0xca, 0x47, 0x2f, 0xb0, 0x52, 0x68, 0xb5, 0xfe, 0xc2, 0x08, 0x72, 0xab, 0x27, 0xdc, 0x12, 0x65, 0xb6, 0xf4, 0x52, 0xdc, 0xff, 0x1f, 0xd9, 0x2a, 0x91, 0x19, 0x8c, 0xbc, 0x92, 0xcb, 0x72, 0xd5, 0xce, 0xca, 0x18, 0xef, 0x7c, 0xdc, 0x74, 0xf5, 0x12, 0xb2, 0x1d, 0x41, 0x45, 0xed, 0xaf, 0xdc, 0x51, 0xc9, 0x0a, 0x13, 0xdb, 0x18, 0xc4, 0xe0, 0x51, 0x51, 0xc7, 0x0f, 0xac, 0x25, 0x27, 0x13, 0xdb, 0x67, 0x6c, 0x71, 0x38, 0x01, 0x98, 0x4d, 0xb9, 0xa4, 0xca, 0xb7, 0xac, 0xf8, 0x9a, 0xb8, 0xe1, 0x04, 0x72, 0x6d, 0xa4, 0x77, 0x68, 0xa5, 0x8e, 0x58, 0x33, 0x2c, 0x33, 0x07, 0x96, 0x01, 0xea, 0x80, 0x44, 0x9e, 0x89, 0xe7, 0xba, 0x9e, 0x5c, 0x66, 0x19, 0xac, 0x1e, 0xc5, 0xe8, 0x70, 0x18, 0x1f, 0xa3, 0x00, 0xee, 0x08, 0x60, 0xf9, 0x37, 0xe5, 0x1c, 0x29, 0x98, 0xaa, 0xa7, 0x4b, 0xa2, 0x9c, 0x40, 0x0a, 0x89, 0x47, 0xed, 0xc0, 0xf3, 0x49, 0x7e, 0xc6, 0xc4, 0xa8, 0x2b, 0x10, 0x45, 0x65, 0x32, 0xca, 0x08, 0x3f, 0x77, 0xaf, 0x2a, 0x36, 0xc1, 0xab, 0xf3, 0x34, 0xf5, 0x7c, 0x69, 0x46, 0x58, 0xc5, 0x82, 0xc6, 0xed, 0x30, 0x19, 0xb1, 0x50, 0x86, 0xed, 0x1e, 0x92, 0xb3, 0x8e, 0xdb, 0xc2, 0xbc, 0xdc, 0xdd, 0x6a, 0x42, 0xa8, 0x79, 0x80, 0x36, 0x3b, 0xe2, 0x09, 0xd8, 0xf3, 0x5a, 0x58, 0x9d, 0xc2, 0xb2, 0xcf, 0x1f, 0x94, 0x51, 0x81, 0x2b, 0xc2, 0xb4, 0x8f, 0xae, 0x04, 0xa8, 0x1d, 0x29, 0x8b, 0x1a, 0x6a, 0x81, 0xc9, 0xa7, 0xa6, 0xaf, 0xca, 0xd3, 0xae, 0x6b, 0x2f, 0xed, 0x57, 0x5b, 0xba, 0xc1, 0xdd, 0x37, 0xb1, 0x97, 0x96, 0xe4, 0x9a, 0x54, 0x39, 0x64, 0x7c, 0xfa, 0xdf, 0xd2, 0x6d, 0x7b, 0x2d, 0x91, 0x61, 0x7f, 0xb2, 0x6d, 0x36, 0x0b, 0xf0, 0x11, 0xf2, 0x5e, 0xcb, 0x6e, 0x3d, 0x3f, 0x41, 0xf1, 0xa5, 0x73, 0xc0, 0xf1, 0x04, 0x63, 0x32, 0x13 - ], - ock: [ - 0x0a, 0xc3, 0x5f, 0x08, 0xac, 0xd8, 0x76, 0xdd, 0x7b, 0x9b, 0x4e, 0xf1, 0x9a, 0x33, 0xb3, 0x6a, 0xa0, 0x90, 0xff, 0x62, 0x29, 0x7f, 0x96, 0x12, 0x98, 0x7e, 0x5e, 0x52, 0x27, 0x5f, 0xd7, 0xa7 - ], - op: [ - 0xb3, 0x23, 0xbb, 0x8b, 0x98, 0x03, 0x11, 0x44, 0x88, 0x26, 0x0f, 0x9f, 0x51, 0xe5, 0x46, 0xc2, 0xb4, 0x5f, 0x3d, 0x03, 0x6d, 0x03, 0x9b, 0x0f, 0x0c, 0xb2, 0x86, 0x13, 0x9d, 0x4c, 0x25, 0xb5, 0x99, 0xaa, 0x10, 0xc0, 0x57, 0x88, 0x08, 0x1c, 0x0d, 0xa7, 0xd8, 0x79, 0xcd, 0x95, 0x43, 0xec, 0x18, 0x92, 0x15, 0x72, 0x92, 0x40, 0x2e, 0x96, 0x0b, 0x06, 0x99, 0x5a, 0x08, 0x96, 0x4c, 0x03 - ], - c_out: [ - 0x17, 0xbc, 0xa1, 0x5f, 0x91, 0xee, 0x2a, 0xd0, 0x1c, 0x42, 0xce, 0x89, 0x5e, 0x9c, 0xa3, 0xd8, 0x7c, 0x04, 0x16, 0x4c, 0x29, 0xf7, 0x94, 0x52, 0xef, 0xcf, 0x8d, 0x32, 0xd5, 0x35, 0x93, 0xbc, 0xc2, 0x02, 0xee, 0x96, 0xb7, 0x78, 0x22, 0x4c, 0xde, 0x87, 0xbe, 0x07, 0x86, 0x71, 0x71, 0x0b, 0xbf, 0xea, 0xed, 0x7f, 0x61, 0x72, 0x62, 0x62, 0xc4, 0xde, 0xc4, 0x95, 0x82, 0x72, 0x74, 0x4c, 0xf4, 0x04, 0xf3, 0xd4, 0xd9, 0xc8, 0x1f, 0x2a, 0x24, 0x16, 0xe9, 0x00, 0xbc, 0x39, 0x20, 0x18 - ], - }, - TestVector { - ovk: [ - 0x30, 0x2a, 0x78, 0xb5, 0xce, 0xe5, 0xd9, 0x84, 0x22, 0xf2, 0xdd, 0x13, 0xd8, 0xc4, 0x6f, 0xe7, 0x27, 0x67, 0x25, 0x52, 0x23, 0x3c, 0xc8, 0x21, 0x7a, 0xe2, 0xf1, 0x44, 0xb3, 0xd6, 0x0d, 0x04 - ], - ivk: [ - 0x2a, 0xa4, 0x0d, 0xd9, 0x3b, 0x51, 0xe7, 0xf6, 0x81, 0xb1, 0x1c, 0xdc, 0xde, 0x55, 0xe3, 0x3a, 0xcb, 0x3c, 0x9d, 0xe6, 0x25, 0x9d, 0x78, 0xae, 0xa5, 0x39, 0xbf, 0x80, 0xad, 0xfe, 0x67, 0x07 - ], - default_d: [ - 0x14, 0xbf, 0xe9, 0x79, 0x77, 0x94, 0x6a, 0x54, 0x7d, 0x5f, 0x3f - ], - default_pk_d: [ - 0x65, 0xcd, 0x93, 0xd6, 0x16, 0xc2, 0x69, 0xae, 0x15, 0x7a, 0x0a, 0xaa, 0xbe, 0xfd, 0xb6, 0xb3, 0x27, 0xbd, 0xb9, 0xaa, 0xba, 0xef, 0xa1, 0xb9, 0xc1, 0x70, 0x1b, 0x60, 0x0e, 0x01, 0x08, 0xae - ], - v: 400000000, - rcm: [ - 0x34, 0xa4, 0xb2, 0xa9, 0x14, 0x4f, 0xf5, 0xea, 0x54, 0xef, 0xee, 0x87, 0xcf, 0x90, 0x1b, 0x5b, 0xed, 0x5e, 0x35, 0xd2, 0x1f, 0xbb, 0xd7, 0x88, 0xd5, 0xbd, 0x9d, 0x83, 0x3e, 0x11, 0x28, 0x04 - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0xb7, 0xf6, 0xc0, 0xc1, 0xbd, 0xf5, 0x53, 0x20, 0xbc, 0x11, 0xca, 0x32, 0x39, 0x9e, 0x64, 0x01, 0x4c, 0x09, 0x49, 0xa4, 0x04, 0x11, 0xff, 0x59, 0xbc, 0x60, 0xee, 0x0b, 0xda, 0x4c, 0xbd, 0xbc - ], - cmu: [ - 0x3b, 0x98, 0x2f, 0xa0, 0x4b, 0xc3, 0x4f, 0x4c, 0x42, 0x38, 0x9e, 0xc2, 0x0b, 0xa9, 0xac, 0x79, 0x94, 0xa8, 0x70, 0x13, 0x60, 0x53, 0x8a, 0xfc, 0x6a, 0x01, 0x43, 0x06, 0x3e, 0xdf, 0xd7, 0x5e - ], - esk: [ - 0xbd, 0xde, 0x13, 0x81, 0xec, 0x9f, 0xf4, 0x21, 0xca, 0xfd, 0x1e, 0x31, 0xcc, 0x5d, 0xe2, 0x55, 0x59, 0x88, 0x1f, 0x6b, 0x21, 0xb2, 0x17, 0x5d, 0x0d, 0xce, 0x94, 0x08, 0x59, 0x7e, 0xa1, 0x03 - ], - epk: [ - 0x52, 0xf3, 0x51, 0xee, 0xe6, 0x34, 0x4a, 0x28, 0xfa, 0x35, 0x41, 0xac, 0xd6, 0xd1, 0xb3, 0x8a, 0xd8, 0xdf, 0x27, 0xac, 0x30, 0x56, 0x5e, 0x9d, 0x62, 0xb3, 0xe7, 0x57, 0xf7, 0xac, 0x95, 0x8f - ], - shared_secret: [ - 0x3c, 0x54, 0x29, 0xbb, 0x82, 0xbc, 0x1f, 0xbe, 0x2c, 0x63, 0xc0, 0x67, 0x94, 0x82, 0x5c, 0x6f, 0xb9, 0x33, 0xf5, 0xc7, 0x81, 0xcf, 0x12, 0x77, 0x4a, 0x6e, 0x67, 0x3f, 0x7b, 0xbf, 0x4f, 0x99 - ], - k_enc: [ - 0x51, 0x95, 0x3c, 0x39, 0xb3, 0x18, 0xb3, 0x53, 0x15, 0x11, 0x69, 0x25, 0x06, 0x58, 0x81, 0x39, 0x70, 0x1a, 0x76, 0x9a, 0xfd, 0xce, 0xae, 0xb9, 0x6b, 0xff, 0xd2, 0x9d, 0xa3, 0x16, 0xa4, 0xc9 - ], - p_enc: [ - 0x02, 0x14, 0xbf, 0xe9, 0x79, 0x77, 0x94, 0x6a, 0x54, 0x7d, 0x5f, 0x3f, 0x00, 0x84, 0xd7, 0x17, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x34, 0xa4, 0xb2, 0xa9, 0x14, 0x4f, 0xf5, 0xea, 0x54, 0xef, 0xee, 0x87, 0xcf, 0x90, 0x1b, 0x5b, 0xed, 0x5e, 0x35, 0xd2, 0x1f, 0xbb, 0xd7, 0x88, 0xd5, 0xbd, 0x9d, 0x83, 0x3e, 0x11, 0x28, 0x04, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x1e, 0xaa, 0x1e, 0x2f, 0xfc, 0xe5, 0x88, 0x4c, 0xe1, 0xae, 0x74, 0xfc, 0xfc, 0x28, 0x21, 0xe7, 0x5f, 0x9e, 0xd1, 0xaf, 0x7c, 0x3b, 0xe0, 0x02, 0xc7, 0x2b, 0x5a, 0xe6, 0xb7, 0x6b, 0xfd, 0x3e, 0x0f, 0xd7, 0x99, 0x57, 0x0b, 0xd5, 0x87, 0xdc, 0xfb, 0xd2, 0x20, 0xb4, 0x36, 0xd6, 0xfd, 0x97, 0x38, 0xe5, 0x6f, 0x3f, 0x7c, 0x77, 0x2d, 0x0a, 0x3c, 0xe2, 0x6a, 0xb7, 0x86, 0x0d, 0x5b, 0x15, 0x3d, 0xf0, 0xbe, 0x87, 0x14, 0xac, 0x13, 0x72, 0x42, 0xc6, 0x3d, 0xf8, 0x51, 0x3d, 0x35, 0x68, 0x62, 0x4f, 0x3d, 0x58, 0x2d, 0xe4, 0xec, 0x17, 0x8c, 0xdf, 0x3a, 0x6d, 0x7c, 0x8c, 0x10, 0xaf, 0xf6, 0x7f, 0x55, 0xe0, 0xdc, 0x55, 0x1e, 0xf5, 0xe1, 0x0f, 0x37, 0x1c, 0x7d, 0xa2, 0xce, 0x9d, 0x3b, 0xa3, 0x02, 0x16, 0xfb, 0xab, 0x42, 0xb9, 0xf7, 0x93, 0x32, 0x51, 0xa9, 0xe6, 0x89, 0xee, 0x5b, 0x19, 0xc8, 0x26, 0xab, 0x3a, 0x2e, 0x5e, 0xdd, 0x9b, 0xf2, 0x74, 0xe5, 0x9e, 0xcd, 0xcd, 0x81, 0x80, 0x21, 0xf9, 0xeb, 0x02, 0xab, 0xf0, 0xec, 0xef, 0x0f, 0x3c, 0x1f, 0x53, 0xa3, 0x39, 0xb8, 0xdc, 0x54, 0xf1, 0xd9, 0xb6, 0x3d, 0x51, 0x2a, 0x3e, 0xfc, 0x14, 0xa9, 0xcc, 0xb5, 0x9d, 0xee, 0xb3, 0xc6, 0xbc, 0xe2, 0x70, 0xa4, 0x46, 0xe4, 0x1f, 0xad, 0xbb, 0xba, 0x8d, 0x85, 0xa5, 0x13, 0x65, 0x3d, 0x5e, 0x44, 0x9d, 0x38, 0xab, 0x0b, 0xa7, 0x03, 0xd0, 0x1f, 0xbf, 0x0b, 0xa0, 0x64, 0x89, 0x66, 0x06, 0x81, 0x1d, 0xb1, 0x27, 0x77, 0xdb, 0x0b, 0x8a, 0xac, 0xa5, 0x9b, 0x82, 0x26, 0x38, 0x04, 0x87, 0x81, 0x45, 0x0c, 0x98, 0x18, 0xf8, 0x6e, 0x41, 0xe9, 0x44, 0x9d, 0x09, 0x8a, 0x77, 0x16, 0x0b, 0x6a, 0x3f, 0x8a, 0xec, 0xa8, 0x60, 0x0a, 0x50, 0xaa, 0xcd, 0x7d, 0xa7, 0x52, 0x99, 0x79, 0x2c, 0x3c, 0xc3, 0x4d, 0x8a, 0x12, 0xbd, 0x39, 0x45, 0xb2, 0x66, 0x20, 0x6f, 0x1f, 0x4e, 0x24, 0xe5, 0x74, 0x96, 0x68, 0x2f, 0xdf, 0x51, 0xd7, 0xef, 0x1c, 0x78, 0x5a, 0x92, 0x5a, 0x04, 0x02, 0x47, 0xc3, 0x91, 0xa8, 0x4f, 0xfd, 0x47, 0x5f, 0x5d, 0xc7, 0xab, 0x96, 0x64, 0x14, 0x3b, 0x19, 0x5c, 0x3e, 0x9b, 0x92, 0x04, 0x38, 0x62, 0x2d, 0xb2, 0xf2, 0xa1, 0x95, 0x48, 0x2c, 0xbe, 0xa5, 0x27, 0xbb, 0x5a, 0xda, 0xcf, 0xec, 0xbf, 0xf7, 0xfa, 0xd4, 0x05, 0xdb, 0x07, 0xd7, 0x12, 0xfc, 0xbc, 0x5e, 0x6a, 0xf8, 0xe5, 0xd2, 0x0e, 0x06, 0xfc, 0xad, 0x78, 0x8a, 0x27, 0xb1, 0x5e, 0x18, 0x9d, 0x0a, 0x2f, 0xa6, 0x7b, 0x0a, 0x4c, 0x3e, 0x0c, 0x07, 0x68, 0x09, 0x15, 0xbc, 0x5f, 0xfc, 0x08, 0x0b, 0x3a, 0x4d, 0xaf, 0x16, 0x38, 0x0f, 0x76, 0xc6, 0x01, 0x65, 0xb4, 0xb5, 0x11, 0xb0, 0x02, 0xef, 0xbf, 0x1e, 0xac, 0xe9, 0xb7, 0xb2, 0x71, 0xb7, 0x46, 0x58, 0xb0, 0x98, 0x43, 0x7a, 0x6e, 0x47, 0xca, 0xb2, 0x5e, 0xe9, 0x3e, 0xfd, 0x09, 0xcf, 0x64, 0xd7, 0x73, 0xf5, 0xc7, 0x23, 0xd5, 0x60, 0xba, 0xa1, 0xc3, 0x4a, 0x7e, 0x4a, 0xf8, 0x8f, 0x2a, 0x0c, 0xec, 0x3e, 0x54, 0xd9, 0x26, 0x6b, 0x8f, 0xfe, 0x24, 0x80, 0x6c, 0xa7, 0x42, 0x00, 0x10, 0x51, 0xc9, 0x2b, 0x0b, 0x4b, 0xf9, 0xa8, 0xaa, 0xd1, 0x5e, 0x26, 0xb6, 0x25, 0xd8, 0x1b, 0x39, 0xba, 0x12, 0xe0, 0xcb, 0x9c, 0xe5, 0x1e, 0x73, 0x33, 0xf2, 0x68, 0xaf, 0x10, 0x1d, 0xfd, 0x8a, 0xa5, 0xed, 0x83, 0xcf, 0x11, 0x0a, 0x95, 0xc5, 0xb8, 0xab, 0xbb, 0x52, 0x20, 0xfe, 0xce, 0x76, 0xa8, 0x15, 0x03, 0x6f, 0x29, 0x6d, 0x63, 0x0b, 0x13, 0x8a, 0x90, 0x27, 0x69, 0x87, 0xba, 0x4e, 0x36, 0xd9, 0x10, 0x0f, 0xc3, 0x16, 0x36, 0x0e, 0xba, 0x7e, 0x25, 0x64, 0x6e, 0x6f, 0x38, 0xc1, 0x0e, 0xc4, 0x56, 0xb0, 0xfa, 0x91, 0x1c, 0xb5, 0xe6, 0xe6, 0x10, 0xa9, 0xf0, 0xcf, 0x45, 0x3e, 0x5b, 0xec, 0x4d, 0xee, 0xca, 0xdf, 0x1d, 0xcd, 0xf4, 0x62, 0x85, 0x2a, 0x67, 0x81, 0x10, 0x15, 0xe9, 0x54, 0xca, 0xc9, 0xcf, 0xc1, 0x33, 0xb7, 0x97, 0xc1, 0x56, 0x14, 0x75, 0xa4, 0xc9, 0x02, 0xe4, 0xba, 0xb8, 0x93, 0xf4, 0xc7, 0x7e, 0x36, 0xda, 0x37, 0x2c, 0x74, 0x57, 0x02, 0x04, 0x83, 0x8c, 0x18, 0x92, 0x52, 0x9d, 0x16, 0xb5, 0xc3, 0xbb, 0x0f, 0xef, 0x5f, 0xd6, 0x75, 0x4d, 0x75, 0x8a, 0x29, 0x61, 0x8d, 0x2c, 0x54 - ], - ock: [ - 0xb3, 0xea, 0xdd, 0xd5, 0x97, 0x35, 0x5a, 0x33, 0xe4, 0x60, 0xb7, 0x9c, 0x90, 0xa7, 0x86, 0x37, 0x67, 0x5d, 0x65, 0x03, 0x37, 0x03, 0x24, 0xd5, 0x02, 0x6c, 0x8a, 0xe9, 0x58, 0xe1, 0xfb, 0xed - ], - op: [ - 0x65, 0xcd, 0x93, 0xd6, 0x16, 0xc2, 0x69, 0xae, 0x15, 0x7a, 0x0a, 0xaa, 0xbe, 0xfd, 0xb6, 0xb3, 0x27, 0xbd, 0xb9, 0xaa, 0xba, 0xef, 0xa1, 0xb9, 0xc1, 0x70, 0x1b, 0x60, 0x0e, 0x01, 0x08, 0xae, 0xbd, 0xde, 0x13, 0x81, 0xec, 0x9f, 0xf4, 0x21, 0xca, 0xfd, 0x1e, 0x31, 0xcc, 0x5d, 0xe2, 0x55, 0x59, 0x88, 0x1f, 0x6b, 0x21, 0xb2, 0x17, 0x5d, 0x0d, 0xce, 0x94, 0x08, 0x59, 0x7e, 0xa1, 0x03 - ], - c_out: [ - 0xb4, 0x7a, 0xc1, 0x19, 0x05, 0x2c, 0x88, 0x89, 0x52, 0x5a, 0xeb, 0xf8, 0x55, 0x21, 0xd1, 0xad, 0x76, 0x54, 0xff, 0x0a, 0xfe, 0x98, 0xd8, 0x5d, 0xf2, 0x94, 0x89, 0xd0, 0x6c, 0x28, 0x66, 0x71, 0x86, 0x85, 0x2e, 0x89, 0x55, 0x2f, 0x4f, 0xfa, 0xe1, 0xc2, 0x74, 0x90, 0x1f, 0x52, 0x79, 0x45, 0xe8, 0x82, 0x40, 0x26, 0xb1, 0x68, 0xef, 0x8d, 0x90, 0xcd, 0xc9, 0x1b, 0xb5, 0xc6, 0x02, 0x6a, 0x14, 0x58, 0xb3, 0xbc, 0xef, 0x3d, 0x14, 0x3e, 0xb6, 0x42, 0xa4, 0xe0, 0x2a, 0x55, 0x21, 0xeb - ], - }, - TestVector { - ovk: [ - 0x82, 0x42, 0xe0, 0x59, 0xba, 0x92, 0x8e, 0xc6, 0xbe, 0x85, 0x65, 0x4a, 0x3d, 0xeb, 0xa1, 0xbe, 0xe2, 0x47, 0xf1, 0x61, 0x84, 0x08, 0x0d, 0x69, 0xcf, 0x76, 0xa9, 0xc6, 0x5e, 0x10, 0xf2, 0xc5 - ], - ivk: [ - 0x38, 0x19, 0xa7, 0xdb, 0x66, 0xb7, 0x20, 0x61, 0x09, 0xdf, 0xee, 0xab, 0xc8, 0xe9, 0x4e, 0xcd, 0xc8, 0xd7, 0xfe, 0x98, 0x3e, 0x48, 0x86, 0xde, 0xa6, 0x6e, 0xdc, 0xcd, 0xeb, 0xcf, 0xbc, 0x00 - ], - default_d: [ - 0xb8, 0xfd, 0x08, 0x5d, 0xf4, 0x66, 0x75, 0x8b, 0x8d, 0xef, 0x70 - ], - default_pk_d: [ - 0xdf, 0x7d, 0xc9, 0xf5, 0x82, 0x3c, 0x2f, 0x25, 0x12, 0x07, 0xc3, 0xd0, 0x75, 0x47, 0x8c, 0x54, 0x59, 0x8f, 0x2b, 0x59, 0x3e, 0xa1, 0x09, 0x31, 0x2d, 0xbd, 0x6e, 0x83, 0x8b, 0x90, 0x2f, 0x2d - ], - v: 500000000, - rcm: [ - 0xe5, 0x57, 0x85, 0x13, 0x55, 0x74, 0x7c, 0x09, 0xac, 0x59, 0x01, 0x3c, 0xbd, 0xe8, 0x59, 0x80, 0x96, 0x4e, 0xc1, 0x84, 0x4d, 0x9c, 0x69, 0x67, 0xca, 0x0c, 0x02, 0x9c, 0x84, 0x57, 0xbb, 0x04 - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0x39, 0xb2, 0x41, 0xc9, 0x65, 0xc2, 0x1e, 0x2a, 0xd8, 0xc2, 0x9a, 0x18, 0xe5, 0xb3, 0x1e, 0xee, 0x9b, 0xad, 0x00, 0x63, 0x5f, 0x39, 0xc5, 0x85, 0x9f, 0x07, 0xa1, 0x78, 0xfb, 0x88, 0x5a, 0x9a - ], - cmu: [ - 0xbb, 0x75, 0xc1, 0x98, 0xe5, 0x69, 0x37, 0x93, 0xbd, 0xba, 0x6e, 0xcc, 0xe9, 0x56, 0xb4, 0xb7, 0xd1, 0xa2, 0x46, 0xec, 0xee, 0x53, 0xb4, 0x91, 0x08, 0x36, 0xc4, 0x24, 0x18, 0xad, 0x68, 0x59 - ], - esk: [ - 0x3d, 0xc1, 0x66, 0xd5, 0x6a, 0x1d, 0x62, 0xf5, 0xa8, 0xd7, 0x55, 0x1d, 0xb5, 0xfd, 0x93, 0x13, 0xe8, 0xc7, 0x20, 0x3d, 0x99, 0x6a, 0xf7, 0xd4, 0x77, 0x08, 0x37, 0x56, 0xd5, 0x9a, 0xf8, 0x0d - ], - epk: [ - 0x54, 0x87, 0x9e, 0x32, 0x0d, 0x16, 0x8e, 0x81, 0xd6, 0xe3, 0x98, 0x87, 0x8f, 0x03, 0x91, 0xaa, 0x90, 0xc0, 0xab, 0xa7, 0x3c, 0xde, 0xf8, 0xba, 0x74, 0x62, 0x67, 0x93, 0x5a, 0x9f, 0xc8, 0x11 - ], - shared_secret: [ - 0x33, 0x5c, 0x01, 0x5a, 0x83, 0x38, 0xb0, 0x8e, 0x44, 0x51, 0x06, 0x49, 0xd8, 0x01, 0x78, 0x03, 0xab, 0x9d, 0x26, 0x71, 0x32, 0xaf, 0xe5, 0xb1, 0x1f, 0x18, 0x1c, 0x69, 0x42, 0x34, 0x7e, 0xe5 - ], - k_enc: [ - 0xce, 0xf1, 0x2f, 0xa6, 0xfa, 0x1f, 0xc2, 0xc2, 0x2c, 0x33, 0x87, 0x34, 0xac, 0x75, 0x35, 0xb2, 0x7f, 0xe5, 0x19, 0xf4, 0xef, 0xc1, 0x31, 0x20, 0xb0, 0xe2, 0x3e, 0xf2, 0x8f, 0xd6, 0x65, 0xcf - ], - p_enc: [ - 0x02, 0xb8, 0xfd, 0x08, 0x5d, 0xf4, 0x66, 0x75, 0x8b, 0x8d, 0xef, 0x70, 0x00, 0x65, 0xcd, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0xe5, 0x57, 0x85, 0x13, 0x55, 0x74, 0x7c, 0x09, 0xac, 0x59, 0x01, 0x3c, 0xbd, 0xe8, 0x59, 0x80, 0x96, 0x4e, 0xc1, 0x84, 0x4d, 0x9c, 0x69, 0x67, 0xca, 0x0c, 0x02, 0x9c, 0x84, 0x57, 0xbb, 0x04, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x13, 0xce, 0xec, 0x5a, 0x29, 0x10, 0x88, 0xd7, 0xc0, 0x86, 0x61, 0x9e, 0x42, 0xf8, 0xd9, 0x6e, 0xf4, 0x93, 0xdf, 0x0f, 0xf5, 0xe5, 0x36, 0xf1, 0x64, 0x57, 0xf0, 0x28, 0x04, 0xe9, 0xc3, 0xdc, 0x7e, 0x5f, 0x63, 0x8f, 0xc3, 0xe8, 0x0f, 0xb7, 0x12, 0x4b, 0xdf, 0x1e, 0x2b, 0xf8, 0x2a, 0x8f, 0xb2, 0x0e, 0xa0, 0x52, 0x86, 0x5a, 0xc6, 0xfd, 0x67, 0xb3, 0xd0, 0xa1, 0xe0, 0x15, 0xbc, 0x8b, 0x5d, 0xf1, 0x39, 0x38, 0x53, 0xc9, 0x20, 0x39, 0x37, 0x2b, 0x7c, 0x20, 0x4b, 0x56, 0x11, 0x2b, 0x59, 0xb7, 0x4b, 0x49, 0x70, 0x9b, 0x1b, 0x16, 0x10, 0x94, 0x9c, 0xd0, 0x2f, 0xc1, 0xb6, 0xa4, 0x4c, 0x07, 0x82, 0xf3, 0xf0, 0x9c, 0x86, 0x17, 0x66, 0x03, 0xe4, 0x07, 0x2d, 0xf9, 0xdf, 0x9e, 0x76, 0xcd, 0xbc, 0x5b, 0x98, 0x25, 0xb1, 0x9e, 0x49, 0x97, 0xd4, 0xa7, 0x77, 0x5f, 0x14, 0x26, 0xed, 0x1a, 0x28, 0xb9, 0x8b, 0xe9, 0x51, 0x31, 0x87, 0x91, 0x42, 0x12, 0xb8, 0xc2, 0x69, 0xa2, 0x9a, 0x58, 0xb3, 0xfc, 0x1a, 0x21, 0x7a, 0x95, 0x07, 0xe0, 0xf3, 0x98, 0xa0, 0x7d, 0xd6, 0x46, 0x23, 0x99, 0xeb, 0x5a, 0xed, 0x9e, 0x13, 0x99, 0xf3, 0x9b, 0x43, 0x4d, 0x23, 0xac, 0xd9, 0x55, 0x4f, 0xf3, 0x40, 0xa1, 0x33, 0x7e, 0xe0, 0xf7, 0x03, 0x67, 0x44, 0xbc, 0x8e, 0x60, 0x97, 0xca, 0x5b, 0x45, 0xa2, 0xb0, 0x88, 0x4b, 0xa0, 0x02, 0xbb, 0xb3, 0xc8, 0x38, 0x90, 0x0c, 0xfa, 0x9c, 0x88, 0x15, 0x24, 0x48, 0xc1, 0x8e, 0x10, 0x30, 0x4b, 0xad, 0xbe, 0xca, 0xb6, 0x05, 0x3a, 0x13, 0xe6, 0xf3, 0x45, 0x9e, 0xb1, 0x4c, 0x05, 0x8d, 0x19, 0xcb, 0x2e, 0xa1, 0x76, 0xe6, 0xb8, 0x9f, 0x3f, 0x04, 0x8a, 0x8d, 0x4a, 0x81, 0x0b, 0xc0, 0x0a, 0xe5, 0xc1, 0xa9, 0x08, 0xa6, 0x91, 0x5f, 0xb7, 0xe3, 0xb8, 0xd4, 0xd0, 0xbd, 0xe1, 0xed, 0x7f, 0x28, 0xdd, 0x56, 0xf7, 0xb3, 0x39, 0xba, 0xc8, 0x39, 0xe7, 0x93, 0x8a, 0x05, 0xa6, 0x80, 0x5c, 0x28, 0x7f, 0x2e, 0x42, 0x4a, 0x3c, 0x21, 0x90, 0x36, 0x77, 0xd9, 0x1a, 0x03, 0x48, 0x3d, 0xc8, 0x69, 0x2a, 0xee, 0x97, 0xfa, 0x0c, 0xa9, 0x6c, 0x1e, 0xdb, 0xb7, 0xf0, 0x14, 0x3d, 0xc7, 0x27, 0x53, 0xa2, 0x15, 0xc8, 0xc8, 0x05, 0x73, 0xe6, 0x17, 0x19, 0xf0, 0x34, 0x3b, 0x3a, 0x7a, 0x7f, 0x55, 0x65, 0xb5, 0xae, 0x8c, 0xc7, 0x8f, 0x0d, 0x8b, 0x2f, 0x62, 0xcb, 0x80, 0xa4, 0xe8, 0x49, 0x3d, 0x1e, 0xa8, 0xd2, 0x98, 0xb8, 0xab, 0x8f, 0x52, 0xcb, 0x87, 0x18, 0x93, 0x4d, 0xc3, 0x15, 0x54, 0xf2, 0x79, 0x14, 0x41, 0x5e, 0xd9, 0xd3, 0x66, 0x45, 0x55, 0x3e, 0xcb, 0x04, 0x26, 0xdf, 0x21, 0xb6, 0xfd, 0x3a, 0xf9, 0x45, 0x67, 0x81, 0x06, 0xb1, 0xef, 0x8f, 0xdb, 0x89, 0xd6, 0x9a, 0x60, 0x9e, 0xe4, 0x34, 0x50, 0xd7, 0x5a, 0xbf, 0x91, 0xf7, 0x49, 0x42, 0xdd, 0x37, 0x1f, 0x2d, 0xac, 0xae, 0x43, 0x71, 0x45, 0x63, 0x8a, 0xbb, 0x11, 0x03, 0x99, 0xce, 0x11, 0xe4, 0xa1, 0x0a, 0x44, 0x4f, 0x43, 0x95, 0x88, 0x00, 0x00, 0x1e, 0x72, 0x71, 0xa0, 0xb7, 0xc5, 0x0c, 0x35, 0xc3, 0x38, 0x30, 0x21, 0x7d, 0xbd, 0xd9, 0xc5, 0x9f, 0x0b, 0x2e, 0xa5, 0xdf, 0xd5, 0xf1, 0x3d, 0xc6, 0x5e, 0x96, 0x46, 0xdb, 0x28, 0xd4, 0x35, 0x8e, 0xde, 0x29, 0x1a, 0xe1, 0xf7, 0xab, 0x79, 0x67, 0x02, 0x7b, 0xf2, 0xa9, 0xcf, 0x02, 0x08, 0x51, 0x65, 0x00, 0x87, 0x8a, 0xa7, 0x6e, 0x12, 0x7f, 0x31, 0x2e, 0x1d, 0xc7, 0x67, 0x09, 0x36, 0x6e, 0xe9, 0x0e, 0xfb, 0x18, 0x5b, 0x09, 0x05, 0x56, 0x1c, 0x11, 0x8d, 0xa3, 0x28, 0x76, 0xc5, 0x2d, 0x86, 0x20, 0x65, 0xac, 0xa8, 0x60, 0x5a, 0x6d, 0xd6, 0x50, 0x15, 0x25, 0x31, 0x4c, 0x16, 0x37, 0x1d, 0xdf, 0x69, 0xbc, 0x2f, 0xc0, 0x97, 0xef, 0x27, 0xc8, 0x06, 0xe3, 0xcb, 0x26, 0x89, 0x4c, 0x44, 0xf7, 0xe6, 0x17, 0xed, 0xb2, 0x78, 0xbd, 0x08, 0x88, 0x32, 0x72, 0x55, 0x16, 0x48, 0xd8, 0xa1, 0xba, 0x7f, 0x26, 0x1e, 0x1a, 0x99, 0x02, 0xbf, 0xd0, 0xaf, 0x21, 0x27, 0x9f, 0xdd, 0x13, 0x49, 0x5e, 0xdb, 0x68, 0xcd, 0xa6, 0x14, 0x70, 0x26, 0xab, 0x3f, 0x9f, 0x38, 0x00, 0x16, 0x09, 0x2f, 0x23, 0x11, 0x62, 0xae, 0x70, 0x9a, 0x43, 0x6e, 0x47, 0x82, 0xb5, 0x22, 0x26, 0x33, 0x68, 0x1a, 0xc9, 0xb6 - ], - ock: [ - 0x77, 0x2b, 0x15, 0x0a, 0xa0, 0x73, 0x60, 0xfe, 0x8b, 0xcb, 0x66, 0xc6, 0x0c, 0xf5, 0x65, 0x0c, 0xec, 0xbb, 0x30, 0x43, 0xc4, 0x7d, 0xdc, 0x5e, 0xd4, 0x04, 0x02, 0x63, 0x37, 0x88, 0x47, 0x31 - ], - op: [ - 0xdf, 0x7d, 0xc9, 0xf5, 0x82, 0x3c, 0x2f, 0x25, 0x12, 0x07, 0xc3, 0xd0, 0x75, 0x47, 0x8c, 0x54, 0x59, 0x8f, 0x2b, 0x59, 0x3e, 0xa1, 0x09, 0x31, 0x2d, 0xbd, 0x6e, 0x83, 0x8b, 0x90, 0x2f, 0x2d, 0x3d, 0xc1, 0x66, 0xd5, 0x6a, 0x1d, 0x62, 0xf5, 0xa8, 0xd7, 0x55, 0x1d, 0xb5, 0xfd, 0x93, 0x13, 0xe8, 0xc7, 0x20, 0x3d, 0x99, 0x6a, 0xf7, 0xd4, 0x77, 0x08, 0x37, 0x56, 0xd5, 0x9a, 0xf8, 0x0d - ], - c_out: [ - 0xe7, 0xce, 0x81, 0x95, 0xad, 0x76, 0xca, 0xb4, 0xc7, 0xde, 0x74, 0x9e, 0x65, 0x44, 0x9e, 0x2f, 0xf2, 0x09, 0x90, 0xc3, 0x38, 0x54, 0x0a, 0xdd, 0x42, 0x55, 0x6e, 0xbd, 0x92, 0x9a, 0x5e, 0xff, 0x86, 0x1a, 0x62, 0x2e, 0xac, 0x03, 0x3b, 0x7e, 0x67, 0xea, 0x90, 0x86, 0x6e, 0xd1, 0xd1, 0x5c, 0x04, 0xc0, 0x24, 0x3f, 0x14, 0x80, 0x8c, 0x60, 0x56, 0x8a, 0x9e, 0xe2, 0x2d, 0x66, 0x62, 0x02, 0x51, 0x52, 0xbe, 0x07, 0xdd, 0xc8, 0x8b, 0x2b, 0x89, 0x23, 0x5b, 0xf5, 0xaa, 0x9e, 0xdf, 0xa3 - ], - }, - TestVector { - ovk: [ - 0x61, 0x1f, 0x89, 0x77, 0x5b, 0x10, 0x86, 0xbc, 0x30, 0xc1, 0x97, 0xa4, 0x3b, 0xbb, 0x3a, 0x55, 0xd3, 0xfd, 0x4a, 0xac, 0x41, 0x82, 0x68, 0xbd, 0x8e, 0x6c, 0x9d, 0xe8, 0xe9, 0x32, 0xe2, 0x3c - ], - ivk: [ - 0xd0, 0xc2, 0xfb, 0xf8, 0x7a, 0x28, 0xcd, 0xce, 0x8e, 0x22, 0x98, 0x96, 0xa9, 0x44, 0xd0, 0x74, 0x2f, 0xe1, 0x5c, 0x61, 0x88, 0x8f, 0x10, 0x39, 0x18, 0x9a, 0x8e, 0x80, 0x5c, 0x6c, 0xdf, 0x06 - ], - default_d: [ - 0x91, 0xd8, 0x0c, 0x32, 0x53, 0x00, 0xd9, 0x7e, 0x0c, 0x3b, 0x05 - ], - default_pk_d: [ - 0xe7, 0x25, 0xc0, 0x2a, 0xc9, 0x18, 0x84, 0xe1, 0x45, 0x2e, 0x5b, 0xbe, 0x8d, 0xbf, 0xb1, 0xe0, 0xcd, 0xee, 0x00, 0x56, 0xdc, 0x2f, 0x5f, 0xc1, 0x92, 0x39, 0xb2, 0x0b, 0x7b, 0xe7, 0x62, 0xe0 - ], - v: 600000000, - rcm: [ - 0x68, 0xf0, 0x61, 0x04, 0x60, 0x6b, 0x0c, 0x54, 0x49, 0x84, 0x5f, 0xf4, 0xc6, 0x5f, 0x73, 0xe9, 0x0f, 0x45, 0xef, 0x5a, 0x43, 0xc9, 0xd7, 0x4c, 0xb2, 0xc8, 0x5c, 0xf5, 0x6c, 0x94, 0xc0, 0x02 - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0x61, 0x01, 0x36, 0xc4, 0x2a, 0x72, 0x80, 0xc0, 0x3c, 0xa8, 0xa3, 0x19, 0x4d, 0x39, 0x6f, 0x28, 0x1d, 0x2c, 0xa3, 0x75, 0xfa, 0xa2, 0x31, 0xfe, 0x43, 0x39, 0x88, 0x96, 0x0b, 0x28, 0xdf, 0xad - ], - cmu: [ - 0x7c, 0x4c, 0x61, 0x63, 0xa4, 0x0a, 0xc2, 0x3a, 0x3c, 0x70, 0xab, 0x61, 0xfb, 0x79, 0xbf, 0x75, 0xdc, 0x4c, 0xc9, 0x86, 0xf7, 0x7b, 0xcb, 0x6b, 0x28, 0x3a, 0xb7, 0xc0, 0x98, 0x8c, 0x97, 0x23 - ], - esk: [ - 0x4e, 0x41, 0x8c, 0x3c, 0x54, 0x3d, 0x6b, 0xf0, 0x15, 0x31, 0x74, 0xa0, 0x4e, 0x85, 0x44, 0xae, 0x7c, 0x58, 0x09, 0x2a, 0x2e, 0x4e, 0x5d, 0x7d, 0x9c, 0x67, 0x2a, 0x3a, 0x79, 0x11, 0x09, 0x03 - ], - epk: [ - 0x7a, 0x9e, 0xd4, 0xc1, 0xfb, 0xe3, 0x39, 0xd8, 0xbf, 0xab, 0x2d, 0xca, 0x72, 0xde, 0x75, 0xe5, 0x7b, 0x9a, 0x8f, 0x79, 0x52, 0xb3, 0x8f, 0xb1, 0xc6, 0x02, 0x76, 0xa7, 0xf8, 0xd9, 0x61, 0x6b - ], - shared_secret: [ - 0x5c, 0x9b, 0x08, 0xfd, 0xd7, 0x81, 0x70, 0x9f, 0xeb, 0x1a, 0x0b, 0xa1, 0xc0, 0x6a, 0x1d, 0x1a, 0x9c, 0xb3, 0xc6, 0x95, 0x9e, 0xbf, 0x88, 0x4f, 0x32, 0xb3, 0x5e, 0x06, 0x8d, 0x98, 0xc0, 0xaf - ], - k_enc: [ - 0x68, 0x55, 0x03, 0x94, 0x2d, 0x0d, 0xf2, 0xc7, 0xf5, 0x8f, 0x89, 0x68, 0xac, 0x6b, 0x56, 0xa3, 0x90, 0x3d, 0x7c, 0x9e, 0x7d, 0xea, 0xb7, 0x4f, 0x1d, 0xe9, 0xf6, 0x69, 0x40, 0x1e, 0x6a, 0xcb - ], - p_enc: [ - 0x02, 0x91, 0xd8, 0x0c, 0x32, 0x53, 0x00, 0xd9, 0x7e, 0x0c, 0x3b, 0x05, 0x00, 0x46, 0xc3, 0x23, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x68, 0xf0, 0x61, 0x04, 0x60, 0x6b, 0x0c, 0x54, 0x49, 0x84, 0x5f, 0xf4, 0xc6, 0x5f, 0x73, 0xe9, 0x0f, 0x45, 0xef, 0x5a, 0x43, 0xc9, 0xd7, 0x4c, 0xb2, 0xc8, 0x5c, 0xf5, 0x6c, 0x94, 0xc0, 0x02, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x93, 0x12, 0xc1, 0x3c, 0x23, 0x2d, 0x33, 0x9f, 0x6f, 0x63, 0x38, 0x13, 0xa1, 0xc3, 0xf0, 0x44, 0xcb, 0xf3, 0x94, 0x24, 0x67, 0x01, 0x0f, 0x5a, 0x28, 0xc2, 0xa0, 0x51, 0x74, 0xf5, 0x4a, 0xc1, 0xbf, 0x9e, 0x56, 0x71, 0x2d, 0x7e, 0xe8, 0xf6, 0x92, 0xa4, 0x0e, 0x8f, 0x26, 0x8b, 0xbb, 0x55, 0x74, 0xdf, 0x0f, 0x08, 0x04, 0x62, 0x98, 0xcd, 0x41, 0xb8, 0xea, 0xb6, 0xac, 0xa9, 0x15, 0x60, 0x32, 0xf4, 0xfa, 0x68, 0xbc, 0x6c, 0xc0, 0xa1, 0x02, 0xb5, 0xb8, 0x48, 0x8d, 0xea, 0xa7, 0x2d, 0x65, 0xac, 0x47, 0xe9, 0x7d, 0xf6, 0x26, 0xce, 0x7a, 0x97, 0x4e, 0xd0, 0x04, 0x0d, 0x69, 0x4e, 0x85, 0x9d, 0x4b, 0xd5, 0x35, 0x16, 0xb0, 0xc2, 0xa9, 0x84, 0x9d, 0x4d, 0xc7, 0xc8, 0x1c, 0x49, 0x56, 0xf6, 0xb2, 0xdd, 0xf3, 0xf3, 0xb7, 0x40, 0x5b, 0x71, 0x61, 0xaf, 0xbc, 0x7d, 0x28, 0x12, 0x0e, 0xd7, 0xb0, 0x2d, 0xa1, 0x2d, 0x13, 0xc8, 0x0d, 0x29, 0xb3, 0xda, 0x16, 0x3b, 0x09, 0x4c, 0xcb, 0xb8, 0xd9, 0x13, 0xa3, 0xa3, 0xa1, 0x13, 0xd6, 0x72, 0x24, 0x5f, 0xdf, 0xbb, 0x72, 0xc6, 0xea, 0xaa, 0x15, 0xe1, 0x6b, 0xfd, 0xdc, 0xcb, 0x61, 0x1b, 0xf2, 0xaf, 0x92, 0x59, 0xbb, 0x0e, 0x12, 0x89, 0x31, 0xa6, 0xa3, 0x45, 0x03, 0xf6, 0xfd, 0x77, 0xbf, 0xb0, 0x9c, 0x22, 0xd5, 0x86, 0x6f, 0xc4, 0x80, 0x26, 0xf8, 0x14, 0xc2, 0x61, 0xfd, 0x74, 0x41, 0xe8, 0xe2, 0x43, 0x81, 0x7c, 0xc9, 0xd4, 0x52, 0x69, 0x05, 0x54, 0xbd, 0x94, 0x82, 0x57, 0x76, 0x26, 0xfe, 0xf7, 0x60, 0x6c, 0x39, 0x09, 0xb3, 0x14, 0x86, 0x89, 0x22, 0x2a, 0x36, 0x56, 0x59, 0x2c, 0xfe, 0x37, 0xbb, 0xbc, 0xf0, 0x74, 0x91, 0xbb, 0xa1, 0x19, 0xe0, 0x92, 0x93, 0x81, 0x98, 0xcc, 0xa0, 0xab, 0x9b, 0xa3, 0xae, 0x4f, 0x27, 0x06, 0xa3, 0xaa, 0x90, 0x1b, 0xa0, 0x3d, 0xda, 0x1e, 0x09, 0xe1, 0xfb, 0x26, 0xa5, 0xd7, 0x0b, 0x30, 0x30, 0x90, 0x9d, 0x9d, 0x32, 0x03, 0xc1, 0x4b, 0x68, 0xfb, 0xec, 0x9d, 0xf7, 0xb9, 0x78, 0xa3, 0x2f, 0x4e, 0xaf, 0x4a, 0x80, 0x85, 0xe7, 0x20, 0xd9, 0x37, 0xac, 0xf7, 0x3a, 0xca, 0x66, 0x3d, 0x21, 0xde, 0x88, 0xc7, 0xd6, 0xc3, 0xb3, 0xac, 0xab, 0x9d, 0xb9, 0x31, 0xc9, 0xc9, 0x6e, 0x56, 0xda, 0x1b, 0x8e, 0x06, 0x6d, 0xd8, 0x6b, 0x58, 0x78, 0x19, 0xf9, 0xef, 0xa2, 0x4d, 0x34, 0x29, 0xe5, 0x6d, 0x98, 0x1c, 0x68, 0xfe, 0x49, 0xaa, 0x1f, 0xfa, 0x1e, 0xc1, 0xd3, 0x18, 0xc8, 0x6c, 0x60, 0x28, 0xbf, 0xa2, 0x92, 0xfa, 0x6a, 0x6d, 0xf1, 0x1f, 0x8e, 0x9a, 0x75, 0x31, 0x1e, 0x0e, 0x73, 0xfd, 0xc8, 0x1b, 0xd5, 0xf9, 0x85, 0x25, 0x97, 0x01, 0x9f, 0x1b, 0x55, 0xf0, 0x97, 0x33, 0xee, 0x51, 0x29, 0xb5, 0x0c, 0xb2, 0x05, 0xb6, 0xe0, 0x06, 0xda, 0x67, 0x73, 0x3d, 0x52, 0xb8, 0x4d, 0xae, 0xe2, 0x6e, 0xf6, 0x0e, 0xf0, 0x99, 0x20, 0xe3, 0x5e, 0xa1, 0x7a, 0xa1, 0x6a, 0x95, 0xf5, 0x41, 0x9c, 0x3e, 0x23, 0x7a, 0xd2, 0xb5, 0x9d, 0xc8, 0xb6, 0xd7, 0xc3, 0x2a, 0xbb, 0xfa, 0x8e, 0xaf, 0xb7, 0x43, 0xda, 0x87, 0x6b, 0x18, 0x59, 0x78, 0xe4, 0xf4, 0x43, 0x2a, 0x44, 0xb4, 0x63, 0x21, 0x53, 0x09, 0xb9, 0x6a, 0xa5, 0x74, 0x6a, 0x4a, 0xa6, 0xe9, 0x34, 0xd2, 0xf3, 0x4d, 0xed, 0x72, 0xbf, 0xa4, 0x00, 0x08, 0x8b, 0xd4, 0x97, 0x0e, 0xa7, 0x74, 0x01, 0x99, 0x8e, 0xd3, 0xf8, 0xa4, 0xd0, 0x74, 0x5b, 0x4b, 0xe2, 0xb0, 0xef, 0x7f, 0x91, 0x23, 0xde, 0x06, 0x4c, 0xa8, 0x98, 0x6e, 0xde, 0xf6, 0x49, 0xbb, 0x01, 0x13, 0x71, 0x71, 0x96, 0x0b, 0x97, 0x00, 0x4d, 0x8c, 0xa5, 0x95, 0xea, 0x60, 0xfa, 0x97, 0xd9, 0x2a, 0x03, 0x54, 0xe5, 0x25, 0xdf, 0x7e, 0xc1, 0x5f, 0xa5, 0x61, 0x46, 0x18, 0x77, 0xdb, 0xb1, 0xab, 0x36, 0x2e, 0x1f, 0x4a, 0x22, 0x95, 0x2c, 0x97, 0x5c, 0x5a, 0xfa, 0x4b, 0x26, 0xe1, 0xf0, 0x53, 0x8a, 0x53, 0x47, 0x25, 0x59, 0x73, 0x0a, 0x1a, 0x85, 0xac, 0xeb, 0x7e, 0x08, 0x1b, 0x91, 0xc4, 0xb1, 0xc2, 0x0b, 0x4e, 0x89, 0x00, 0x80, 0xdc, 0xc3, 0xd9, 0xde, 0x84, 0xfc, 0xb5, 0x1e, 0x76, 0xe1, 0x52, 0x7f, 0xef, 0x0f, 0x3e, 0x7c, 0x53, 0x18, 0xd3, 0xb5, 0x1e, 0x08, 0x7c, 0x6b, 0x24, 0x14, 0xc7, 0x41, 0xa4, 0x8c, 0x06, 0x41, 0x5b - ], - ock: [ - 0xef, 0x11, 0x62, 0x27, 0x4d, 0xde, 0x33, 0xcd, 0x97, 0x69, 0xbc, 0x8e, 0xcf, 0x52, 0x52, 0x10, 0x83, 0xe2, 0x46, 0xfd, 0xeb, 0x50, 0xce, 0x36, 0xb3, 0x34, 0xc4, 0x7f, 0x98, 0x52, 0x19, 0x0e - ], - op: [ - 0xe7, 0x25, 0xc0, 0x2a, 0xc9, 0x18, 0x84, 0xe1, 0x45, 0x2e, 0x5b, 0xbe, 0x8d, 0xbf, 0xb1, 0xe0, 0xcd, 0xee, 0x00, 0x56, 0xdc, 0x2f, 0x5f, 0xc1, 0x92, 0x39, 0xb2, 0x0b, 0x7b, 0xe7, 0x62, 0xe0, 0x4e, 0x41, 0x8c, 0x3c, 0x54, 0x3d, 0x6b, 0xf0, 0x15, 0x31, 0x74, 0xa0, 0x4e, 0x85, 0x44, 0xae, 0x7c, 0x58, 0x09, 0x2a, 0x2e, 0x4e, 0x5d, 0x7d, 0x9c, 0x67, 0x2a, 0x3a, 0x79, 0x11, 0x09, 0x03 - ], - c_out: [ - 0x26, 0x2e, 0x7e, 0x3a, 0x8e, 0x00, 0x17, 0x2c, 0xad, 0xf8, 0x7a, 0x68, 0x17, 0x26, 0x29, 0xce, 0x5c, 0x46, 0xb8, 0x6a, 0xe6, 0x77, 0x98, 0xb8, 0xe1, 0xf7, 0xbe, 0xf8, 0x0f, 0x1b, 0x55, 0x5b, 0xee, 0x61, 0xb1, 0x74, 0x0c, 0xa6, 0xfd, 0x65, 0x20, 0x5a, 0x66, 0xa5, 0x81, 0x36, 0x76, 0xdc, 0x4b, 0xf3, 0xb7, 0x86, 0x86, 0x43, 0x87, 0xb9, 0xbe, 0x99, 0xae, 0x6c, 0x15, 0xb2, 0xfc, 0xf1, 0x86, 0x05, 0xfd, 0x1d, 0xfd, 0x12, 0xa5, 0xd1, 0x0a, 0x43, 0xec, 0xa6, 0xb0, 0xed, 0xfc, 0xb5 - ], - }, - TestVector { - ovk: [ - 0xda, 0x02, 0x6d, 0x6e, 0x32, 0xc4, 0xc9, 0xf4, 0x5a, 0x79, 0x3d, 0xb3, 0x23, 0xf8, 0x2b, 0xe1, 0xec, 0xcd, 0x30, 0x49, 0x3d, 0xc0, 0x70, 0x89, 0x35, 0xe0, 0xb4, 0x2e, 0x12, 0x5b, 0xfe, 0xd5 - ], - ivk: [ - 0xff, 0x6a, 0xc3, 0x6c, 0x82, 0xc1, 0x94, 0x57, 0x1e, 0x3f, 0xba, 0x8b, 0xdb, 0x26, 0x7a, 0xc9, 0x0e, 0xdb, 0x6c, 0xa7, 0xb4, 0x21, 0x60, 0x60, 0xe8, 0x26, 0xa4, 0x3a, 0x93, 0xde, 0x3c, 0x07 - ], - default_d: [ - 0xce, 0x57, 0xe4, 0x2f, 0x7d, 0x60, 0x05, 0xd0, 0xc3, 0x28, 0xb2 - ], - default_pk_d: [ - 0x75, 0x8a, 0x9a, 0xd6, 0x6f, 0xe3, 0x1a, 0x08, 0x30, 0xcb, 0x5d, 0x39, 0x89, 0x4d, 0x62, 0x23, 0xad, 0xaa, 0x11, 0x08, 0xc0, 0xae, 0xcd, 0x54, 0xcc, 0xd9, 0xfd, 0x1c, 0x1e, 0xd5, 0xe7, 0x62 - ], - v: 700000000, - rcm: [ - 0x49, 0xf9, 0x0b, 0x47, 0xfd, 0x52, 0xfe, 0xe7, 0xc1, 0xc8, 0x1f, 0x0d, 0xcb, 0x5b, 0x74, 0xc3, 0xfb, 0x9b, 0x3e, 0x03, 0x97, 0x6f, 0x8b, 0x75, 0x24, 0xea, 0xba, 0xd0, 0x08, 0x89, 0x21, 0x07 - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0x51, 0x98, 0xc0, 0xe1, 0x10, 0x6d, 0x59, 0xab, 0x12, 0x9e, 0xb1, 0x86, 0xab, 0x4a, 0xa4, 0x05, 0x74, 0x87, 0x6e, 0xa0, 0x8f, 0x3f, 0xb5, 0x7f, 0xf6, 0x68, 0x42, 0x63, 0x20, 0x0a, 0x75, 0xe0 - ], - cmu: [ - 0x0a, 0x2d, 0x48, 0xf2, 0xc9, 0x82, 0x8a, 0xb5, 0x0b, 0x36, 0xed, 0x04, 0xb9, 0x76, 0x13, 0xcd, 0x90, 0x83, 0xe1, 0x85, 0xb9, 0xce, 0xe2, 0xf1, 0xcf, 0xb1, 0xd6, 0x2d, 0x93, 0x7d, 0x99, 0x2f - ], - esk: [ - 0x6d, 0xa9, 0x45, 0xd3, 0x03, 0x81, 0xc2, 0xee, 0xd2, 0xb8, 0x1d, 0x27, 0x08, 0x6d, 0x22, 0x48, 0xe7, 0xc4, 0x49, 0xfe, 0x50, 0x9b, 0x38, 0xe2, 0x76, 0x79, 0x11, 0x89, 0xea, 0xbc, 0x46, 0x02 - ], - epk: [ - 0x31, 0x60, 0xb3, 0xab, 0x25, 0x2e, 0xbd, 0x6b, 0xfb, 0x7f, 0x14, 0x8c, 0x14, 0x0d, 0xf5, 0x90, 0xb3, 0x29, 0x9e, 0xc4, 0x1f, 0xf4, 0xe2, 0xc4, 0x48, 0x2d, 0x8b, 0x15, 0x00, 0xe2, 0x4d, 0xec - ], - shared_secret: [ - 0x0c, 0x77, 0x10, 0x2f, 0x32, 0x04, 0x37, 0x25, 0x66, 0x0d, 0xf2, 0x41, 0x48, 0xf0, 0x60, 0x6d, 0xe6, 0x37, 0xd5, 0x92, 0xb6, 0xf6, 0x4e, 0x1f, 0xe3, 0x17, 0x90, 0x83, 0x0f, 0x4c, 0xdc, 0x5a - ], - k_enc: [ - 0x25, 0x8d, 0x67, 0x9b, 0x11, 0x4a, 0x9e, 0x1d, 0x2b, 0x29, 0xfc, 0x6b, 0xbc, 0x0e, 0xde, 0x59, 0x70, 0x13, 0x9d, 0x0a, 0x21, 0x79, 0x54, 0x8d, 0xd5, 0x7a, 0xb7, 0x63, 0x46, 0x0b, 0xb5, 0x94 - ], - p_enc: [ - 0x02, 0xce, 0x57, 0xe4, 0x2f, 0x7d, 0x60, 0x05, 0xd0, 0xc3, 0x28, 0xb2, 0x00, 0x27, 0xb9, 0x29, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x49, 0xf9, 0x0b, 0x47, 0xfd, 0x52, 0xfe, 0xe7, 0xc1, 0xc8, 0x1f, 0x0d, 0xcb, 0x5b, 0x74, 0xc3, 0xfb, 0x9b, 0x3e, 0x03, 0x97, 0x6f, 0x8b, 0x75, 0x24, 0xea, 0xba, 0xd0, 0x08, 0x89, 0x21, 0x07, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x8d, 0xf1, 0xd9, 0x6b, 0x3b, 0x0d, 0x11, 0x45, 0xa8, 0x4b, 0x9c, 0xe9, 0x0a, 0x24, 0xf9, 0xa2, 0x4c, 0x29, 0xbe, 0x05, 0x54, 0x54, 0x80, 0xf4, 0x43, 0xae, 0xb4, 0xe1, 0x62, 0x41, 0x28, 0xe0, 0x7d, 0x61, 0x56, 0x14, 0x06, 0xea, 0x85, 0x28, 0xb0, 0xc6, 0x82, 0xec, 0xdf, 0x19, 0x4b, 0x77, 0x90, 0x06, 0x32, 0x3d, 0x72, 0xce, 0x21, 0xda, 0x9c, 0xaf, 0x5f, 0x71, 0x05, 0x9f, 0x94, 0xfe, 0x08, 0xbb, 0xea, 0x1c, 0x3c, 0xb8, 0x20, 0x81, 0x9b, 0x94, 0x44, 0x15, 0xfb, 0x86, 0x91, 0x76, 0xaa, 0x54, 0x43, 0xda, 0x0e, 0xc6, 0xf1, 0xf1, 0x3b, 0x68, 0x9b, 0x4a, 0xe1, 0x9f, 0xfc, 0x6c, 0xed, 0xa3, 0xfd, 0x92, 0xd8, 0x33, 0x43, 0x4d, 0x99, 0x87, 0x2f, 0xed, 0x90, 0xb7, 0xd4, 0xc9, 0x85, 0xc1, 0x95, 0x6d, 0xe6, 0x59, 0x1f, 0x80, 0x24, 0xbb, 0x4e, 0x6f, 0x9d, 0x41, 0xf8, 0x7c, 0x6e, 0xe9, 0x69, 0xf5, 0xfd, 0x91, 0x81, 0x59, 0x57, 0x1c, 0xd8, 0x59, 0xc7, 0x90, 0x53, 0x03, 0x0c, 0x61, 0xc6, 0x32, 0x67, 0x34, 0xce, 0xba, 0x98, 0x04, 0xcc, 0x2b, 0x3d, 0x09, 0x98, 0xad, 0x99, 0xda, 0x2e, 0xb1, 0xa9, 0x8b, 0xea, 0x62, 0x65, 0xce, 0x10, 0xcb, 0xfa, 0xdd, 0xb5, 0x8e, 0x17, 0x33, 0x73, 0x4c, 0xcb, 0xd4, 0xd7, 0x27, 0x18, 0x06, 0xdf, 0xfa, 0xd1, 0x6e, 0xb7, 0xca, 0x90, 0x69, 0xea, 0x8e, 0xbd, 0xb7, 0x16, 0xed, 0xf7, 0x6f, 0x40, 0x87, 0xee, 0xc6, 0xf8, 0xbe, 0x47, 0xa6, 0x6c, 0xad, 0x2f, 0x4e, 0xc3, 0x8f, 0xc9, 0x0f, 0x0d, 0xa2, 0x06, 0xd5, 0x8b, 0xf1, 0x72, 0x7f, 0x0e, 0x31, 0xe2, 0xe2, 0xb6, 0xb0, 0xe5, 0xd0, 0x23, 0x1e, 0x4f, 0xab, 0x59, 0x5e, 0xbd, 0x27, 0x1a, 0x37, 0x93, 0x74, 0xbb, 0x9b, 0xee, 0xab, 0x9e, 0xa7, 0xf8, 0xe7, 0xe3, 0x89, 0x28, 0x36, 0x83, 0x13, 0x4d, 0x88, 0x68, 0xa5, 0xb6, 0x61, 0x24, 0xe5, 0x55, 0xdc, 0x26, 0x9d, 0x5e, 0x11, 0x44, 0xb3, 0xb8, 0x58, 0xf8, 0x36, 0x6a, 0xa3, 0xcb, 0x70, 0x1f, 0x2a, 0xb3, 0x9f, 0x79, 0xfb, 0x45, 0x0f, 0x9d, 0x29, 0x21, 0xfd, 0x51, 0xbf, 0x2f, 0xf2, 0xb1, 0x17, 0xb4, 0x13, 0x1b, 0xd4, 0xe7, 0x01, 0x38, 0x13, 0x8f, 0xa5, 0x3b, 0x0f, 0xba, 0x1e, 0xa0, 0x9e, 0xf7, 0x7e, 0x1e, 0x28, 0x74, 0x2b, 0xa8, 0x8d, 0x62, 0x0d, 0x04, 0x78, 0xe0, 0x1e, 0x8d, 0x96, 0xb5, 0x20, 0x6f, 0x35, 0xf6, 0x01, 0x92, 0xc6, 0x80, 0xb4, 0x6c, 0x69, 0xa8, 0xe0, 0x87, 0x9d, 0xe3, 0x09, 0xd5, 0xf6, 0x1b, 0xee, 0xa5, 0xfb, 0x1c, 0xcc, 0x0d, 0xa1, 0x6c, 0x13, 0xd8, 0xaf, 0xba, 0xb6, 0xb7, 0x0f, 0xa6, 0x9b, 0x1c, 0x15, 0x3d, 0x74, 0x30, 0x7e, 0x58, 0xd8, 0xac, 0xa7, 0x3e, 0x81, 0x94, 0x4d, 0xda, 0xdd, 0xae, 0x48, 0xc7, 0x15, 0x40, 0xf4, 0xc8, 0x2e, 0xb2, 0xb3, 0xae, 0x26, 0x87, 0x91, 0x3d, 0x93, 0xb3, 0xb1, 0x6d, 0x32, 0x91, 0x88, 0x0e, 0x7a, 0x31, 0x99, 0x0e, 0xc4, 0x0f, 0x97, 0x3d, 0x34, 0xf2, 0x25, 0x40, 0x0c, 0xdd, 0x86, 0x72, 0x66, 0x55, 0x8f, 0xba, 0xff, 0x91, 0x5c, 0xd5, 0xe5, 0x2e, 0x0e, 0x9a, 0xcf, 0x56, 0xb7, 0x83, 0x33, 0x23, 0x18, 0x3d, 0xc7, 0x76, 0x57, 0x40, 0x2d, 0x53, 0x44, 0x5d, 0xe2, 0x73, 0xce, 0x89, 0x66, 0x09, 0x86, 0xbb, 0x7c, 0x91, 0x5f, 0x1f, 0x79, 0xf8, 0x9e, 0x99, 0x9b, 0x01, 0x23, 0xfd, 0xea, 0x8f, 0xb0, 0x5e, 0x8e, 0x81, 0xd5, 0xfc, 0xe9, 0xb0, 0x7b, 0xbe, 0xe0, 0x69, 0x5c, 0xbb, 0x29, 0x99, 0x34, 0xdd, 0x6f, 0x0d, 0x0d, 0xe5, 0xc6, 0x9e, 0xd6, 0x18, 0x45, 0xcb, 0x1f, 0xf7, 0x21, 0xd3, 0xf2, 0xa9, 0x9b, 0x7a, 0xed, 0xe8, 0x63, 0x61, 0x55, 0xf7, 0x17, 0x89, 0x9a, 0x66, 0x8e, 0xb9, 0xf3, 0x38, 0x17, 0xca, 0x02, 0x3b, 0x8c, 0x23, 0x71, 0x36, 0x25, 0x8e, 0x71, 0xff, 0xd7, 0x79, 0x4d, 0xa9, 0x34, 0xa1, 0x8c, 0xec, 0xbc, 0xbd, 0x0f, 0x55, 0x71, 0xd6, 0x97, 0x73, 0xd0, 0xb8, 0x1a, 0x8c, 0x1b, 0xa6, 0x61, 0xe0, 0xc4, 0xcf, 0xdb, 0xa5, 0x23, 0xa3, 0xab, 0x5a, 0x40, 0x0c, 0x0c, 0x61, 0xe2, 0x16, 0xb0, 0x3d, 0x8e, 0xb5, 0x3b, 0xe6, 0x58, 0x13, 0xa5, 0x51, 0x9d, 0x7c, 0xd3, 0xe4, 0xb3, 0xbd, 0x0f, 0x33, 0x9b, 0xad, 0x7a, 0x75, 0xc6, 0x47, 0x8f, 0x77, 0x14, 0x22, 0xb4, 0x7c, 0x5f, 0xbf, 0xa7, 0x80, 0x4f - ], - ock: [ - 0xd5, 0x81, 0x15, 0xd7, 0x77, 0x91, 0xe6, 0x4c, 0x68, 0x2a, 0x55, 0x95, 0x73, 0x54, 0x96, 0x56, 0x95, 0x9d, 0xe4, 0xee, 0xa0, 0xc0, 0x71, 0xc7, 0x80, 0x55, 0x0d, 0x60, 0xc5, 0xf1, 0x61, 0xfb - ], - op: [ - 0x75, 0x8a, 0x9a, 0xd6, 0x6f, 0xe3, 0x1a, 0x08, 0x30, 0xcb, 0x5d, 0x39, 0x89, 0x4d, 0x62, 0x23, 0xad, 0xaa, 0x11, 0x08, 0xc0, 0xae, 0xcd, 0x54, 0xcc, 0xd9, 0xfd, 0x1c, 0x1e, 0xd5, 0xe7, 0x62, 0x6d, 0xa9, 0x45, 0xd3, 0x03, 0x81, 0xc2, 0xee, 0xd2, 0xb8, 0x1d, 0x27, 0x08, 0x6d, 0x22, 0x48, 0xe7, 0xc4, 0x49, 0xfe, 0x50, 0x9b, 0x38, 0xe2, 0x76, 0x79, 0x11, 0x89, 0xea, 0xbc, 0x46, 0x02 - ], - c_out: [ - 0x6c, 0x37, 0xf0, 0xd7, 0xe0, 0xab, 0x23, 0xd5, 0x17, 0x11, 0x33, 0xa0, 0x02, 0x30, 0xf4, 0x05, 0xdc, 0x36, 0x94, 0x6e, 0xa6, 0x74, 0xc8, 0xb5, 0xf9, 0x9c, 0x07, 0x85, 0x86, 0xf8, 0xf4, 0x0c, 0xf9, 0xc3, 0x7f, 0xf7, 0x99, 0x86, 0xc6, 0x1b, 0xbd, 0xec, 0x30, 0x92, 0x86, 0x96, 0xb9, 0x3f, 0xa2, 0x53, 0xf6, 0x80, 0xdc, 0x61, 0x66, 0x58, 0xe0, 0xa8, 0x26, 0x45, 0x0d, 0x0e, 0xd9, 0x76, 0xfe, 0x52, 0xf5, 0x97, 0x94, 0x63, 0x9c, 0xf5, 0x85, 0x40, 0xa1, 0x1c, 0x07, 0x8f, 0x4d, 0xb9 - ], - }, - TestVector { - ovk: [ - 0xbd, 0x39, 0x7c, 0x76, 0x26, 0xdf, 0x00, 0xc4, 0x06, 0x78, 0xa4, 0xca, 0x22, 0x64, 0x6a, 0xd2, 0x13, 0x6b, 0xd4, 0xb0, 0xac, 0x55, 0x11, 0x53, 0x76, 0x03, 0x75, 0x75, 0x24, 0xee, 0x11, 0x4e - ], - ivk: [ - 0xd0, 0xb0, 0x3d, 0x9d, 0x8a, 0xd5, 0x3a, 0xe7, 0x70, 0xc0, 0xc8, 0x70, 0x8e, 0xc9, 0x20, 0xff, 0xd6, 0x01, 0x6c, 0x89, 0x97, 0xeb, 0x3b, 0x24, 0x13, 0xad, 0x17, 0xb8, 0xcd, 0xfd, 0xec, 0x05 - ], - default_d: [ - 0xef, 0x83, 0x2c, 0xf6, 0x6f, 0x46, 0xd8, 0x3e, 0x97, 0xbd, 0x79 - ], - default_pk_d: [ - 0x34, 0xfe, 0x17, 0xbd, 0x7f, 0xbd, 0x16, 0xa1, 0x69, 0x06, 0xd7, 0xfe, 0x2e, 0x62, 0x60, 0xe8, 0xb7, 0x25, 0x9b, 0x7c, 0x6e, 0xa3, 0x45, 0x64, 0x6f, 0x7b, 0x28, 0xf0, 0xb7, 0xe3, 0xc6, 0xce - ], - v: 800000000, - rcm: [ - 0x51, 0x65, 0xaf, 0xf2, 0x2d, 0xd4, 0xed, 0x56, 0xb4, 0xd8, 0x1d, 0x1f, 0x17, 0x1c, 0xc3, 0xd6, 0x43, 0x2f, 0xed, 0x1b, 0xeb, 0xf2, 0x0a, 0x7b, 0xea, 0xb1, 0x2d, 0xb1, 0x42, 0xf9, 0x4a, 0x0c - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0xe1, 0x58, 0xf7, 0x46, 0xdb, 0x3d, 0xcc, 0xfa, 0x41, 0x7a, 0x50, 0xd0, 0xc3, 0x46, 0xcc, 0x6e, 0x6a, 0xad, 0x39, 0x5c, 0x34, 0xeb, 0x49, 0x76, 0x2a, 0xe6, 0x45, 0x3c, 0xbd, 0xe6, 0x97, 0xa8 - ], - cmu: [ - 0xd5, 0x5d, 0x9d, 0xcd, 0xc7, 0x8f, 0x1e, 0x20, 0x78, 0x03, 0xee, 0xb4, 0x17, 0x81, 0xb5, 0x6e, 0xd3, 0xa3, 0x7f, 0x76, 0xe0, 0xa7, 0x1d, 0xc0, 0x9c, 0xda, 0x97, 0x0d, 0x2c, 0x4d, 0x75, 0x46 - ], - esk: [ - 0xab, 0x2a, 0xff, 0x03, 0x32, 0xd5, 0x43, 0xfd, 0x1d, 0x80, 0x23, 0x18, 0x5b, 0x8e, 0xcb, 0x5f, 0x22, 0xa2, 0x9c, 0x32, 0xef, 0x74, 0x16, 0x33, 0x31, 0x6e, 0xee, 0x51, 0x4f, 0xc2, 0x23, 0x09 - ], - epk: [ - 0xa6, 0xdb, 0x6b, 0xc5, 0x3e, 0x74, 0x7f, 0x5d, 0x20, 0xb6, 0xdd, 0x39, 0xae, 0x37, 0x29, 0x67, 0x9a, 0xf3, 0x0a, 0xc8, 0xde, 0x4d, 0x27, 0x09, 0xd3, 0x3e, 0x3b, 0xb9, 0x5a, 0xef, 0x28, 0x9a - ], - shared_secret: [ - 0x91, 0x06, 0x03, 0x61, 0xc3, 0x12, 0x7e, 0x46, 0xf4, 0xfa, 0xe5, 0x05, 0x78, 0xd1, 0x63, 0x39, 0x12, 0x9f, 0x14, 0x64, 0xe5, 0x21, 0xb5, 0x64, 0x15, 0xfd, 0xe7, 0x52, 0x04, 0xc8, 0xd1, 0x93 - ], - k_enc: [ - 0x16, 0xcd, 0xc1, 0xbb, 0x53, 0x0c, 0x0a, 0x0c, 0xc2, 0x03, 0x41, 0x1b, 0x83, 0xa9, 0x17, 0x1c, 0xb7, 0x44, 0xd2, 0x53, 0xdb, 0x99, 0xd2, 0xbb, 0xd6, 0xbc, 0x0b, 0xb2, 0xae, 0x55, 0x9f, 0x32 - ], - p_enc: [ - 0x02, 0xef, 0x83, 0x2c, 0xf6, 0x6f, 0x46, 0xd8, 0x3e, 0x97, 0xbd, 0x79, 0x00, 0x08, 0xaf, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x51, 0x65, 0xaf, 0xf2, 0x2d, 0xd4, 0xed, 0x56, 0xb4, 0xd8, 0x1d, 0x1f, 0x17, 0x1c, 0xc3, 0xd6, 0x43, 0x2f, 0xed, 0x1b, 0xeb, 0xf2, 0x0a, 0x7b, 0xea, 0xb1, 0x2d, 0xb1, 0x42, 0xf9, 0x4a, 0x0c, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0xfb, 0x73, 0x30, 0x70, 0xc8, 0xfe, 0xe7, 0x86, 0x53, 0x05, 0xc0, 0xa9, 0xed, 0x7a, 0x96, 0x78, 0xf1, 0x0c, 0xae, 0x4b, 0x61, 0xe3, 0x28, 0x52, 0x53, 0x46, 0x54, 0xe5, 0x2e, 0xb0, 0x53, 0xe9, 0x71, 0x60, 0xd9, 0x6f, 0xad, 0x66, 0x7e, 0xe3, 0x89, 0xe0, 0xf2, 0x70, 0x24, 0x89, 0xd9, 0x0d, 0x92, 0x55, 0x58, 0xfa, 0x1a, 0xd7, 0x30, 0xda, 0x94, 0xd0, 0xab, 0x21, 0xaa, 0xd8, 0x2c, 0x06, 0xde, 0xca, 0xed, 0xe0, 0xd7, 0xcf, 0x44, 0xce, 0x85, 0x3c, 0x21, 0x28, 0x73, 0x43, 0x4b, 0x7d, 0x6e, 0x88, 0xd4, 0x1d, 0xee, 0x30, 0xe9, 0x73, 0x51, 0x44, 0xf6, 0xba, 0x5a, 0x29, 0xf3, 0x6d, 0xd8, 0x47, 0xeb, 0x46, 0x9f, 0xf3, 0x13, 0xd3, 0xce, 0x7e, 0x97, 0x57, 0x7e, 0x00, 0x40, 0xc7, 0x5f, 0x9d, 0xf2, 0x85, 0x3f, 0x62, 0xc4, 0xd9, 0x77, 0x78, 0xef, 0xd9, 0xd3, 0x39, 0xcb, 0x8e, 0x19, 0x8b, 0x3f, 0x44, 0xc7, 0x60, 0x8f, 0x4d, 0x42, 0x35, 0xdc, 0x24, 0x5e, 0xb2, 0x62, 0xe9, 0x49, 0xe0, 0x56, 0xe4, 0x33, 0x2c, 0x58, 0x9d, 0x8a, 0xc9, 0xe4, 0xb4, 0x40, 0xa0, 0x20, 0xfe, 0x64, 0x01, 0x7c, 0x68, 0xb9, 0x03, 0x0a, 0x52, 0x9a, 0xa4, 0x84, 0xab, 0x62, 0xf4, 0xee, 0x32, 0x41, 0xc5, 0x35, 0xc6, 0xb2, 0x97, 0x5b, 0xfe, 0xa8, 0x9f, 0x48, 0x41, 0x81, 0x0b, 0x7a, 0x46, 0xb3, 0xfe, 0xf4, 0x1d, 0x59, 0x2d, 0xb0, 0x12, 0xfd, 0x0d, 0x9c, 0x16, 0xb9, 0x58, 0xac, 0x2b, 0xb4, 0xf0, 0x44, 0x6e, 0x19, 0x8f, 0xd7, 0x58, 0x42, 0x66, 0xb5, 0xcb, 0xe3, 0x22, 0x78, 0x6c, 0xc1, 0x46, 0x27, 0x77, 0xf6, 0x9f, 0xe9, 0x85, 0xe5, 0xab, 0x95, 0x65, 0xca, 0x01, 0xff, 0xf8, 0x98, 0x24, 0xb2, 0x0d, 0x87, 0xb8, 0xaf, 0x70, 0x63, 0xf5, 0xbe, 0xbb, 0x13, 0x55, 0x7d, 0x7d, 0x3f, 0x08, 0xdb, 0x57, 0xab, 0xd6, 0x59, 0xd9, 0xf0, 0x40, 0x4d, 0xbf, 0xa4, 0x54, 0xba, 0x74, 0x39, 0xef, 0x8b, 0x93, 0xfb, 0x0d, 0x3a, 0xac, 0x2f, 0x88, 0x51, 0xab, 0x62, 0x8a, 0x3a, 0xf5, 0xa5, 0x04, 0xc6, 0x60, 0x5b, 0xfb, 0xcb, 0x8a, 0x8c, 0xce, 0xa8, 0x73, 0xa7, 0x5d, 0x76, 0x93, 0x8a, 0x13, 0x43, 0x97, 0x73, 0x69, 0xed, 0x39, 0xf3, 0x2a, 0x35, 0xb6, 0xf6, 0x5b, 0xda, 0xce, 0xf4, 0xba, 0xfb, 0x4a, 0x2b, 0x46, 0xbb, 0xde, 0xa7, 0xc8, 0xe5, 0xeb, 0x69, 0x0b, 0x07, 0x60, 0x9e, 0xdb, 0xe2, 0xfe, 0x28, 0xa6, 0x73, 0x4d, 0x3a, 0xf6, 0x74, 0x73, 0x74, 0xcf, 0x84, 0x21, 0x1c, 0x26, 0xdc, 0xb6, 0x37, 0x86, 0xc0, 0x59, 0xee, 0xa6, 0xf4, 0xe9, 0x1f, 0x5e, 0x67, 0x10, 0x3d, 0xd5, 0x36, 0xe0, 0x20, 0xa4, 0x75, 0x98, 0x0d, 0xd4, 0xf5, 0x07, 0xd4, 0x66, 0xb5, 0xc2, 0x87, 0xbe, 0x3b, 0x9a, 0x56, 0x17, 0x78, 0x8f, 0x20, 0xe8, 0x74, 0xa9, 0x9b, 0x2c, 0xe3, 0x7c, 0x02, 0x1d, 0x0b, 0xc8, 0xf5, 0xbf, 0x5b, 0x02, 0x32, 0xec, 0xd2, 0xc9, 0x9f, 0x27, 0x69, 0x82, 0xa6, 0xe5, 0x02, 0x5c, 0x65, 0x44, 0xe1, 0xe6, 0x62, 0x16, 0xd0, 0x47, 0x17, 0xb5, 0x96, 0x7a, 0xec, 0x14, 0xc1, 0x81, 0xe0, 0xe9, 0x12, 0xa9, 0xc9, 0x87, 0xf3, 0x16, 0x67, 0xed, 0x58, 0x07, 0x92, 0xc4, 0xc4, 0x6d, 0x94, 0x7a, 0x28, 0x75, 0x72, 0x07, 0xa7, 0x5f, 0x65, 0xe6, 0x6c, 0x16, 0xa5, 0x5f, 0x44, 0x41, 0x5c, 0xa2, 0x83, 0x25, 0x4c, 0x8f, 0xbf, 0xc4, 0x8c, 0x3d, 0x03, 0xfd, 0x47, 0xee, 0xd0, 0x5c, 0x36, 0x38, 0x29, 0xce, 0x89, 0x1f, 0x6c, 0xfa, 0xb3, 0x15, 0xc8, 0xbd, 0xa0, 0xa8, 0xa4, 0x62, 0xb6, 0xf9, 0x8d, 0x3d, 0x74, 0x81, 0x90, 0x0b, 0x04, 0x2c, 0x98, 0x80, 0x44, 0x88, 0x12, 0x0e, 0xb4, 0x46, 0x70, 0xbf, 0x37, 0xa1, 0xab, 0x37, 0x69, 0xb9, 0xe6, 0x43, 0xb8, 0xd6, 0xb3, 0x76, 0xf9, 0x68, 0xde, 0xda, 0x10, 0x08, 0x26, 0xff, 0x5c, 0xbe, 0x4d, 0x07, 0x4c, 0xe9, 0x04, 0x1c, 0x46, 0x08, 0x79, 0x2a, 0x27, 0x9c, 0xed, 0x9f, 0x65, 0xd2, 0xa0, 0x88, 0x1f, 0x1c, 0xa1, 0xa5, 0x90, 0x74, 0x47, 0x3b, 0xc4, 0xb7, 0x0a, 0xed, 0x9e, 0x0e, 0xda, 0xcf, 0xc6, 0xc3, 0xda, 0xd3, 0x13, 0x81, 0x3f, 0x38, 0x5b, 0x45, 0xb6, 0x9b, 0xba, 0x95, 0x54, 0x3f, 0x97, 0xab, 0x01, 0x54, 0xbb, 0x09, 0xd6, 0x65, 0xf0, 0xa7, 0x76, 0xd9, 0x4e, 0x17, 0xdc, 0x5e, 0x5e, 0xd1, 0x2e, 0x21 - ], - ock: [ - 0x72, 0x7b, 0xf1, 0x55, 0xdc, 0xdf, 0x0d, 0x05, 0x13, 0x2b, 0x77, 0x89, 0xaf, 0xd7, 0xfc, 0x42, 0x23, 0xf4, 0x55, 0x84, 0x3b, 0xec, 0xc1, 0xdf, 0x5f, 0xd7, 0x6f, 0xc9, 0x0f, 0x59, 0x41, 0xf0 - ], - op: [ - 0x34, 0xfe, 0x17, 0xbd, 0x7f, 0xbd, 0x16, 0xa1, 0x69, 0x06, 0xd7, 0xfe, 0x2e, 0x62, 0x60, 0xe8, 0xb7, 0x25, 0x9b, 0x7c, 0x6e, 0xa3, 0x45, 0x64, 0x6f, 0x7b, 0x28, 0xf0, 0xb7, 0xe3, 0xc6, 0xce, 0xab, 0x2a, 0xff, 0x03, 0x32, 0xd5, 0x43, 0xfd, 0x1d, 0x80, 0x23, 0x18, 0x5b, 0x8e, 0xcb, 0x5f, 0x22, 0xa2, 0x9c, 0x32, 0xef, 0x74, 0x16, 0x33, 0x31, 0x6e, 0xee, 0x51, 0x4f, 0xc2, 0x23, 0x09 - ], - c_out: [ - 0xf5, 0xda, 0x0d, 0x00, 0x1e, 0x23, 0x66, 0x3b, 0x55, 0xc8, 0x1e, 0x46, 0x81, 0x98, 0x87, 0x6f, 0x1b, 0xb0, 0x76, 0x99, 0x95, 0xe3, 0xcf, 0xa4, 0x00, 0x60, 0xe8, 0xd9, 0xf5, 0x00, 0x5c, 0xf9, 0xa4, 0xde, 0x9c, 0x0c, 0xb3, 0xb5, 0x4e, 0x8c, 0xd2, 0x10, 0x38, 0x8f, 0xac, 0x28, 0x5c, 0xd7, 0x26, 0xac, 0x13, 0x0c, 0x5f, 0xac, 0x03, 0xb4, 0xca, 0x16, 0xdf, 0xe7, 0xc3, 0x22, 0x32, 0x5d, 0x21, 0x46, 0x7a, 0xb4, 0xdf, 0xd2, 0x0f, 0xee, 0xb4, 0x15, 0xed, 0x1b, 0x2c, 0x45, 0xb7, 0x1e - ], - }, - TestVector { - ovk: [ - 0x21, 0x15, 0x33, 0xa6, 0x4b, 0xc1, 0x87, 0xb9, 0x93, 0x35, 0x99, 0xb4, 0x10, 0x12, 0x37, 0xe5, 0x05, 0x8d, 0x67, 0x7e, 0xb0, 0xa8, 0xb8, 0xdb, 0x91, 0x88, 0x67, 0x55, 0x71, 0x2f, 0xfb, 0x54 - ], - ivk: [ - 0xc4, 0x86, 0x04, 0x3b, 0x54, 0xf2, 0x1f, 0x93, 0xbf, 0x29, 0xe7, 0x0d, 0x38, 0xae, 0x9a, 0x2d, 0xa7, 0xfc, 0x48, 0x23, 0x35, 0xc9, 0x39, 0xc3, 0xbd, 0x86, 0xdb, 0xe3, 0xa6, 0x6e, 0x6e, 0x03 - ], - default_d: [ - 0x55, 0x63, 0x11, 0xd5, 0x93, 0xaf, 0x50, 0xe3, 0x1c, 0x4d, 0x1e - ], - default_pk_d: [ - 0x44, 0x7e, 0xfa, 0x0f, 0x22, 0x05, 0x00, 0x44, 0x26, 0x3d, 0x7d, 0x98, 0xd4, 0x75, 0xc2, 0x60, 0x14, 0x26, 0xf1, 0xae, 0xa1, 0x9e, 0xd5, 0xaf, 0xe3, 0xb5, 0xfc, 0x75, 0xd0, 0x81, 0x24, 0xa4 - ], - v: 900000000, - rcm: [ - 0x8c, 0x3e, 0x56, 0x44, 0x9d, 0xc8, 0x63, 0x54, 0xd3, 0x3b, 0x02, 0x5e, 0xf2, 0x79, 0x34, 0x60, 0xbc, 0xb1, 0x69, 0xf3, 0x32, 0x4e, 0x4a, 0x6b, 0x64, 0xba, 0xa6, 0x08, 0x32, 0x31, 0x57, 0x04 - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0xd7, 0x89, 0x19, 0x2e, 0x90, 0xde, 0x28, 0xc3, 0x7f, 0x58, 0xfe, 0x46, 0xdb, 0x58, 0xdc, 0x20, 0xc5, 0x74, 0xd5, 0x97, 0x62, 0x85, 0x25, 0x30, 0xd3, 0xe9, 0x3f, 0x07, 0xfa, 0x15, 0x99, 0x1c - ], - cmu: [ - 0xa3, 0x64, 0xc4, 0x9c, 0x48, 0x4b, 0xc6, 0xc8, 0x2a, 0x7b, 0x84, 0xf4, 0x31, 0xfe, 0x56, 0xe1, 0x9b, 0x40, 0x2f, 0x74, 0x14, 0x1d, 0x47, 0x1a, 0xe0, 0x30, 0x16, 0x5f, 0xde, 0xb5, 0x82, 0x16 - ], - esk: [ - 0xa5, 0x3d, 0x19, 0xf5, 0x69, 0x45, 0x95, 0xd5, 0xae, 0x63, 0x02, 0x27, 0x67, 0x3c, 0x80, 0x24, 0x9c, 0xe1, 0x24, 0x41, 0x9f, 0x46, 0xdf, 0x4e, 0x7b, 0x3f, 0xc1, 0x04, 0x61, 0x28, 0xcd, 0x0b - ], - epk: [ - 0x28, 0xb2, 0xea, 0x96, 0x7e, 0xf2, 0xc2, 0x0e, 0xe4, 0xad, 0x38, 0x6e, 0x7d, 0xcc, 0xe1, 0x2f, 0x25, 0x20, 0x23, 0xb7, 0xa6, 0x8c, 0xc5, 0x2a, 0x8f, 0xd3, 0x87, 0x38, 0xcc, 0x36, 0x87, 0xcb - ], - shared_secret: [ - 0xec, 0xf0, 0x6e, 0x8e, 0xc5, 0xe5, 0x27, 0xe5, 0xdf, 0x71, 0x82, 0xc5, 0xdb, 0x78, 0x41, 0xf9, 0x18, 0xe2, 0xe2, 0xb3, 0xad, 0x9f, 0x4a, 0xfd, 0xce, 0xf0, 0xed, 0x48, 0xca, 0xc3, 0x67, 0x3b - ], - k_enc: [ - 0x01, 0x61, 0x89, 0xc3, 0x24, 0x24, 0xbd, 0x33, 0xb7, 0x77, 0x1f, 0x51, 0x00, 0x98, 0x66, 0xf8, 0x8b, 0xa8, 0xd5, 0x19, 0x5e, 0x4f, 0x05, 0x93, 0xec, 0x53, 0xdb, 0xfa, 0x90, 0x9a, 0x86, 0x73 - ], - p_enc: [ - 0x02, 0x55, 0x63, 0x11, 0xd5, 0x93, 0xaf, 0x50, 0xe3, 0x1c, 0x4d, 0x1e, 0x00, 0xe9, 0xa4, 0x35, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x8c, 0x3e, 0x56, 0x44, 0x9d, 0xc8, 0x63, 0x54, 0xd3, 0x3b, 0x02, 0x5e, 0xf2, 0x79, 0x34, 0x60, 0xbc, 0xb1, 0x69, 0xf3, 0x32, 0x4e, 0x4a, 0x6b, 0x64, 0xba, 0xa6, 0x08, 0x32, 0x31, 0x57, 0x04, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x8a, 0xb5, 0x33, 0xe1, 0x20, 0x13, 0x2b, 0x5c, 0x16, 0x40, 0x3b, 0x83, 0x5f, 0x79, 0x14, 0x59, 0xd3, 0xa9, 0xaf, 0x90, 0x0d, 0xda, 0x75, 0xaa, 0xa5, 0x3c, 0x8d, 0x21, 0xa9, 0x51, 0x92, 0xa4, 0x2d, 0x97, 0x27, 0xf5, 0x48, 0x5f, 0xbf, 0x41, 0x67, 0x41, 0x1c, 0xf2, 0xcd, 0x6c, 0x65, 0xfb, 0xbb, 0x2d, 0x9b, 0x5a, 0xa0, 0xaa, 0x29, 0x4a, 0x41, 0x69, 0xe7, 0x65, 0x83, 0x19, 0x67, 0xb4, 0xa9, 0x0a, 0xca, 0xd5, 0xcf, 0x4e, 0xa9, 0xa1, 0x0b, 0xc4, 0xdd, 0x6e, 0x9e, 0x91, 0x4f, 0xa6, 0x9d, 0x63, 0x94, 0x9d, 0xdc, 0xc2, 0x79, 0xa2, 0xfa, 0xb6, 0x6f, 0x77, 0x1b, 0x8b, 0xe5, 0xf0, 0xe7, 0xf6, 0x09, 0x93, 0xc3, 0xcf, 0xe5, 0x2d, 0x90, 0x08, 0x23, 0x60, 0xf0, 0x7a, 0x05, 0x82, 0x44, 0x9e, 0x15, 0x1a, 0xe3, 0x9d, 0x51, 0x5e, 0xff, 0xea, 0x06, 0xa6, 0x5d, 0x1a, 0x14, 0xee, 0xff, 0xca, 0x8b, 0xa2, 0xec, 0x48, 0xf6, 0xbf, 0xfd, 0x17, 0x1f, 0x5e, 0x6a, 0xd1, 0x63, 0xc5, 0xe4, 0x9d, 0x89, 0x28, 0xb0, 0x94, 0x83, 0x92, 0x01, 0xbd, 0x1f, 0x3d, 0xe7, 0xb8, 0x2e, 0x9c, 0xa5, 0x6f, 0xaa, 0xa4, 0x9c, 0x78, 0x56, 0x88, 0xfb, 0x1e, 0xe7, 0xd9, 0xc1, 0xca, 0xe9, 0x63, 0x2a, 0x11, 0x88, 0x2f, 0xa3, 0x7d, 0x3c, 0xc2, 0xa9, 0xe2, 0x7c, 0x60, 0x38, 0x84, 0x4b, 0xb1, 0xc6, 0x9c, 0x3b, 0xc2, 0xc9, 0xcb, 0x5a, 0xa3, 0x90, 0xd6, 0x99, 0x97, 0x9c, 0xd9, 0x41, 0xc7, 0xca, 0x0b, 0x3c, 0xcd, 0x89, 0xc9, 0xcc, 0x42, 0x99, 0x35, 0x26, 0xd7, 0x37, 0xf7, 0x7e, 0x34, 0xd7, 0x78, 0x80, 0xd5, 0xdb, 0x4d, 0x39, 0x29, 0x0a, 0xd1, 0xbf, 0xcc, 0x55, 0xa3, 0x32, 0x35, 0xb3, 0x0c, 0xbb, 0x88, 0x3e, 0xec, 0xb2, 0x55, 0x17, 0x3a, 0x09, 0xb8, 0x2d, 0x5a, 0x7f, 0x64, 0x26, 0xb7, 0xd7, 0xaf, 0xcc, 0xf6, 0x95, 0xf1, 0xf1, 0x4a, 0xfa, 0xf4, 0x73, 0xfa, 0x65, 0xf7, 0x69, 0xe7, 0x1d, 0x84, 0xcd, 0x5e, 0x71, 0x66, 0x24, 0xa3, 0xff, 0x0c, 0xda, 0x04, 0x7f, 0x88, 0x87, 0xeb, 0x89, 0xfc, 0x7f, 0xae, 0xc5, 0x90, 0x70, 0x43, 0x30, 0x78, 0x8e, 0xe1, 0x77, 0x6c, 0xa0, 0x73, 0x47, 0x21, 0x6a, 0xe6, 0x34, 0xc7, 0x63, 0xfa, 0xf4, 0x10, 0xe4, 0xc6, 0xee, 0xcb, 0x99, 0x66, 0xf6, 0x32, 0x4d, 0x80, 0x90, 0x5a, 0x9d, 0x34, 0x5c, 0x46, 0x2c, 0xa0, 0x58, 0x18, 0xcf, 0x34, 0x23, 0x78, 0x1b, 0x89, 0x04, 0xe2, 0x42, 0xec, 0xfa, 0x10, 0x66, 0x88, 0xd4, 0xb4, 0x4b, 0xb1, 0x3a, 0xd3, 0xd9, 0x91, 0x99, 0x80, 0xf6, 0x6f, 0x81, 0xd9, 0xc4, 0x94, 0xc1, 0xd2, 0x42, 0x8f, 0x08, 0xac, 0xa0, 0x2e, 0x7a, 0x1a, 0xd0, 0xc7, 0xc8, 0x11, 0x6b, 0x9a, 0x25, 0x07, 0x04, 0xc0, 0x86, 0xdf, 0x3f, 0xbc, 0x0d, 0x80, 0x27, 0x10, 0x38, 0xf2, 0xce, 0xb8, 0xfd, 0x52, 0x07, 0xb0, 0x65, 0x98, 0xfb, 0x84, 0xd6, 0x6f, 0x3d, 0x9a, 0xdc, 0x4f, 0xeb, 0x21, 0xd7, 0x71, 0x31, 0x21, 0x57, 0x5d, 0x79, 0xc2, 0xad, 0xf5, 0x9a, 0xf7, 0xb9, 0x1d, 0x70, 0x4a, 0xcb, 0xb5, 0xb6, 0x49, 0x05, 0xac, 0x7b, 0x8d, 0x8c, 0xd6, 0xd0, 0x8c, 0xeb, 0x3c, 0x1f, 0x70, 0x68, 0x50, 0xf3, 0x21, 0x6c, 0xed, 0xc4, 0x93, 0xb4, 0xf8, 0x20, 0x9a, 0x8a, 0x58, 0x82, 0x3b, 0x45, 0x19, 0x06, 0x60, 0x94, 0x6c, 0x1c, 0xa8, 0xbf, 0x27, 0xda, 0xaf, 0xf2, 0xfc, 0x3a, 0x1f, 0xe4, 0x1c, 0xd2, 0xb3, 0x3c, 0x55, 0xbe, 0x24, 0xee, 0xa4, 0xb6, 0xf0, 0xbd, 0xb5, 0xe5, 0xa1, 0x7c, 0x42, 0xbc, 0x18, 0x3e, 0x88, 0xd6, 0x8d, 0x92, 0xc6, 0x61, 0xc2, 0xe7, 0x2a, 0x24, 0xff, 0xf1, 0x28, 0xcb, 0xcb, 0x4c, 0xad, 0xeb, 0x44, 0x3e, 0x8f, 0xcf, 0x1d, 0x8e, 0x2c, 0x4b, 0x64, 0xef, 0x57, 0x58, 0xc2, 0xde, 0x99, 0xb9, 0x0c, 0x5e, 0xfd, 0xe6, 0xa9, 0x1e, 0x7c, 0x4d, 0x2d, 0x3e, 0xed, 0x9e, 0xe8, 0x1d, 0x9f, 0x0c, 0xcf, 0x7d, 0xb7, 0x45, 0x9d, 0xf6, 0x9c, 0x93, 0x24, 0x9a, 0xa9, 0xcc, 0xef, 0xb2, 0x2d, 0x7e, 0xa0, 0x83, 0x37, 0xec, 0xfa, 0x2f, 0xd6, 0xca, 0xf5, 0xa7, 0x42, 0xf5, 0x70, 0x25, 0x2b, 0x76, 0x06, 0x7c, 0xed, 0x01, 0x56, 0x68, 0x5d, 0xd6, 0x41, 0xe6, 0xc2, 0x8a, 0xb0, 0xc0, 0x74, 0x9a, 0xdd, 0xc4, 0x7c, 0x82, 0x15, 0x61, 0x66, 0x53, 0xb5, 0xde, 0x8b, 0xea, 0x3a, 0x41, 0xbf - ], - ock: [ - 0x27, 0x6a, 0x0b, 0x0f, 0xd0, 0x38, 0xbb, 0x1f, 0xca, 0x8a, 0xf0, 0x2d, 0x37, 0x8e, 0x1e, 0x79, 0xfd, 0x45, 0xa4, 0x53, 0xa8, 0xd9, 0x8f, 0xbe, 0x13, 0xc1, 0xc3, 0x53, 0x83, 0xc8, 0x96, 0xb6 - ], - op: [ - 0x44, 0x7e, 0xfa, 0x0f, 0x22, 0x05, 0x00, 0x44, 0x26, 0x3d, 0x7d, 0x98, 0xd4, 0x75, 0xc2, 0x60, 0x14, 0x26, 0xf1, 0xae, 0xa1, 0x9e, 0xd5, 0xaf, 0xe3, 0xb5, 0xfc, 0x75, 0xd0, 0x81, 0x24, 0xa4, 0xa5, 0x3d, 0x19, 0xf5, 0x69, 0x45, 0x95, 0xd5, 0xae, 0x63, 0x02, 0x27, 0x67, 0x3c, 0x80, 0x24, 0x9c, 0xe1, 0x24, 0x41, 0x9f, 0x46, 0xdf, 0x4e, 0x7b, 0x3f, 0xc1, 0x04, 0x61, 0x28, 0xcd, 0x0b - ], - c_out: [ - 0x64, 0xd3, 0x78, 0x4a, 0x8c, 0x25, 0xf8, 0x11, 0x64, 0x81, 0xe6, 0xc6, 0xd7, 0x07, 0x22, 0xb3, 0xec, 0xe7, 0x37, 0x3b, 0x27, 0x09, 0x27, 0xea, 0x69, 0xe2, 0x17, 0x18, 0xd4, 0x30, 0xad, 0xc7, 0xea, 0x1f, 0xb1, 0x9e, 0x3a, 0x80, 0xe5, 0x55, 0xc7, 0x22, 0x6c, 0x47, 0xab, 0x06, 0x9f, 0x51, 0x32, 0x0d, 0x94, 0x4b, 0x66, 0x7b, 0x85, 0x9f, 0xb6, 0x7e, 0xd0, 0x1c, 0xbf, 0xa6, 0xf3, 0x5a, 0xac, 0x38, 0x72, 0x6c, 0x40, 0x40, 0x4c, 0xf6, 0x0b, 0x02, 0x3b, 0xa3, 0x26, 0x31, 0x50, 0x8f - ], - }, - TestVector { - ovk: [ - 0xa5, 0xaf, 0x3b, 0xdc, 0x0c, 0x32, 0xb6, 0x51, 0x85, 0x90, 0xce, 0x04, 0x9a, 0x3d, 0x7b, 0xb2, 0x35, 0x7b, 0x0f, 0x24, 0x58, 0x4e, 0xd7, 0x8d, 0x36, 0xde, 0x49, 0xbe, 0x7c, 0xed, 0xb2, 0x84 - ], - ivk: [ - 0x43, 0x98, 0x29, 0xc6, 0x7e, 0x0b, 0x12, 0xd6, 0xb5, 0x8d, 0x03, 0x17, 0x7e, 0x7b, 0x98, 0xf2, 0x01, 0x78, 0x9c, 0x43, 0xfc, 0x76, 0x6e, 0x41, 0xd8, 0x8a, 0x49, 0x40, 0x4d, 0x6b, 0x88, 0x07 - ], - default_d: [ - 0x0d, 0xaa, 0x3c, 0x1b, 0xcf, 0xda, 0xda, 0x95, 0x7e, 0x46, 0xb6 - ], - default_pk_d: [ - 0x2a, 0x9f, 0xbb, 0x3b, 0xac, 0xd1, 0x7c, 0x47, 0xa8, 0xe1, 0x57, 0x2f, 0xc5, 0x1b, 0xa4, 0x9e, 0xb4, 0x65, 0x1c, 0x6d, 0x90, 0xb0, 0x4a, 0x27, 0x4c, 0xe1, 0xb4, 0xaf, 0xc8, 0x93, 0x29, 0xcb - ], - v: 1000000000, - rcm: [ - 0x6e, 0xbb, 0xed, 0x74, 0x36, 0x19, 0xa2, 0x56, 0xf9, 0xad, 0x2e, 0x85, 0x88, 0x0c, 0xfa, 0xa9, 0x09, 0x8a, 0x5f, 0xdb, 0x16, 0x29, 0x99, 0x0d, 0x9a, 0x7d, 0x3b, 0xb9, 0x3f, 0xc9, 0x00, 0x03 - ], - memo: [ - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - cv: [ - 0x6b, 0x29, 0x10, 0x37, 0xf1, 0x4d, 0x5f, 0xc1, 0x2e, 0xe9, 0x91, 0xe4, 0xe2, 0x67, 0x36, 0xe3, 0xb6, 0x57, 0x4d, 0x1b, 0x49, 0xf7, 0x07, 0x8b, 0x85, 0x34, 0x0a, 0x82, 0xff, 0xb6, 0xb5, 0x4f - ], - cmu: [ - 0x7a, 0x9b, 0xdf, 0xcc, 0xbb, 0xdc, 0x2a, 0x26, 0xa3, 0x58, 0x37, 0x4e, 0x09, 0xcd, 0x6e, 0xb6, 0x16, 0x63, 0xa6, 0x2b, 0xae, 0x15, 0x7f, 0x42, 0xa2, 0x42, 0x79, 0xba, 0xb8, 0xbc, 0x5c, 0x34 - ], - esk: [ - 0x29, 0x95, 0x89, 0x80, 0x69, 0x4f, 0x7f, 0x67, 0x08, 0x09, 0x97, 0xc2, 0x66, 0x47, 0x02, 0x89, 0x0c, 0xd1, 0xb5, 0x03, 0xdd, 0xa4, 0x2d, 0x33, 0xa8, 0x99, 0xce, 0x99, 0x1f, 0xe0, 0xf8, 0x00 - ], - epk: [ - 0x70, 0x99, 0xe7, 0x89, 0x48, 0x89, 0x08, 0x2f, 0xb8, 0x52, 0x8b, 0xd9, 0xa9, 0x77, 0x8a, 0x4a, 0x68, 0x1a, 0x07, 0x65, 0xcf, 0x2e, 0xe3, 0x02, 0xf8, 0x9f, 0xbd, 0x14, 0xa1, 0x3f, 0x4c, 0x56 - ], - shared_secret: [ - 0x0b, 0x1a, 0x29, 0x4c, 0x04, 0x58, 0x61, 0xdf, 0x76, 0x54, 0x28, 0x19, 0xea, 0x3c, 0x96, 0xc8, 0x30, 0xcf, 0x26, 0x97, 0x16, 0x82, 0xc9, 0xa9, 0x0b, 0x36, 0xb8, 0xdc, 0x6d, 0x1b, 0x0f, 0x0f - ], - k_enc: [ - 0x19, 0x0b, 0xaf, 0x71, 0x67, 0x47, 0x82, 0xb8, 0x11, 0x14, 0x5c, 0x7a, 0xb1, 0xf4, 0x5b, 0xe9, 0x95, 0xad, 0xc8, 0xc8, 0xed, 0xff, 0xc7, 0xd9, 0x9f, 0x17, 0x8e, 0x60, 0xb8, 0xe7, 0xe2, 0x9a - ], - p_enc: [ - 0x02, 0x0d, 0xaa, 0x3c, 0x1b, 0xcf, 0xda, 0xda, 0x95, 0x7e, 0x46, 0xb6, 0x00, 0xca, 0x9a, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x74, 0x65, 0x73, 0x74, 0x6e, 0xbb, 0xed, 0x74, 0x36, 0x19, 0xa2, 0x56, 0xf9, 0xad, 0x2e, 0x85, 0x88, 0x0c, 0xfa, 0xa9, 0x09, 0x8a, 0x5f, 0xdb, 0x16, 0x29, 0x99, 0x0d, 0x9a, 0x7d, 0x3b, 0xb9, 0x3f, 0xc9, 0x00, 0x03, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ], - c_enc: [ - 0x3f, 0x09, 0xa0, 0x14, 0x0a, 0x8e, 0x3c, 0x91, 0xdc, 0x8e, 0x9d, 0x47, 0xa8, 0x52, 0x00, 0x9d, 0xc7, 0x5a, 0x88, 0x32, 0x72, 0x0c, 0xf5, 0xa8, 0xd7, 0x38, 0x20, 0xe1, 0x13, 0xdd, 0xb4, 0x5f, 0x9e, 0x96, 0x49, 0x8b, 0xc3, 0xe9, 0xe5, 0xd4, 0xed, 0x07, 0x1d, 0x08, 0x42, 0xb9, 0x86, 0x5c, 0x84, 0x53, 0xd5, 0xdc, 0x39, 0x5a, 0x50, 0xd7, 0xbf, 0x03, 0x0e, 0xc9, 0x86, 0x5c, 0xc6, 0xa2, 0x5e, 0x78, 0x65, 0xab, 0x43, 0x47, 0xa1, 0xf5, 0x24, 0xdd, 0x9e, 0xcb, 0x8f, 0x92, 0xcd, 0xb4, 0xc4, 0x21, 0x46, 0x1c, 0xee, 0x5c, 0x19, 0xab, 0x03, 0x1d, 0x68, 0x9a, 0x2b, 0xd5, 0x96, 0xcf, 0x52, 0xd4, 0x03, 0xeb, 0x5f, 0x6d, 0x31, 0x38, 0xb3, 0xd7, 0x6c, 0x5e, 0xb8, 0x66, 0x40, 0x8c, 0x7f, 0xcc, 0x82, 0xee, 0xa2, 0x31, 0x57, 0x7d, 0x99, 0x09, 0xc7, 0xe8, 0xed, 0x59, 0x8c, 0x7a, 0xad, 0x85, 0xbc, 0x07, 0xd1, 0xce, 0x06, 0xa9, 0xaf, 0x30, 0x49, 0xd9, 0x3d, 0x09, 0xef, 0x2e, 0xdb, 0xf3, 0xb5, 0x66, 0xf0, 0x17, 0xaf, 0xb5, 0x09, 0xc4, 0x1f, 0x39, 0xf6, 0x30, 0x8c, 0xf7, 0xc8, 0x8c, 0x67, 0x14, 0x1a, 0x7e, 0xf6, 0xc4, 0xa5, 0xfa, 0x68, 0x2b, 0x97, 0xae, 0x72, 0x66, 0xe4, 0x7a, 0x0e, 0x0b, 0x94, 0x86, 0xad, 0x62, 0x96, 0x0f, 0x06, 0x48, 0x7c, 0x37, 0x24, 0x0d, 0x68, 0xd5, 0x81, 0x5f, 0x4b, 0x83, 0xaf, 0xfd, 0xac, 0x53, 0x4a, 0x5b, 0xc4, 0xaf, 0xf5, 0x6b, 0x2b, 0xd9, 0xed, 0xa9, 0x10, 0xac, 0x32, 0x73, 0x6f, 0x79, 0x1d, 0x79, 0xdf, 0xdd, 0x67, 0x3f, 0xa9, 0x85, 0x0a, 0x5e, 0x1e, 0x16, 0x6a, 0x53, 0x80, 0x81, 0x7f, 0x42, 0x73, 0x26, 0x81, 0x66, 0x7f, 0xe9, 0xfa, 0x53, 0xeb, 0xff, 0x8a, 0x67, 0x92, 0x24, 0xc5, 0x65, 0x2a, 0x1f, 0x2a, 0xe6, 0x55, 0xf2, 0x22, 0xc2, 0x25, 0xdc, 0x8b, 0x6e, 0xeb, 0xb3, 0x8e, 0xf0, 0x49, 0x29, 0xd6, 0xb3, 0x9c, 0x1b, 0x0e, 0xa7, 0xea, 0x5f, 0x9d, 0x06, 0xb8, 0x59, 0x76, 0x27, 0xac, 0x62, 0x9b, 0x62, 0xaf, 0x81, 0x78, 0x24, 0x05, 0x96, 0x42, 0xa9, 0xb1, 0xe0, 0x4a, 0x27, 0x20, 0x98, 0x74, 0xc9, 0x56, 0x2a, 0xf5, 0x5d, 0x49, 0x37, 0x53, 0xa8, 0x37, 0xc6, 0x4b, 0x1e, 0xae, 0xc6, 0x7b, 0xcd, 0x58, 0x07, 0xf7, 0x1f, 0x4f, 0xb1, 0x66, 0xd9, 0x6b, 0xbf, 0x24, 0xdc, 0xc5, 0x69, 0x88, 0xbf, 0x31, 0x01, 0x36, 0xaf, 0x79, 0xd1, 0xe3, 0x2c, 0x8b, 0x13, 0x7d, 0x49, 0xe0, 0x98, 0x60, 0x5b, 0xe2, 0x31, 0x6b, 0x38, 0xbb, 0xba, 0xc6, 0x5f, 0x36, 0x68, 0x25, 0x52, 0x1d, 0x44, 0x46, 0x2f, 0x05, 0x2a, 0x86, 0xab, 0xea, 0xab, 0xf7, 0x9c, 0x4f, 0xc9, 0xff, 0xd6, 0x94, 0x38, 0x28, 0x69, 0x29, 0xf7, 0x99, 0x90, 0xcc, 0xfe, 0xa8, 0x38, 0x61, 0xd8, 0x46, 0xcf, 0xd4, 0x9e, 0xa9, 0x95, 0x34, 0x16, 0x5e, 0x1f, 0xfa, 0x7c, 0xc9, 0xea, 0xa9, 0xff, 0xa9, 0xad, 0x13, 0x1b, 0xe3, 0xd1, 0xf4, 0xd1, 0xa6, 0xcc, 0x45, 0xad, 0x00, 0x11, 0xcc, 0xfd, 0xbe, 0x50, 0x11, 0x7f, 0x80, 0x14, 0xe7, 0xf3, 0x7f, 0x3b, 0x99, 0x14, 0x5b, 0x2f, 0xb8, 0xb0, 0x5e, 0x66, 0xe3, 0x1b, 0x06, 0x1e, 0x3f, 0xf3, 0xc7, 0x43, 0xd3, 0x9b, 0x93, 0x8e, 0x14, 0x68, 0xf0, 0x83, 0xe1, 0xde, 0x0e, 0xae, 0xb3, 0x2b, 0x05, 0x9f, 0x78, 0x9c, 0x09, 0x7f, 0x82, 0xd4, 0xc3, 0x77, 0xff, 0xb6, 0x59, 0x23, 0xf3, 0x96, 0xa0, 0xd2, 0x00, 0xc4, 0xcb, 0xe4, 0x8f, 0x84, 0x0b, 0x36, 0x70, 0xe4, 0x76, 0xe9, 0xa0, 0x09, 0x3f, 0x06, 0xfe, 0x4f, 0x7c, 0x7a, 0x58, 0x40, 0xc2, 0xc4, 0xc0, 0x87, 0xb5, 0xef, 0x05, 0xdd, 0x92, 0x7f, 0x2c, 0x0b, 0x57, 0x8b, 0x13, 0xb2, 0xf8, 0xa5, 0x92, 0x97, 0xc0, 0x5b, 0x8f, 0xe0, 0x4f, 0x27, 0xee, 0xd3, 0x2a, 0xe4, 0x6b, 0xab, 0xff, 0x3b, 0xe5, 0x62, 0x01, 0xe7, 0x15, 0x7a, 0x54, 0x4f, 0x56, 0xcd, 0x7b, 0x5e, 0xbf, 0xe7, 0xe1, 0xe1, 0x51, 0xb2, 0xf3, 0x79, 0x9e, 0x16, 0x05, 0xdc, 0x39, 0x19, 0x37, 0x19, 0xa8, 0x81, 0xc6, 0x0e, 0xa4, 0xc8, 0xd0, 0x88, 0xcc, 0x30, 0xfd, 0x30, 0x03, 0x92, 0xa3, 0x33, 0xfd, 0x9c, 0x64, 0xb8, 0x32, 0x53, 0x41, 0x3d, 0x75, 0x99, 0x4e, 0x19, 0x08, 0xb8, 0xe0, 0x19, 0xf9, 0x70, 0x15, 0x38, 0x64, 0x05, 0x74, 0x7e, 0x92, 0xfa, 0x25, 0x25 - ], - ock: [ - 0x35, 0xc4, 0x5c, 0x7a, 0xad, 0x47, 0xc6, 0x08, 0x16, 0xf6, 0x51, 0xb2, 0x0e, 0xaf, 0xdd, 0xe1, 0xe7, 0xe4, 0xd5, 0xbc, 0x61, 0xfb, 0x60, 0x12, 0x17, 0x03, 0x02, 0x68, 0x13, 0xd8, 0xb4, 0x0b - ], - op: [ - 0x2a, 0x9f, 0xbb, 0x3b, 0xac, 0xd1, 0x7c, 0x47, 0xa8, 0xe1, 0x57, 0x2f, 0xc5, 0x1b, 0xa4, 0x9e, 0xb4, 0x65, 0x1c, 0x6d, 0x90, 0xb0, 0x4a, 0x27, 0x4c, 0xe1, 0xb4, 0xaf, 0xc8, 0x93, 0x29, 0xcb, 0x29, 0x95, 0x89, 0x80, 0x69, 0x4f, 0x7f, 0x67, 0x08, 0x09, 0x97, 0xc2, 0x66, 0x47, 0x02, 0x89, 0x0c, 0xd1, 0xb5, 0x03, 0xdd, 0xa4, 0x2d, 0x33, 0xa8, 0x99, 0xce, 0x99, 0x1f, 0xe0, 0xf8, 0x00 - ], - c_out: [ - 0x01, 0x01, 0x97, 0xe7, 0x6d, 0x28, 0x38, 0xcb, 0xb7, 0x4b, 0x7c, 0xcd, 0xf5, 0x8e, 0x20, 0x3c, 0x73, 0x5a, 0xbe, 0x4d, 0xb7, 0xb5, 0xe8, 0x74, 0x1b, 0x39, 0xc5, 0xfd, 0x2c, 0xab, 0xd3, 0x7e, 0xc0, 0xd2, 0x77, 0x6a, 0xd0, 0x6a, 0x6a, 0xfc, 0x1e, 0x73, 0x4a, 0x38, 0x36, 0x15, 0xb9, 0xbd, 0x9f, 0xf4, 0x22, 0x26, 0xe6, 0xd9, 0xb4, 0x6c, 0xeb, 0xba, 0x59, 0xb9, 0xfb, 0xb5, 0xc9, 0x8c, 0x86, 0xa1, 0xac, 0x22, 0x60, 0x42, 0xd8, 0x86, 0x03, 0xa6, 0x52, 0x8c, 0xec, 0x74, 0x7e, 0x25 - ], - }, - ]; diff --git a/masp_primitives/src/transaction.rs b/masp_primitives/src/transaction.rs index 4525b425..3f55ab9d 100644 --- a/masp_primitives/src/transaction.rs +++ b/masp_primitives/src/transaction.rs @@ -10,6 +10,7 @@ use blake2b_simd::Hash as Blake2bHash; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use ff::PrimeField; use memuse::DynamicUsage; +use std::collections::BTreeMap; use std::{ fmt::{self, Debug}, hash::Hash, @@ -283,23 +284,20 @@ impl TransactionData { } impl BorshSerialize for Transaction { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.write(writer) } } impl BorshDeserialize for Transaction { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Self::read(buf, BranchId::MASP) + fn deserialize_reader(reader: &mut R) -> io::Result { + Self::read(reader, BranchId::MASP) } } impl borsh::BorshSchema for Transaction { fn add_definitions_recursively( - _definitions: &mut std::collections::HashMap< - borsh::schema::Declaration, - borsh::schema::Definition, - >, + _definitions: &mut BTreeMap, ) { } @@ -439,11 +437,7 @@ impl Transaction { let shielded_spends = sd_v5s .into_iter() - .zip( - v_spend_proofs - .into_iter() - .zip(v_spend_auth_sigs.into_iter()), - ) + .zip(v_spend_proofs.into_iter().zip(v_spend_auth_sigs)) .map(|(sd_5, (zkproof, spend_auth_sig))| { // the following `unwrap` is safe because we know n_spends > 0. sd_5.into_spend_description(spend_anchor.unwrap(), zkproof, spend_auth_sig) @@ -452,13 +446,13 @@ impl Transaction { let shielded_converts = cd_v5s .into_iter() - .zip(v_convert_proofs.into_iter()) + .zip(v_convert_proofs) .map(|(cd_5, zkproof)| cd_5.into_convert_description(convert_anchor.unwrap(), zkproof)) .collect(); let shielded_outputs = od_v5s .into_iter() - .zip(v_output_proofs.into_iter()) + .zip(v_output_proofs) .map(|(od_5, zkproof)| od_5.into_output_description(zkproof)) .collect(); diff --git a/masp_primitives/src/transaction/builder.rs b/masp_primitives/src/transaction/builder.rs index fc65dcfd..f4583da6 100644 --- a/masp_primitives/src/transaction/builder.rs +++ b/masp_primitives/src/transaction/builder.rs @@ -116,14 +116,14 @@ impl Progress { /// Generates a [`Transaction`] from its inputs and outputs. #[derive(Clone, Debug, BorshSerialize, BorshDeserialize)] -pub struct Builder> { +pub struct Builder> { params: P, - rng: R, + rng: RN, target_height: BlockHeight, expiry_height: BlockHeight, transparent_builder: TransparentBuilder, sapling_builder: SaplingBuilder, - #[borsh_skip] + #[borsh(skip)] progress_notifier: Option, } diff --git a/masp_primitives/src/transaction/components/amount.rs b/masp_primitives/src/transaction/components/amount.rs index fac323c5..ae2a644f 100644 --- a/masp_primitives/src/transaction/components/amount.rs +++ b/masp_primitives/src/transaction/components/amount.rs @@ -160,13 +160,9 @@ impl ValueSum { /// different assets pub fn read(reader: &mut R) -> std::io::Result { let vec = Vector::read(reader, |reader| { - let mut atype = [0; 32]; + let atype = AssetType::read(reader)?; let mut value = [0; 4]; - reader.read_exact(&mut atype)?; reader.read_exact(&mut value)?; - let atype = AssetType::from_identifier(&atype).ok_or_else(|| { - std::io::Error::new(std::io::ErrorKind::InvalidData, "invalid asset type") - })?; Ok((atype, i32::from_le_bytes(value))) })?; let mut ret = Self::zero(); @@ -195,13 +191,9 @@ impl ValueSum { /// different assets pub fn read(reader: &mut R) -> std::io::Result { let vec = Vector::read(reader, |reader| { - let mut atype = [0; 32]; + let atype = AssetType::read(reader)?; let mut value = [0; 8]; - reader.read_exact(&mut atype)?; reader.read_exact(&mut value)?; - let atype = AssetType::from_identifier(&atype).ok_or_else(|| { - std::io::Error::new(std::io::ErrorKind::InvalidData, "invalid asset type") - })?; Ok((atype, i64::from_le_bytes(value))) })?; let mut ret = Self::zero(); @@ -230,13 +222,9 @@ impl ValueSum { /// different assets pub fn read(reader: &mut R) -> std::io::Result { let vec = Vector::read(reader, |reader| { - let mut atype = [0; 32]; + let atype = AssetType::read(reader)?; let mut value = [0; 16]; - reader.read_exact(&mut atype)?; reader.read_exact(&mut value)?; - let atype = AssetType::from_identifier(&atype).ok_or_else(|| { - std::io::Error::new(std::io::ErrorKind::InvalidData, "invalid asset type") - })?; Ok((atype, i128::from_le_bytes(value))) })?; let mut ret = Self::zero(); @@ -657,7 +645,7 @@ pub mod testing { prop_compose! { pub fn arb_i128_sum()(asset_type in arb_asset_type(), amt in i128::MIN..i128::MAX) -> I128Sum { - ValueSum::from_pair(asset_type, amt as i128).unwrap() + ValueSum::from_pair(asset_type, amt).unwrap() } } @@ -676,40 +664,131 @@ pub mod testing { #[cfg(test)] mod tests { - use super::{zec, I64Sum, ValueSum, MAX_MONEY}; + use super::{zec, I128Sum, I32Sum, I64Sum, ValueSum, MAX_MONEY}; #[test] fn amount_in_range() { - let zero = b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x00\x00\x00\x00\x00\x00\x00\x00"; - assert_eq!(I64Sum::read(&mut zero.as_ref()).unwrap(), ValueSum::zero()); + let mut bytes = Vec::with_capacity(100); + + macro_rules! test_vector { + ($amount:ident) => {{ + bytes.clear(); + $amount.write(&mut bytes).unwrap(); + format!( + "b\"{}\",\n", + std::str::from_utf8( + &bytes + .iter() + .flat_map(|b| std::ascii::escape_default(*b)) + .collect::>(), + ) + .unwrap() + ) + }}; + } + macro_rules! value_amount { + ($t:ty, $val:expr) => {{ + let mut amount = <$t>::from_pair(zec(), 1).unwrap(); + *amount.0.get_mut(&zec()).unwrap() = $val; + amount + }}; + } - let neg_one = b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\xff\xff\xff\xff\xff\xff\xff\xff"; - assert_eq!( - I64Sum::read(&mut neg_one.as_ref()).unwrap(), - I64Sum::from_pair(zec(), -1).unwrap() + let test_amounts_i32 = [ + value_amount!(I32Sum, 0), // zec() asset with value 0 + I32Sum::from_pair(zec(), -1).unwrap(), + I32Sum::from_pair(zec(), i32::MAX).unwrap(), + I32Sum::from_pair(zec(), -i32::MAX).unwrap(), + ]; + + let test_amounts_i64 = [ + value_amount!(I64Sum, 0), // zec() asset with value 0 + I64Sum::from_pair(zec(), -1).unwrap(), + I64Sum::from_pair(zec(), i64::MAX).unwrap(), + I64Sum::from_pair(zec(), -i64::MAX).unwrap(), + ]; + + let test_amounts_i128 = [ + value_amount!(I128Sum, 0), // zec() asset with value 0 + I128Sum::from_pair(zec(), MAX_MONEY as i128).unwrap(), + value_amount!(I128Sum, MAX_MONEY as i128 + 1), + I128Sum::from_pair(zec(), -(MAX_MONEY as i128)).unwrap(), + value_amount!(I128Sum, -(MAX_MONEY as i128 - 1)), + ]; + + println!( + "let test_vectors_i32 = [{}];", + test_amounts_i32 + .iter() + .map(|a| test_vector!(a)) + .collect::() ); - - let max_money = b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\xff\xff\xff\xff\xff\xff\xff\x7f"; - - assert_eq!( - I64Sum::read(&mut max_money.as_ref()).unwrap(), - I64Sum::from_pair(zec(), i64::MAX).unwrap() + println!( + "let test_vectors_i64 = [{}];", + test_amounts_i64 + .iter() + .map(|a| test_vector!(a)) + .collect::() ); - //let max_money_p1 = b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x01\x40\x07\x5a\xf0\x75\x07\x00"; - //assert!(ValueSum::read(&mut max_money_p1.as_ref()).is_err()); + println!( + "let test_vectors_i128 = [{}];", + test_amounts_i128 + .iter() + .map(|a| test_vector!(a)) + .collect::() + ); - //let mut neg_max_money = [0u8; 41]; - //let mut amount = ValueSum::from_pair(zec(), -MAX_MONEY).unwrap(); - //*amount.0.get_mut(&zec()).unwrap() = i64::MIN; - //amount.write(&mut neg_max_money.as_mut()); - //dbg!(std::str::from_utf8(&neg_max_money.as_ref().iter().map(|b| std::ascii::escape_default(*b)).flatten().collect::>()).unwrap()); + let zero = b"\x00"; + let test_vectors_i32 = [b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x00\x00\x00\x00", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\xff\xff\xff\xff", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\xff\xff\xff\x7f", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x01\x00\x00\x80", + ]; + let test_vectors_i64 = [b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x00\x00\x00\x00\x00\x00\x00\x00", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\xff\xff\xff\xff\xff\xff\xff\xff", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\xff\xff\xff\xff\xff\xff\xff\x7f", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x01\x00\x00\x00\x00\x00\x00\x80", + ]; + let test_vectors_i128 = [b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x01\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff", + b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x02\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff", + ]; - let neg_max_money = b"\x01\x94\xf3O\xfdd\xef\n\xc3i\x08\xfd\xdf\xec\x05hX\x06)\xc4Vq\x0f\xa1\x86\x83\x12\xa8\x7f\xbf\n\xa5\t\x01\x00\x00\x00\x00\x00\x00\x80"; assert_eq!( - I64Sum::read(&mut neg_max_money.as_ref()).unwrap(), - I64Sum::from_pair(zec(), -i64::MAX).unwrap() + I32Sum::read(&mut test_vectors_i32[0].as_ref()).unwrap(), + ValueSum::zero() + ); + assert_eq!( + I64Sum::read(&mut test_vectors_i64[0].as_ref()).unwrap(), + ValueSum::zero() ); + assert_eq!( + I128Sum::read(&mut test_vectors_i128[0].as_ref()).unwrap(), + ValueSum::zero() + ); + + assert_eq!(I32Sum::read(&mut zero.as_ref()).unwrap(), ValueSum::zero()); + assert_eq!(I64Sum::read(&mut zero.as_ref()).unwrap(), ValueSum::zero()); + assert_eq!(I128Sum::read(&mut zero.as_ref()).unwrap(), ValueSum::zero()); + + test_vectors_i32 + .iter() + .skip(1) + .zip(test_amounts_i32.iter().skip(1)) + .for_each(|(tv, ta)| assert_eq!(I32Sum::read(&mut tv.as_ref()).unwrap(), *ta)); + test_vectors_i64 + .iter() + .skip(1) + .zip(test_amounts_i64.iter().skip(1)) + .for_each(|(tv, ta)| assert_eq!(I64Sum::read(&mut tv.as_ref()).unwrap(), *ta)); + test_vectors_i128 + .iter() + .skip(1) + .zip(test_amounts_i128.iter().skip(1)) + .for_each(|(tv, ta)| assert_eq!(I128Sum::read(&mut tv.as_ref()).unwrap(), *ta)); } #[test] diff --git a/masp_primitives/src/transaction/components/sapling.rs b/masp_primitives/src/transaction/components/sapling.rs index 7ce04153..4b9c5873 100644 --- a/masp_primitives/src/transaction/components/sapling.rs +++ b/masp_primitives/src/transaction/components/sapling.rs @@ -85,7 +85,7 @@ impl MapAuth for () { } } -#[derive(Clone, Debug, BorshSerialize, BorshDeserialize, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct Bundle { pub shielded_spends: Vec>, pub shielded_converts: Vec>, @@ -498,12 +498,12 @@ pub struct ConvertDescriptionV5 { } impl ConvertDescriptionV5 { - pub fn read(mut reader: &mut R) -> io::Result { + pub fn read(reader: &mut R) -> io::Result { // Consensus rules (§4.4) & (§4.5): // - Canonical encoding is enforced here. // - "Not small order" is enforced in SaplingVerificationContext::(check_spend()/check_output()) // (located in zcash_proofs::sapling::verifier). - let cv = read_point(&mut reader, "cv")?; + let cv = read_point(reader, "cv")?; Ok(ConvertDescriptionV5 { cv }) } @@ -644,7 +644,7 @@ pub mod testing { } prop_compose! { - /// produce a spend description with invalid data (useful only for serialization + /// produce a convert description with invalid data (useful only for serialization /// roundtrip testing). pub fn arb_convert_description()( cv in arb_extended_point(), diff --git a/masp_primitives/src/transaction/components/sapling/builder.rs b/masp_primitives/src/transaction/components/sapling/builder.rs index 5f952cde..b902e603 100644 --- a/masp_primitives/src/transaction/components/sapling/builder.rs +++ b/masp_primitives/src/transaction/components/sapling/builder.rs @@ -34,8 +34,8 @@ use crate::{ }, zip32::ExtendedSpendingKey, }; -use borsh::maybestd::io::Write; use borsh::{BorshDeserialize, BorshSerialize}; +use std::io::Write; /// If there are any shielded inputs, always have at least two shielded outputs, padding /// with dummy outputs if necessary. See . @@ -76,7 +76,7 @@ pub struct SpendDescriptionInfo { } impl BorshSerialize for SpendDescriptionInfo { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> std::io::Result<()> { self.extsk.serialize(writer)?; self.diversifier.serialize(writer)?; self.note.serialize(writer)?; @@ -86,13 +86,14 @@ impl BorshSerialize for SpendDescriptionInfo { } impl BorshDeserialize for SpendDescriptionInfo { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - let extsk = Key::deserialize(buf)?; - let diversifier = Diversifier::deserialize(buf)?; - let note = Note::deserialize(buf)?; - let alpha: Option<_> = jubjub::Fr::from_bytes(&<[u8; 32]>::deserialize(buf)?).into(); + fn deserialize_reader(reader: &mut R) -> std::io::Result { + let extsk = Key::deserialize_reader(reader)?; + let diversifier = Diversifier::deserialize_reader(reader)?; + let note = Note::deserialize_reader(reader)?; + let alpha: Option<_> = + jubjub::Fr::from_bytes(&<[u8; 32]>::deserialize_reader(reader)?).into(); let alpha = alpha.ok_or_else(|| std::io::Error::from(std::io::ErrorKind::InvalidData))?; - let merkle_path = MerklePath::::deserialize(buf)?; + let merkle_path = MerklePath::::deserialize_reader(reader)?; Ok(SpendDescriptionInfo { extsk, diversifier, @@ -280,7 +281,7 @@ pub struct SaplingBuilder { } impl BorshSerialize for SaplingBuilder { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> std::io::Result<()> { self.params.serialize(writer)?; self.spend_anchor.map(|x| x.to_bytes()).serialize(writer)?; self.target_height.serialize(writer)?; @@ -295,23 +296,23 @@ impl BorshSerialize for SaplingBuilder

BorshDeserialize for SaplingBuilder { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - let params = P::deserialize(buf)?; - let spend_anchor: Option> = - Option::<[u8; 32]>::deserialize(buf)?.map(|x| bls12_381::Scalar::from_bytes(&x).into()); + fn deserialize_reader(reader: &mut R) -> std::io::Result { + let params = P::deserialize_reader(reader)?; + let spend_anchor: Option> = Option::<[u8; 32]>::deserialize_reader(reader)? + .map(|x| bls12_381::Scalar::from_bytes(&x).into()); let spend_anchor = spend_anchor .map(|x| x.ok_or_else(|| std::io::Error::from(std::io::ErrorKind::InvalidData))) .transpose()?; - let target_height = BlockHeight::deserialize(buf)?; - let value_balance = I128Sum::deserialize(buf)?; - let convert_anchor: Option> = - Option::<[u8; 32]>::deserialize(buf)?.map(|x| bls12_381::Scalar::from_bytes(&x).into()); + let target_height = BlockHeight::deserialize_reader(reader)?; + let value_balance = I128Sum::deserialize_reader(reader)?; + let convert_anchor: Option> = Option::<[u8; 32]>::deserialize_reader(reader)? + .map(|x| bls12_381::Scalar::from_bytes(&x).into()); let convert_anchor = convert_anchor .map(|x| x.ok_or_else(|| std::io::Error::from(std::io::ErrorKind::InvalidData))) .transpose()?; - let spends = Vec::>::deserialize(buf)?; - let converts = Vec::::deserialize(buf)?; - let outputs = Vec::::deserialize(buf)?; + let spends = Vec::>::deserialize_reader(reader)?; + let converts = Vec::::deserialize_reader(reader)?; + let outputs = Vec::::deserialize_reader(reader)?; Ok(SaplingBuilder { params, spend_anchor, @@ -864,7 +865,7 @@ pub mod testing { fn arb_bundle()(n_notes in 1..30usize)( extsk in arb_extended_spending_key(), spendable_notes in vec( - arb_positive_note_value(MAX_MONEY as u64 / 10000).prop_flat_map(arb_note), + arb_positive_note_value(MAX_MONEY / 10000).prop_flat_map(arb_note), n_notes ), commitment_trees in vec( diff --git a/masp_primitives/src/transaction/components/transparent.rs b/masp_primitives/src/transaction/components/transparent.rs index 85391e8c..96305ee6 100644 --- a/masp_primitives/src/transaction/components/transparent.rs +++ b/masp_primitives/src/transaction/components/transparent.rs @@ -91,12 +91,7 @@ pub struct TxIn { impl TxIn { pub fn read(reader: &mut R) -> io::Result { - let asset_type = { - let mut tmp = [0u8; 32]; - reader.read_exact(&mut tmp)?; - AssetType::from_identifier(&tmp) - } - .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "invalid asset identifier"))?; + let asset_type = AssetType::read(reader)?; let value = { let mut tmp = [0u8; 8]; reader.read_exact(&mut tmp)?; @@ -138,12 +133,7 @@ pub struct TxOut { impl TxOut { pub fn read(reader: &mut R) -> io::Result { - let asset_type = { - let mut tmp = [0u8; 32]; - reader.read_exact(&mut tmp)?; - AssetType::from_identifier(&tmp) - } - .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "invalid asset identifier"))?; + let asset_type = AssetType::read(reader)?; let value = { let mut tmp = [0u8; 8]; reader.read_exact(&mut tmp)?; @@ -182,13 +172,13 @@ impl TxOut { } impl BorshDeserialize for TxOut { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Self::read(buf) + fn deserialize_reader(reader: &mut R) -> io::Result { + Self::read(reader) } } impl BorshSerialize for TxOut { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.write(writer) } } @@ -237,3 +227,41 @@ pub mod testing { } } } + +#[cfg(test)] +mod test_serialization { + use super::*; + + /// Simple test that a serialization round trip is the identity + #[test] + fn test_roundtrip_txin() { + let asset_type = AssetType::new_with_nonce(&[1, 2, 3, 4], 1).expect("Test failed"); + let txin = TxIn:: { + asset_type, + value: MAX_MONEY - 1, + address: TransparentAddress([12u8; 20]), + transparent_sig: (), + }; + + let mut buf = vec![]; + txin.write(&mut buf).expect("Test failed"); + let deserialized = TxIn::read::<&[u8]>(&mut buf.as_ref()).expect("Test failed"); + assert_eq!(deserialized, txin); + } + + /// Simple test that a serialization round trip is the identity + #[test] + fn test_roundtrip_txout() { + let asset_type = AssetType::new_with_nonce(&[1, 2, 3, 4], 1).expect("Test failed"); + let txout = TxOut { + asset_type, + value: MAX_MONEY - 1, + address: TransparentAddress([12u8; 20]), + }; + + let mut buf = vec![]; + txout.write(&mut buf).expect("Test failed"); + let deserialized = TxOut::read::<&[u8]>(&mut buf.as_ref()).expect("Test failed"); + assert_eq!(deserialized, txout); + } +} diff --git a/masp_primitives/src/zip32.rs b/masp_primitives/src/zip32.rs index 2e1c9725..f1119001 100644 --- a/masp_primitives/src/zip32.rs +++ b/masp_primitives/src/zip32.rs @@ -151,7 +151,7 @@ mod tests { let too_big = DiversifierIndex([ 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]); - assert!(matches!(u32::try_from(too_big), Err(_))); + assert!(u32::try_from(too_big).is_err()); } } diff --git a/masp_primitives/src/zip32/sapling.rs b/masp_primitives/src/zip32/sapling.rs index cef06ca8..d8643c3f 100644 --- a/masp_primitives/src/zip32/sapling.rs +++ b/masp_primitives/src/zip32/sapling.rs @@ -516,13 +516,13 @@ impl std::fmt::Debug for ExtendedFullViewingKey { } impl BorshDeserialize for ExtendedSpendingKey { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Self::read(buf) + fn deserialize_reader(reader: &mut R) -> io::Result { + Self::read(reader) } } impl BorshSerialize for ExtendedSpendingKey { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.write(writer) } } @@ -541,37 +541,27 @@ impl<'a> From<&'a ExtendedSpendingKey> for ExtendedFullViewingKey { } impl BorshDeserialize for ExtendedFullViewingKey { - fn deserialize(buf: &mut &[u8]) -> borsh::maybestd::io::Result { - Self::read(buf) + fn deserialize_reader(reader: &mut R) -> io::Result { + Self::read(reader) } } impl BorshSerialize for ExtendedFullViewingKey { - fn serialize(&self, writer: &mut W) -> borsh::maybestd::io::Result<()> { + fn serialize(&self, writer: &mut W) -> io::Result<()> { self.write(writer) } } impl PartialOrd for ExtendedFullViewingKey { fn partial_cmp(&self, other: &Self) -> Option { - let a = self - .try_to_vec() - .expect("unable to canonicalize ExtendedFullViewingKey"); - let b = other - .try_to_vec() - .expect("unable to canonicalize ExtendedFullViewingKey"); - a.partial_cmp(&b) + Some(self.cmp(other)) } } impl Ord for ExtendedFullViewingKey { fn cmp(&self, other: &Self) -> Ordering { - let a = self - .try_to_vec() - .expect("unable to canonicalize ExtendedFullViewingKey"); - let b = other - .try_to_vec() - .expect("unable to canonicalize ExtendedFullViewingKey"); + let a = borsh::to_vec(self).expect("unable to canonicalize ExtendedFullViewingKey"); + let b = borsh::to_vec(other).expect("unable to canonicalize ExtendedFullViewingKey"); a.cmp(&b) } } @@ -878,24 +868,14 @@ impl FromStr for ExtendedSpendingKey { impl PartialOrd for ExtendedSpendingKey { fn partial_cmp(&self, other: &Self) -> Option { - let a = self - .try_to_vec() - .expect("unable to canonicalize ExtendedSpendingKey"); - let b = other - .try_to_vec() - .expect("unable to canonicalize ExtendedSpendingKey"); - a.partial_cmp(&b) + Some(self.cmp(other)) } } impl Ord for ExtendedSpendingKey { fn cmp(&self, other: &Self) -> Ordering { - let a = self - .try_to_vec() - .expect("unable to canonicalize ExtendedSpendingKey"); - let b = other - .try_to_vec() - .expect("unable to canonicalize ExtendedSpendingKey"); + let a = borsh::to_vec(self).expect("unable to canonicalize ExtendedSpendingKey"); + let b = borsh::to_vec(other).expect("unable to canonicalize ExtendedSpendingKey"); a.cmp(&b) } } diff --git a/masp_proofs/Cargo.toml b/masp_proofs/Cargo.toml index e7618e95..46d06a12 100644 --- a/masp_proofs/Cargo.toml +++ b/masp_proofs/Cargo.toml @@ -2,16 +2,13 @@ name = "masp_proofs" description = "Experimental MASP zk-SNARK circuits and proving APIs, based on zcash_proofs" version = "0.9.0" -authors = [ - "Jack Grigg ", - "joe ", -] +authors = ["Jack Grigg ", "joe "] homepage = "https://github.com/anoma/masp" repository = "https://github.com/anoma/masp" readme = "README.md" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.65" +rust-version = "1.70" categories = ["cryptography::cryptocurrencies"] [package.metadata.docs.rs] @@ -22,10 +19,10 @@ masp_primitives = { version = "0.9", path = "../masp_primitives" } # Dependencies exposed in a public API: # (Breaking upgrades to these require a breaking upgrade to this crate.) -bellman = { version = "0.13.1", default-features = false, features = ["groth16"] } -bls12_381 = "0.7" -group = "0.12" -jubjub = "0.9" +bellman = { version = "0.14", default-features = false, features = ["groth16"] } +bls12_381 = "0.8" +group = "0.13" +jubjub = "0.10" lazy_static = "1" minreq = { version = "2", features = ["https"], optional = true } rand_core = "0.6" @@ -35,9 +32,9 @@ tracing = "0.1" # (Breaking upgrades to these are usually backwards-compatible, but check MSRVs.) blake2b_simd = "1" directories = { version = "4", optional = true } -redjubjub = "0.5" +redjubjub = "0.7" getrandom = { version = "0.2", features = ["js"] } -itertools = "0.10.1" +itertools = "0.11" [dev-dependencies] byteorder = "1" diff --git a/masp_proofs/src/circuit/sapling.rs b/masp_proofs/src/circuit/sapling.rs index 95e2d669..757ffed3 100644 --- a/masp_proofs/src/circuit/sapling.rs +++ b/masp_proofs/src/circuit/sapling.rs @@ -778,7 +778,7 @@ fn test_input_circuit_with_bls12_381_external_test_vectors() { let tree_depth = 32; - let expected_commitment_us = vec![ + let expected_commitment_us = [ "15274760159508878651789682992925045402656388195689586056903525226511870631006", "17926082480702379779301751040578316677060182517930108360303758506447415843229", "47560733217722603616763811825500591868568811326811130069535870262273364981945", @@ -791,7 +791,7 @@ fn test_input_circuit_with_bls12_381_external_test_vectors() { "27618789340710350120647137095252986938132361388195675764406370494688910938013", ]; - let expected_commitment_vs = vec![ + let expected_commitment_vs = [ "34821791232396287888199995100305255761362584209078006239735148846881442279277", "25119990066174545608121950753413857831099772082356729649061420500567639159355", "37379068700729686079521798425830021519833420633231595656391703260880647751299", diff --git a/masp_proofs/src/prover.rs b/masp_proofs/src/prover.rs index 355fb350..7f7cba20 100644 --- a/masp_proofs/src/prover.rs +++ b/masp_proofs/src/prover.rs @@ -247,7 +247,7 @@ impl TxProver for LocalTxProver { fn binding_sig( &self, ctx: &mut Self::SaplingProvingContext, - assets_and_values: &I128Sum, //&[(AssetType, i64)], + assets_and_values: &I128Sum, sighash: &[u8; 32], ) -> Result { ctx.binding_sig(assets_and_values, sighash) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 2c8ed87a..cad9254a 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.65.0" -components = [ "clippy", "rustfmt" ] \ No newline at end of file +channel = "1.70.0" +components = [ "clippy", "rustfmt" ]