From 00b369b2a4b01d2517a872038ab3daecfdb0c545 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Fri, 30 Jul 2021 15:34:36 +0100 Subject: [PATCH] zcash_address: Include HRP inside Unified Address Padding bytes Closes zcash/librustzcash#418. --- components/zcash_address/src/encoding.rs | 18 +- components/zcash_address/src/kind/unified.rs | 93 ++++---- components/zcash_address/src/test_vectors.rs | 236 +++++++++---------- 3 files changed, 179 insertions(+), 168 deletions(-) diff --git a/components/zcash_address/src/encoding.rs b/components/zcash_address/src/encoding.rs index fea681f2b..2697f988a 100644 --- a/components/zcash_address/src/encoding.rs +++ b/components/zcash_address/src/encoding.rs @@ -61,7 +61,7 @@ impl FromStr for ZcashAddress { } }; - return data[..] + return (hrp.as_str(), &data[..]) .try_into() .map(AddressKind::Unified) .map_err(|_| ParseError::InvalidEncoding) @@ -150,14 +150,14 @@ impl fmt::Display for ZcashAddress { }, data, ), - AddressKind::Unified(data) => encode_bech32m( - match self.net { + AddressKind::Unified(data) => { + let hrp = match self.net { Network::Main => unified::MAINNET, Network::Test => unified::TESTNET, Network::Regtest => unified::REGTEST, - }, - &data.to_bytes(), - ), + }; + encode_bech32m(hrp, &data.to_bytes(hrp)) + } AddressKind::P2pkh(data) => encode_b58( match self.net { Network::Main => p2pkh::MAINNET, @@ -227,21 +227,21 @@ mod tests { #[test] fn unified() { encoding( - "u1cd8yzk5mdn4n9r8c24tp8j8e9ethw3rr7ker5zhew3kycyyxggdzfkcq5f9yf2jv8m5ar8krncsntlfpx3p4azvwrkp8z74t3vu4kqq2", + "u175h4qsgd8gujkevz283ka89ul6r2kr25xvachlt5w5srewdwcjacdtm3ku06jazzwk2klezj3kfy2jc9p65l5fgvjhekmnd4myk2m7xn", ZcashAddress { net: Network::Main, kind: AddressKind::Unified(unified::Address(vec![unified::Receiver::Sapling([0; 43])])), }, ); encoding( - "utest1cd8yzk5mdn4n9r8c24tp8j8e9ethw3rr7ker5zhew3kycyyxggdzfkcq5f9yf2jv8m5ar8krncsntlfpx3p4azvwrkp8z74t3vptphj8", + "utest193cmy6pcjrw6cg8rqcxgq6z2095a2mc0hqu0g0gvnlf83em0szx23qtv9722s6qkssz80try4tynp73u9gee3zskye0ztzdz0snrxw7n", ZcashAddress { net: Network::Test, kind: AddressKind::Unified(unified::Address(vec![unified::Receiver::Sapling([0; 43])])), }, ); encoding( - "uregtest1cd8yzk5mdn4n9r8c24tp8j8e9ethw3rr7ker5zhew3kycyyxggdzfkcq5f9yf2jv8m5ar8krncsntlfpx3p4azvwrkp8z74t3vsnt5j0", + "uregtest1dl4mka5saz8xwnf0pttr637jx6su0nejfhzcz3metcmqyzdgktsmm09ese6ew794xqcyp6476nuspvdvx2xk6gn2euvu7fdmrvwl87zx", ZcashAddress { net: Network::Regtest, kind: AddressKind::Unified(unified::Address(vec![unified::Receiver::Sapling([0; 43])])), diff --git a/components/zcash_address/src/kind/unified.rs b/components/zcash_address/src/kind/unified.rs index b624e4038..c65f9fbc8 100644 --- a/components/zcash_address/src/kind/unified.rs +++ b/components/zcash_address/src/kind/unified.rs @@ -204,15 +204,20 @@ impl Receiver { #[derive(Clone, Debug, PartialEq, Eq, Hash)] pub struct Address(pub(crate) Vec); -impl TryFrom<&[u8]> for Address { +impl TryFrom<(&str, &[u8])> for Address { type Error = ParseError; - fn try_from(buf: &[u8]) -> Result { + fn try_from((hrp, buf): (&str, &[u8])) -> Result { let encoded = f4jumble::f4jumble_inv(buf).ok_or(ParseError::InvalidEncoding)?; - // Validate and strip trailing zero bytes. + // Validate and strip trailing padding bytes. + if hrp.len() > 16 { + return Err(ParseError::InvalidEncoding); + } + let mut expected_padding = [0; PADDING_LEN]; + expected_padding[0..hrp.len()].copy_from_slice(hrp.as_bytes()); let encoded = match encoded.split_at(encoded.len() - PADDING_LEN) { - (encoded, tail) if tail == &[0; PADDING_LEN][..] => Ok(encoded), + (encoded, tail) if tail == &expected_padding => Ok(encoded), _ => Err(ParseError::InvalidEncoding), }?; @@ -266,7 +271,9 @@ impl TryFrom> for Address { impl Address { /// Returns the raw encoding of this Unified Address. - pub(crate) fn to_bytes(&self) -> Vec { + pub(crate) fn to_bytes(&self, hrp: &str) -> Vec { + assert!(hrp.len() <= 16); + let encoded: Vec<_> = self .0 .iter() @@ -280,7 +287,8 @@ impl Address { .chain(Some(addr.len() as u8)) .chain(addr.iter().cloned()) }) - .chain(iter::repeat(0).take(PADDING_LEN)) + .chain(hrp.as_bytes().iter().cloned()) + .chain(iter::repeat(0).take(PADDING_LEN - hrp.len())) .collect(); f4jumble::f4jumble(&encoded).unwrap() @@ -313,7 +321,7 @@ mod tests { prelude::*, }; - use super::{Address, ParseError, Receiver, Typecode}; + use super::{Address, ParseError, Receiver, Typecode, MAINNET, REGTEST, TESTNET}; prop_compose! { fn uniform43()(a in uniform11(0u8..), b in uniform32(0u8..)) -> [u8; 43] { @@ -351,9 +359,12 @@ mod tests { proptest! { #[test] - fn ua_roundtrip(ua in arb_unified_address()) { - let bytes = ua.to_bytes(); - let decoded = Address::try_from(&bytes[..]); + fn ua_roundtrip( + hrp in prop_oneof![MAINNET, TESTNET, REGTEST], + ua in arb_unified_address(), + ) { + let bytes = ua.to_bytes(&hrp); + let decoded = Address::try_from((hrp.as_str(), &bytes[..])); prop_assert_eq!(decoded, Ok(ua)); } } @@ -362,7 +373,7 @@ mod tests { fn padding() { // The test cases below use `Address(vec![Receiver::Orchard([1; 43])])` as base. - // Invalid padding ([0xff; 16] instead of [0x00; 16]) + // Invalid padding ([0xff; 16] instead of [b'u', 0x00, 0x00, 0x00...]) let invalid_padding = [ 0xe6, 0x59, 0xd1, 0xed, 0xf7, 0x4b, 0xe3, 0x5e, 0x5a, 0x54, 0x0e, 0x41, 0x5d, 0x2f, 0x0c, 0x0d, 0x33, 0x42, 0xbd, 0xbe, 0x9f, 0x82, 0x62, 0x01, 0xc1, 0x1b, 0xd4, 0x1e, @@ -371,20 +382,20 @@ mod tests { 0x7b, 0x28, 0x69, 0xc9, 0x84, ]; assert_eq!( - Address::try_from(&invalid_padding[..]), + Address::try_from((MAINNET, &invalid_padding[..])), Err(ParseError::InvalidEncoding) ); // Truncated padding ([0x00; 15] instead of [0x00; 16]) let truncated_padding = [ - 0x20, 0x67, 0xa5, 0xec, 0x48, 0x5c, 0xdb, 0x25, 0xa1, 0x37, 0xf7, 0x73, 0xc3, 0xae, - 0x62, 0x9e, 0xa5, 0x0e, 0x90, 0x5f, 0xda, 0xea, 0x5a, 0xe7, 0x4c, 0xb1, 0xda, 0xd9, - 0x24, 0xab, 0x92, 0x2f, 0xe6, 0xa4, 0x77, 0xa0, 0xa6, 0xb5, 0xfc, 0x0c, 0x61, 0xf4, - 0xe1, 0x89, 0x1e, 0x88, 0xa0, 0x25, 0xd8, 0xc7, 0x39, 0xa4, 0x4a, 0xc9, 0xbf, 0x3c, - 0x3b, 0xe8, 0xfd, 0x0f, + 0x9a, 0x56, 0x12, 0xa3, 0x43, 0x45, 0xe0, 0x82, 0x6c, 0xac, 0x24, 0x8b, 0x3b, 0x45, + 0x72, 0x9a, 0x53, 0xd5, 0xf8, 0xda, 0xec, 0x07, 0x7c, 0xba, 0x9f, 0xa8, 0xd2, 0x97, + 0x5b, 0xda, 0x73, 0x1b, 0xd2, 0xd1, 0x32, 0x6b, 0x7b, 0x36, 0xdd, 0x57, 0x84, 0x2a, + 0xa0, 0x21, 0x23, 0x89, 0x73, 0x85, 0xe1, 0x4b, 0x3e, 0x95, 0xb7, 0xd4, 0x67, 0xbc, + 0x4b, 0x31, 0xee, 0x5a, ]; assert_eq!( - Address::try_from(&truncated_padding[..]), + Address::try_from((MAINNET, &truncated_padding[..])), Err(ParseError::InvalidEncoding) ); } @@ -397,30 +408,30 @@ mod tests { // - Missing the last data byte of the Sapling receiver. let truncated_sapling_data = [ - 0x7a, 0x1f, 0xfd, 0x14, 0x0d, 0x0c, 0x5b, 0x36, 0x35, 0x37, 0x13, 0x6f, 0xc8, 0xa7, - 0x69, 0x48, 0x8d, 0x49, 0x0c, 0x41, 0x4d, 0xdf, 0x16, 0xc1, 0x91, 0xeb, 0xc7, 0xcb, - 0x4f, 0xca, 0x20, 0xa5, 0xa6, 0x9c, 0xcb, 0x63, 0xc6, 0x81, 0xbe, 0x8f, 0xac, 0xb7, - 0x1b, 0x7a, 0x11, 0x3f, 0xda, 0x36, 0x73, 0x4e, 0x75, 0x0f, 0x0b, 0x1f, 0x62, 0x6f, - 0x83, 0xba, 0xe0, 0xf4, 0x02, 0x81, 0x63, 0x61, 0x83, 0xbc, 0x48, 0xd8, 0x7d, 0x29, - 0xdc, 0x4f, 0xf7, 0xfd, 0x85, 0x0f, 0xfd, 0xc9, 0x60, 0x54, 0x4a, 0x87, 0x84, 0xfd, - 0x49, 0xb4, 0x4f, 0x7d, 0x9a, 0x6f, 0x37, 0x65, 0x35, 0x7c, 0x18, 0xeb, 0xd7, 0x52, - 0xb7, 0xb5, 0x80, 0x53, 0x64, 0x8d, 0x71, + 0xaa, 0xb0, 0x6e, 0x7b, 0x26, 0x7a, 0x22, 0x17, 0x39, 0xfa, 0x07, 0x69, 0xe9, 0x32, + 0x2b, 0xac, 0x8c, 0x9e, 0x5e, 0x8a, 0xd9, 0x24, 0x06, 0x5a, 0x13, 0x79, 0x3a, 0x8d, + 0xb4, 0x52, 0xfa, 0x18, 0x4e, 0x33, 0x4d, 0x8c, 0x17, 0x77, 0x4d, 0x63, 0x69, 0x34, + 0x22, 0x70, 0x3a, 0xea, 0x30, 0x82, 0x5a, 0x6b, 0x37, 0xd1, 0x0d, 0xbe, 0x20, 0xab, + 0x82, 0x86, 0x98, 0x34, 0x6a, 0xd8, 0x45, 0x40, 0xd0, 0x25, 0x60, 0xbf, 0x1e, 0xb6, + 0xeb, 0x06, 0x85, 0x70, 0x4c, 0x42, 0xbc, 0x19, 0x14, 0xef, 0x7a, 0x05, 0xa0, 0x71, + 0xb2, 0x63, 0x80, 0xbb, 0xdc, 0x12, 0x08, 0x48, 0x28, 0x8f, 0x1c, 0x9e, 0xc3, 0x42, + 0xc6, 0x5e, 0x68, 0xa2, 0x78, 0x6c, 0x9e, ]; assert_eq!( - Address::try_from(&truncated_sapling_data[..]), + Address::try_from((MAINNET, &truncated_sapling_data[..])), Err(ParseError::InvalidEncoding) ); // - Truncated after the typecode of the Sapling receiver. let truncated_after_sapling_typecode = [ - 0xb3, 0x8f, 0xc3, 0xfd, 0xe9, 0xfa, 0x66, 0x51, 0x8a, 0xac, 0xcf, 0x31, 0x82, 0xcf, - 0xaa, 0x0b, 0xd9, 0x9e, 0xe5, 0x01, 0xbd, 0xc2, 0xdb, 0x8f, 0xb1, 0xea, 0x08, 0x3b, - 0x6e, 0xd7, 0x71, 0x22, 0x15, 0xfe, 0xe2, 0xcd, 0x2d, 0xda, 0xbd, 0x79, 0x6a, 0x92, - 0xd6, 0xb0, 0x69, 0x02, 0x0e, 0xae, 0x95, 0x58, 0xdf, 0x89, 0x80, 0xaa, 0x71, 0xb6, - 0x01, 0x56, 0x60, 0xb2, 0x61, 0xf1, + 0x87, 0x7a, 0xdf, 0x79, 0x6b, 0xe3, 0xb3, 0x40, 0xef, 0xe4, 0x5d, 0xc2, 0x91, 0xa2, + 0x81, 0xfc, 0x7d, 0x76, 0xbb, 0xb0, 0x58, 0x98, 0x53, 0x59, 0xd3, 0x3f, 0xbc, 0x4b, + 0x86, 0x59, 0x66, 0x62, 0x75, 0x92, 0xba, 0xcc, 0x31, 0x1e, 0x60, 0x02, 0x3b, 0xd8, + 0x4c, 0xdf, 0x36, 0xa1, 0xac, 0x82, 0x57, 0xed, 0x0c, 0x98, 0x49, 0x8f, 0x49, 0x7e, + 0xe6, 0x70, 0x36, 0x5b, 0x7b, 0x9e, ]; assert_eq!( - Address::try_from(&truncated_after_sapling_typecode[..]), + Address::try_from((MAINNET, &truncated_after_sapling_typecode[..])), Err(ParseError::InvalidEncoding) ); } @@ -429,9 +440,9 @@ mod tests { fn duplicate_typecode() { // Construct and serialize an invalid UA. let ua = Address(vec![Receiver::Sapling([1; 43]), Receiver::Sapling([2; 43])]); - let encoded = ua.to_bytes(); + let encoded = ua.to_bytes(MAINNET); assert_eq!( - Address::try_from(&encoded[..]), + Address::try_from((MAINNET, &encoded[..])), Err(ParseError::DuplicateTypecode(Typecode::Sapling)) ); } @@ -440,9 +451,9 @@ mod tests { fn p2pkh_and_p2sh() { // Construct and serialize an invalid UA. let ua = Address(vec![Receiver::P2pkh([0; 20]), Receiver::P2sh([0; 20])]); - let encoded = ua.to_bytes(); + let encoded = ua.to_bytes(MAINNET); assert_eq!( - Address::try_from(&encoded[..]), + Address::try_from((MAINNET, &encoded[..])), Err(ParseError::BothP2phkAndP2sh) ); } @@ -451,9 +462,9 @@ mod tests { fn only_transparent() { // Encoding of `Address(vec![Receiver::P2pkh([0; 20])])`. let encoded = vec![ - 0x3b, 0x3d, 0xe6, 0xb3, 0xed, 0xaa, 0x0a, 0x36, 0x12, 0xbc, 0x8d, 0x2b, 0x1a, 0xaa, - 0x27, 0x7e, 0x45, 0xc0, 0xc2, 0x0e, 0xf9, 0x6f, 0x24, 0x9b, 0x79, 0x0a, 0x68, 0x76, - 0xa8, 0x4c, 0x3f, 0xf0, 0x1f, 0x39, 0x97, 0xbd, 0x15, 0x0d, + 0xf0, 0x9e, 0x9d, 0x6e, 0xf5, 0xa6, 0xac, 0x16, 0x50, 0xf0, 0xdb, 0xe1, 0x2c, 0xa5, + 0x36, 0x22, 0xa2, 0x04, 0x89, 0x86, 0xe9, 0x6a, 0x9b, 0xf3, 0xff, 0x6d, 0x2f, 0xe6, + 0xea, 0xdb, 0xc5, 0x20, 0x62, 0xf9, 0x6f, 0xa9, 0x86, 0xcc, ]; // We can't actually exercise this error, because at present the only transparent @@ -461,7 +472,7 @@ mod tests { // with only one of them we don't have sufficient data for F4Jumble (so we hit a // different error). assert_eq!( - Address::try_from(&encoded[..]), + Address::try_from((MAINNET, &encoded[..])), Err(ParseError::InvalidEncoding) ); } diff --git a/components/zcash_address/src/test_vectors.rs b/components/zcash_address/src/test_vectors.rs index f9bc2b5d2..0de7986c5 100644 --- a/components/zcash_address/src/test_vectors.rs +++ b/components/zcash_address/src/test_vectors.rs @@ -31,17 +31,17 @@ fn unified() { 0xae, ]), unified_addr: vec![ - 0x75, 0x31, 0x78, 0x35, 0x6b, 0x66, 0x32, 0x6a, 0x64, 0x6c, 0x37, 0x39, 0x6b, 0x71, - 0x70, 0x65, 0x39, 0x64, 0x75, 0x7a, 0x7a, 0x39, 0x79, 0x66, 0x7a, 0x79, 0x6a, 0x72, - 0x64, 0x37, 0x32, 0x73, 0x64, 0x61, 0x36, 0x71, 0x65, 0x70, 0x32, 0x39, 0x32, 0x65, - 0x36, 0x7a, 0x33, 0x6c, 0x6c, 0x61, 0x76, 0x72, 0x70, 0x79, 0x6a, 0x6d, 0x76, 0x74, - 0x36, 0x34, 0x36, 0x30, 0x6e, 0x67, 0x33, 0x66, 0x71, 0x63, 0x77, 0x36, 0x72, 0x63, - 0x64, 0x79, 0x65, 0x6e, 0x64, 0x68, 0x75, 0x6a, 0x68, 0x34, 0x64, 0x32, 0x63, 0x76, - 0x79, 0x79, 0x35, 0x74, 0x32, 0x68, 0x78, 0x78, 0x34, 0x73, 0x64, 0x78, 0x79, 0x73, - 0x32, 0x6d, 0x76, 0x34, 0x67, 0x67, 0x63, 0x7a, 0x64, 0x32, 0x7a, 0x67, 0x6e, 0x73, - 0x61, 0x61, 0x66, 0x70, 0x78, 0x35, 0x70, 0x61, 0x73, 0x67, 0x35, 0x32, 0x64, 0x6d, - 0x32, 0x37, 0x30, 0x65, 0x74, 0x75, 0x7a, 0x37, 0x78, 0x79, 0x78, 0x77, 0x65, 0x75, - 0x39, + 0x75, 0x31, 0x65, 0x32, 0x38, 0x66, 0x38, 0x78, 0x7a, 0x6e, 0x65, 0x6d, 0x67, 0x65, + 0x74, 0x79, 0x78, 0x72, 0x64, 0x7a, 0x6b, 0x66, 0x67, 0x6a, 0x75, 0x67, 0x73, 0x66, + 0x78, 0x39, 0x64, 0x6b, 0x71, 0x32, 0x74, 0x68, 0x6e, 0x65, 0x7a, 0x65, 0x39, 0x6c, + 0x33, 0x34, 0x74, 0x70, 0x76, 0x74, 0x70, 0x6d, 0x65, 0x6a, 0x65, 0x67, 0x74, 0x64, + 0x35, 0x67, 0x68, 0x6b, 0x77, 0x68, 0x67, 0x6a, 0x72, 0x68, 0x73, 0x64, 0x66, 0x64, + 0x6e, 0x74, 0x33, 0x6b, 0x34, 0x73, 0x66, 0x32, 0x75, 0x79, 0x39, 0x65, 0x61, 0x38, + 0x63, 0x74, 0x61, 0x75, 0x6d, 0x7a, 0x70, 0x75, 0x64, 0x6c, 0x65, 0x7a, 0x35, 0x66, + 0x67, 0x75, 0x6c, 0x77, 0x71, 0x6b, 0x70, 0x75, 0x35, 0x66, 0x76, 0x6a, 0x77, 0x79, + 0x63, 0x74, 0x74, 0x7a, 0x79, 0x64, 0x6c, 0x38, 0x36, 0x64, 0x37, 0x34, 0x34, 0x61, + 0x34, 0x30, 0x61, 0x71, 0x75, 0x74, 0x7a, 0x68, 0x7a, 0x76, 0x74, 0x79, 0x7a, 0x6e, + 0x68, ], }, TestVector { @@ -63,22 +63,22 @@ fn unified() { 0x9f, ]), unified_addr: vec![ - 0x75, 0x31, 0x38, 0x38, 0x63, 0x73, 0x33, 0x39, 0x30, 0x65, 0x32, 0x37, 0x66, 0x32, - 0x34, 0x68, 0x77, 0x67, 0x64, 0x68, 0x39, 0x65, 0x73, 0x75, 0x65, 0x32, 0x79, 0x6b, - 0x73, 0x38, 0x6c, 0x32, 0x30, 0x74, 0x32, 0x71, 0x36, 0x78, 0x64, 0x68, 0x6a, 0x39, - 0x64, 0x6d, 0x32, 0x39, 0x6c, 0x38, 0x77, 0x37, 0x6d, 0x34, 0x72, 0x64, 0x38, 0x33, - 0x64, 0x73, 0x70, 0x6d, 0x72, 0x74, 0x32, 0x71, 0x33, 0x64, 0x35, 0x74, 0x6e, 0x36, - 0x37, 0x6e, 0x36, 0x73, 0x79, 0x73, 0x6e, 0x74, 0x38, 0x30, 0x68, 0x72, 0x38, 0x7a, - 0x67, 0x6e, 0x63, 0x77, 0x37, 0x6b, 0x38, 0x38, 0x67, 0x35, 0x30, 0x6e, 0x63, 0x76, - 0x36, 0x78, 0x74, 0x65, 0x38, 0x35, 0x67, 0x6b, 0x67, 0x6e, 0x70, 0x7a, 0x79, 0x64, - 0x70, 0x37, 0x74, 0x73, 0x67, 0x67, 0x71, 0x66, 0x34, 0x35, 0x33, 0x72, 0x34, 0x64, - 0x78, 0x71, 0x64, 0x35, 0x6d, 0x6b, 0x78, 0x75, 0x75, 0x61, 0x37, 0x79, 0x38, 0x34, - 0x38, 0x71, 0x74, 0x7a, 0x65, 0x38, 0x33, 0x65, 0x76, 0x37, 0x77, 0x36, 0x6a, 0x67, - 0x6d, 0x6a, 0x77, 0x38, 0x36, 0x39, 0x35, 0x79, 0x34, 0x75, 0x33, 0x7a, 0x77, 0x78, - 0x32, 0x66, 0x71, 0x63, 0x7a, 0x6b, 0x68, 0x75, 0x68, 0x79, 0x38, 0x35, 0x6a, 0x67, - 0x64, 0x74, 0x6a, 0x72, 0x34, 0x33, 0x39, 0x36, 0x6a, 0x6d, 0x64, 0x67, 0x64, 0x39, - 0x37, 0x38, 0x37, 0x68, 0x66, 0x37, 0x39, 0x78, 0x36, 0x34, 0x78, 0x6b, 0x32, 0x64, - 0x6e, 0x6a, 0x70, + 0x75, 0x31, 0x33, 0x71, 0x73, 0x32, 0x78, 0x79, 0x6b, 0x66, 0x73, 0x74, 0x64, 0x34, + 0x33, 0x32, 0x77, 0x70, 0x76, 0x36, 0x63, 0x68, 0x36, 0x73, 0x36, 0x63, 0x6b, 0x68, + 0x34, 0x73, 0x34, 0x68, 0x33, 0x73, 0x63, 0x72, 0x74, 0x64, 0x35, 0x68, 0x6b, 0x61, + 0x79, 0x36, 0x72, 0x77, 0x36, 0x6a, 0x6e, 0x36, 0x67, 0x65, 0x6e, 0x37, 0x34, 0x72, + 0x6d, 0x76, 0x63, 0x61, 0x36, 0x35, 0x77, 0x75, 0x73, 0x67, 0x71, 0x65, 0x36, 0x37, + 0x71, 0x6d, 0x6b, 0x6b, 0x66, 0x7a, 0x79, 0x68, 0x6c, 0x6b, 0x77, 0x67, 0x38, 0x30, + 0x71, 0x79, 0x6a, 0x33, 0x72, 0x63, 0x63, 0x61, 0x6e, 0x68, 0x35, 0x66, 0x67, 0x37, + 0x7a, 0x73, 0x39, 0x30, 0x32, 0x79, 0x32, 0x34, 0x67, 0x6e, 0x32, 0x71, 0x79, 0x66, + 0x36, 0x70, 0x6b, 0x63, 0x63, 0x63, 0x68, 0x67, 0x30, 0x35, 0x6a, 0x7a, 0x70, 0x33, + 0x79, 0x72, 0x66, 0x6e, 0x34, 0x70, 0x75, 0x38, 0x61, 0x74, 0x65, 0x38, 0x67, 0x37, + 0x71, 0x39, 0x72, 0x39, 0x73, 0x74, 0x65, 0x76, 0x78, 0x32, 0x38, 0x34, 0x34, 0x35, + 0x72, 0x35, 0x77, 0x6e, 0x33, 0x78, 0x33, 0x35, 0x70, 0x66, 0x37, 0x71, 0x71, 0x33, + 0x32, 0x34, 0x6e, 0x74, 0x68, 0x78, 0x74, 0x7a, 0x63, 0x77, 0x78, 0x65, 0x76, 0x79, + 0x66, 0x61, 0x34, 0x6c, 0x32, 0x6d, 0x32, 0x6d, 0x32, 0x78, 0x73, 0x37, 0x65, 0x64, + 0x76, 0x65, 0x70, 0x39, 0x66, 0x74, 0x61, 0x34, 0x76, 0x74, 0x77, 0x76, 0x68, 0x6b, + 0x61, 0x78, 0x78, ], }, TestVector { @@ -95,17 +95,17 @@ fn unified() { 0x93, ]), unified_addr: vec![ - 0x75, 0x31, 0x79, 0x76, 0x34, 0x78, 0x33, 0x6d, 0x78, 0x6e, 0x33, 0x64, 0x78, 0x7a, - 0x30, 0x33, 0x74, 0x6b, 0x76, 0x33, 0x65, 0x75, 0x64, 0x68, 0x61, 0x68, 0x38, 0x78, - 0x63, 0x78, 0x38, 0x36, 0x6d, 0x66, 0x33, 0x71, 0x76, 0x67, 0x32, 0x6a, 0x39, 0x7a, - 0x6c, 0x61, 0x65, 0x6a, 0x67, 0x6b, 0x71, 0x6c, 0x36, 0x66, 0x33, 0x79, 0x7a, 0x6d, - 0x6e, 0x74, 0x79, 0x38, 0x75, 0x76, 0x36, 0x38, 0x68, 0x36, 0x67, 0x74, 0x61, 0x6a, - 0x38, 0x67, 0x7a, 0x67, 0x6c, 0x71, 0x67, 0x6d, 0x77, 0x75, 0x72, 0x30, 0x61, 0x64, - 0x6b, 0x68, 0x67, 0x65, 0x30, 0x76, 0x71, 0x63, 0x6e, 0x74, 0x61, 0x76, 0x68, 0x39, - 0x33, 0x35, 0x30, 0x74, 0x37, 0x38, 0x7a, 0x79, 0x63, 0x77, 0x72, 0x34, 0x6c, 0x36, - 0x34, 0x63, 0x74, 0x66, 0x33, 0x71, 0x6e, 0x39, 0x34, 0x63, 0x74, 0x72, 0x79, 0x73, - 0x38, 0x35, 0x6e, 0x6c, 0x34, 0x76, 0x30, 0x6c, 0x77, 0x38, 0x32, 0x70, 0x76, 0x71, - 0x73, + 0x75, 0x31, 0x72, 0x70, 0x77, 0x6b, 0x64, 0x35, 0x78, 0x37, 0x74, 0x65, 0x34, 0x65, + 0x7a, 0x63, 0x6d, 0x6c, 0x71, 0x61, 0x72, 0x67, 0x6b, 0x66, 0x33, 0x63, 0x72, 0x73, + 0x70, 0x66, 0x71, 0x6b, 0x68, 0x6d, 0x78, 0x77, 0x66, 0x73, 0x71, 0x70, 0x71, 0x30, + 0x32, 0x34, 0x6a, 0x61, 0x73, 0x73, 0x32, 0x67, 0x37, 0x34, 0x65, 0x34, 0x72, 0x33, + 0x36, 0x7a, 0x70, 0x35, 0x30, 0x71, 0x73, 0x73, 0x33, 0x76, 0x68, 0x63, 0x74, 0x37, + 0x32, 0x73, 0x61, 0x63, 0x68, 0x75, 0x73, 0x30, 0x6b, 0x37, 0x30, 0x35, 0x78, 0x79, + 0x67, 0x68, 0x75, 0x6c, 0x72, 0x6a, 0x78, 0x63, 0x64, 0x77, 0x77, 0x64, 0x61, 0x71, + 0x30, 0x71, 0x6a, 0x6e, 0x6e, 0x73, 0x73, 0x66, 0x32, 0x66, 0x76, 0x61, 0x6b, 0x7a, + 0x7a, 0x38, 0x66, 0x34, 0x36, 0x70, 0x77, 0x38, 0x72, 0x63, 0x61, 0x39, 0x33, 0x36, + 0x66, 0x65, 0x79, 0x65, 0x66, 0x36, 0x6d, 0x6c, 0x36, 0x65, 0x71, 0x37, 0x77, 0x6c, + 0x6c, ], }, TestVector { @@ -119,14 +119,14 @@ fn unified() { ]), orchard_raw_addr: None, unified_addr: vec![ - 0x75, 0x31, 0x35, 0x71, 0x66, 0x32, 0x78, 0x72, 0x36, 0x37, 0x30, 0x76, 0x33, 0x79, - 0x71, 0x79, 0x6b, 0x63, 0x74, 0x39, 0x76, 0x63, 0x71, 0x6c, 0x79, 0x35, 0x68, 0x70, - 0x79, 0x76, 0x6b, 0x6d, 0x68, 0x38, 0x6b, 0x33, 0x71, 0x63, 0x6c, 0x71, 0x35, 0x36, - 0x76, 0x64, 0x68, 0x6d, 0x70, 0x30, 0x38, 0x63, 0x36, 0x71, 0x7a, 0x30, 0x72, 0x6c, - 0x6e, 0x76, 0x34, 0x67, 0x30, 0x71, 0x68, 0x61, 0x39, 0x75, 0x73, 0x6e, 0x6c, 0x37, - 0x33, 0x6b, 0x71, 0x35, 0x39, 0x37, 0x68, 0x38, 0x76, 0x33, 0x63, 0x37, 0x72, 0x74, - 0x71, 0x77, 0x65, 0x30, 0x35, 0x75, 0x32, 0x68, 0x36, 0x63, 0x70, 0x35, 0x70, 0x63, - 0x74, 0x76, 0x7a, 0x7a, 0x34, 0x6c, 0x74, 0x63, + 0x75, 0x31, 0x39, 0x64, 0x68, 0x78, 0x6d, 0x38, 0x38, 0x67, 0x76, 0x63, 0x77, 0x39, + 0x74, 0x77, 0x74, 0x76, 0x7a, 0x6b, 0x75, 0x37, 0x63, 0x7a, 0x37, 0x6a, 0x75, 0x33, + 0x72, 0x76, 0x70, 0x75, 0x35, 0x6a, 0x76, 0x68, 0x32, 0x63, 0x71, 0x38, 0x67, 0x6d, + 0x38, 0x71, 0x64, 0x65, 0x76, 0x6e, 0x6c, 0x34, 0x65, 0x73, 0x65, 0x79, 0x38, 0x33, + 0x66, 0x7a, 0x72, 0x39, 0x79, 0x6d, 0x66, 0x61, 0x33, 0x67, 0x6a, 0x6d, 0x6d, 0x6b, + 0x34, 0x72, 0x78, 0x6a, 0x32, 0x79, 0x70, 0x38, 0x38, 0x67, 0x74, 0x78, 0x64, 0x6b, + 0x71, 0x67, 0x6e, 0x6a, 0x36, 0x6e, 0x6e, 0x71, 0x79, 0x74, 0x66, 0x75, 0x68, 0x30, + 0x38, 0x75, 0x79, 0x63, 0x35, 0x66, 0x75, 0x72, ], }, TestVector { @@ -148,22 +148,22 @@ fn unified() { 0xad, ]), unified_addr: vec![ - 0x75, 0x31, 0x30, 0x65, 0x7a, 0x61, 0x68, 0x79, 0x36, 0x70, 0x71, 0x30, 0x70, 0x34, - 0x68, 0x7a, 0x65, 0x70, 0x36, 0x66, 0x37, 0x65, 0x64, 0x70, 0x67, 0x75, 0x37, 0x6c, - 0x67, 0x77, 0x75, 0x30, 0x79, 0x63, 0x72, 0x36, 0x6c, 0x6c, 0x64, 0x63, 0x79, 0x6a, - 0x36, 0x71, 0x35, 0x30, 0x35, 0x6e, 0x67, 0x61, 0x76, 0x72, 0x70, 0x6b, 0x76, 0x65, - 0x34, 0x35, 0x74, 0x61, 0x39, 0x68, 0x61, 0x77, 0x65, 0x71, 0x66, 0x6c, 0x33, 0x61, - 0x76, 0x37, 0x68, 0x32, 0x39, 0x77, 0x34, 0x6d, 0x63, 0x37, 0x77, 0x63, 0x6a, 0x7a, - 0x38, 0x71, 0x68, 0x6a, 0x79, 0x71, 0x32, 0x72, 0x6e, 0x6d, 0x68, 0x61, 0x38, 0x72, - 0x71, 0x71, 0x6b, 0x34, 0x61, 0x6d, 0x38, 0x61, 0x71, 0x34, 0x61, 0x34, 0x6a, 0x6d, - 0x74, 0x32, 0x63, 0x32, 0x6e, 0x6a, 0x37, 0x74, 0x63, 0x68, 0x65, 0x37, 0x65, 0x64, - 0x75, 0x71, 0x36, 0x79, 0x68, 0x61, 0x35, 0x36, 0x76, 0x6b, 0x73, 0x34, 0x39, 0x71, - 0x70, 0x6c, 0x77, 0x78, 0x6b, 0x70, 0x77, 0x61, 0x33, 0x36, 0x66, 0x67, 0x68, 0x64, - 0x36, 0x70, 0x36, 0x33, 0x6c, 0x79, 0x67, 0x63, 0x70, 0x63, 0x39, 0x79, 0x67, 0x74, - 0x77, 0x39, 0x64, 0x61, 0x76, 0x30, 0x78, 0x63, 0x66, 0x32, 0x6d, 0x78, 0x72, 0x70, - 0x38, 0x75, 0x30, 0x36, 0x74, 0x74, 0x68, 0x34, 0x68, 0x67, 0x67, 0x32, 0x38, 0x39, - 0x37, 0x30, 0x73, 0x68, 0x79, 0x64, 0x68, 0x63, 0x78, 0x71, 0x79, 0x6a, 0x79, 0x72, - 0x6b, 0x32, 0x35, + 0x75, 0x31, 0x35, 0x63, 0x32, 0x79, 0x72, 0x66, 0x6a, 0x77, 0x74, 0x74, 0x36, 0x36, + 0x33, 0x6e, 0x71, 0x30, 0x68, 0x70, 0x71, 0x73, 0x68, 0x36, 0x78, 0x74, 0x6a, 0x79, + 0x32, 0x38, 0x38, 0x7a, 0x74, 0x76, 0x61, 0x63, 0x75, 0x61, 0x6c, 0x37, 0x33, 0x6d, + 0x66, 0x66, 0x75, 0x72, 0x33, 0x38, 0x33, 0x6d, 0x74, 0x65, 0x70, 0x63, 0x39, 0x68, + 0x72, 0x78, 0x74, 0x33, 0x74, 0x70, 0x34, 0x65, 0x61, 0x35, 0x68, 0x37, 0x38, 0x30, + 0x70, 0x67, 0x33, 0x68, 0x6b, 0x35, 0x75, 0x6a, 0x32, 0x67, 0x75, 0x39, 0x37, 0x70, + 0x32, 0x6c, 0x75, 0x6d, 0x39, 0x71, 0x6a, 0x68, 0x36, 0x32, 0x78, 0x72, 0x61, 0x37, + 0x63, 0x33, 0x68, 0x79, 0x36, 0x6e, 0x64, 0x71, 0x32, 0x78, 0x77, 0x68, 0x67, 0x37, + 0x65, 0x71, 0x38, 0x71, 0x37, 0x36, 0x76, 0x66, 0x32, 0x38, 0x63, 0x33, 0x32, 0x64, + 0x37, 0x76, 0x6d, 0x6c, 0x33, 0x7a, 0x32, 0x39, 0x34, 0x76, 0x74, 0x38, 0x65, 0x63, + 0x74, 0x63, 0x6c, 0x77, 0x36, 0x72, 0x30, 0x70, 0x32, 0x33, 0x6e, 0x64, 0x70, 0x35, + 0x78, 0x64, 0x7a, 0x66, 0x65, 0x78, 0x63, 0x39, 0x71, 0x77, 0x30, 0x65, 0x77, 0x75, + 0x72, 0x79, 0x6e, 0x6a, 0x35, 0x32, 0x35, 0x73, 0x6b, 0x78, 0x37, 0x6d, 0x30, 0x6a, + 0x75, 0x6b, 0x63, 0x6a, 0x72, 0x65, 0x61, 0x6b, 0x6a, 0x32, 0x61, 0x70, 0x33, 0x32, + 0x37, 0x6b, 0x6a, 0x71, 0x72, 0x76, 0x75, 0x67, 0x65, 0x64, 0x35, 0x66, 0x79, 0x30, + 0x73, 0x7a, 0x79, ], }, TestVector { @@ -182,19 +182,19 @@ fn unified() { 0xae, ]), unified_addr: vec![ - 0x75, 0x31, 0x63, 0x72, 0x30, 0x77, 0x39, 0x35, 0x38, 0x34, 0x6b, 0x61, 0x33, 0x67, - 0x6d, 0x6a, 0x70, 0x68, 0x7a, 0x63, 0x63, 0x6b, 0x30, 0x67, 0x36, 0x36, 0x76, 0x76, - 0x78, 0x6e, 0x38, 0x72, 0x32, 0x66, 0x64, 0x75, 0x66, 0x63, 0x6a, 0x70, 0x74, 0x77, - 0x36, 0x75, 0x34, 0x34, 0x61, 0x65, 0x32, 0x73, 0x79, 0x75, 0x6b, 0x6b, 0x6d, 0x7a, - 0x77, 0x63, 0x71, 0x66, 0x73, 0x77, 0x6b, 0x65, 0x77, 0x6e, 0x7a, 0x6d, 0x7a, 0x7a, - 0x75, 0x71, 0x73, 0x6c, 0x73, 0x79, 0x37, 0x33, 0x63, 0x71, 0x78, 0x70, 0x6d, 0x68, - 0x33, 0x6d, 0x79, 0x79, 0x67, 0x75, 0x6e, 0x6b, 0x6e, 0x6d, 0x73, 0x67, 0x6d, 0x74, - 0x6c, 0x7a, 0x71, 0x6b, 0x74, 0x36, 0x68, 0x6e, 0x74, 0x61, 0x68, 0x79, 0x73, 0x67, - 0x6a, 0x76, 0x7a, 0x77, 0x30, 0x71, 0x33, 0x70, 0x7a, 0x64, 0x78, 0x65, 0x75, 0x76, - 0x66, 0x74, 0x79, 0x78, 0x64, 0x7a, 0x68, 0x70, 0x72, 0x68, 0x73, 0x66, 0x6a, 0x6b, - 0x33, 0x74, 0x68, 0x6e, 0x68, 0x6d, 0x70, 0x67, 0x30, 0x70, 0x68, 0x34, 0x66, 0x6d, - 0x36, 0x38, 0x6b, 0x70, 0x35, 0x38, 0x6d, 0x65, 0x33, 0x36, 0x38, 0x64, 0x64, 0x65, - 0x70, 0x66, 0x64, 0x76, 0x71, 0x35, 0x6e, 0x77, 0x72, 0x6c, + 0x75, 0x31, 0x7a, 0x64, 0x67, 0x39, 0x7a, 0x37, 0x6c, 0x77, 0x32, 0x71, 0x30, 0x37, + 0x35, 0x79, 0x77, 0x39, 0x6e, 0x30, 0x6a, 0x37, 0x66, 0x68, 0x38, 0x72, 0x79, 0x75, + 0x6a, 0x73, 0x72, 0x6a, 0x72, 0x72, 0x37, 0x34, 0x7a, 0x71, 0x78, 0x39, 0x39, 0x33, + 0x74, 0x63, 0x73, 0x68, 0x74, 0x66, 0x6d, 0x6d, 0x32, 0x71, 0x78, 0x6b, 0x74, 0x76, + 0x33, 0x72, 0x30, 0x34, 0x38, 0x65, 0x37, 0x74, 0x72, 0x34, 0x71, 0x35, 0x6a, 0x38, + 0x73, 0x66, 0x65, 0x70, 0x33, 0x67, 0x39, 0x6e, 0x76, 0x38, 0x77, 0x70, 0x78, 0x66, + 0x39, 0x76, 0x74, 0x72, 0x33, 0x6a, 0x7a, 0x6e, 0x6d, 0x6d, 0x35, 0x36, 0x7a, 0x37, + 0x75, 0x70, 0x6a, 0x65, 0x30, 0x35, 0x6b, 0x7a, 0x76, 0x6d, 0x75, 0x72, 0x6d, 0x70, + 0x63, 0x71, 0x70, 0x30, 0x34, 0x63, 0x30, 0x33, 0x37, 0x7a, 0x32, 0x64, 0x68, 0x33, + 0x35, 0x63, 0x64, 0x38, 0x32, 0x32, 0x35, 0x78, 0x74, 0x33, 0x6b, 0x34, 0x37, 0x6e, + 0x7a, 0x66, 0x68, 0x32, 0x79, 0x74, 0x73, 0x76, 0x30, 0x37, 0x6d, 0x33, 0x74, 0x38, + 0x67, 0x64, 0x33, 0x33, 0x70, 0x35, 0x72, 0x32, 0x76, 0x37, 0x6b, 0x66, 0x65, 0x67, + 0x39, 0x34, 0x35, 0x71, 0x37, 0x6a, 0x63, 0x30, 0x67, 0x68, ], }, TestVector { @@ -216,22 +216,22 @@ fn unified() { 0x94, ]), unified_addr: vec![ - 0x75, 0x31, 0x67, 0x6e, 0x33, 0x35, 0x76, 0x78, 0x6d, 0x30, 0x30, 0x66, 0x6b, 0x71, - 0x34, 0x30, 0x63, 0x6c, 0x64, 0x7a, 0x76, 0x71, 0x73, 0x72, 0x76, 0x70, 0x37, 0x33, - 0x6e, 0x36, 0x72, 0x6b, 0x38, 0x30, 0x36, 0x30, 0x6e, 0x6b, 0x39, 0x68, 0x6d, 0x6c, - 0x77, 0x37, 0x65, 0x35, 0x32, 0x30, 0x70, 0x34, 0x6a, 0x73, 0x75, 0x72, 0x65, 0x75, - 0x6b, 0x6e, 0x75, 0x77, 0x38, 0x72, 0x6c, 0x6a, 0x71, 0x66, 0x33, 0x6e, 0x71, 0x76, - 0x61, 0x30, 0x34, 0x74, 0x34, 0x32, 0x6b, 0x6e, 0x66, 0x75, 0x30, 0x71, 0x71, 0x6e, - 0x39, 0x66, 0x6c, 0x68, 0x30, 0x67, 0x6e, 0x70, 0x7a, 0x76, 0x6d, 0x67, 0x38, 0x68, - 0x65, 0x30, 0x70, 0x74, 0x72, 0x72, 0x32, 0x6e, 0x6c, 0x38, 0x30, 0x6a, 0x78, 0x7a, - 0x66, 0x61, 0x78, 0x72, 0x30, 0x39, 0x65, 0x67, 0x39, 0x32, 0x30, 0x35, 0x72, 0x72, - 0x73, 0x72, 0x72, 0x65, 0x73, 0x7a, 0x73, 0x39, 0x30, 0x6c, 0x63, 0x63, 0x38, 0x76, - 0x73, 0x75, 0x61, 0x63, 0x68, 0x36, 0x77, 0x35, 0x35, 0x77, 0x73, 0x34, 0x33, 0x77, - 0x38, 0x63, 0x75, 0x77, 0x71, 0x6d, 0x37, 0x68, 0x73, 0x6e, 0x38, 0x72, 0x34, 0x34, - 0x33, 0x61, 0x61, 0x73, 0x70, 0x36, 0x6d, 0x65, 0x33, 0x32, 0x71, 0x77, 0x34, 0x6c, - 0x76, 0x39, 0x66, 0x65, 0x33, 0x39, 0x39, 0x78, 0x33, 0x33, 0x70, 0x78, 0x38, 0x61, - 0x76, 0x78, 0x65, 0x63, 0x6b, 0x65, 0x6d, 0x76, 0x39, 0x76, 0x32, 0x78, 0x67, 0x36, - 0x6b, 0x6e, 0x37, + 0x75, 0x31, 0x79, 0x6a, 0x77, 0x33, 0x36, 0x6d, 0x7a, 0x77, 0x7a, 0x34, 0x6a, 0x64, + 0x38, 0x79, 0x74, 0x6e, 0x72, 0x64, 0x36, 0x67, 0x6b, 0x68, 0x37, 0x61, 0x79, 0x67, + 0x6d, 0x65, 0x6a, 0x32, 0x72, 0x74, 0x6c, 0x71, 0x67, 0x33, 0x76, 0x6a, 0x39, 0x79, + 0x65, 0x65, 0x68, 0x66, 0x64, 0x6b, 0x32, 0x33, 0x35, 0x6a, 0x65, 0x73, 0x36, 0x72, + 0x71, 0x70, 0x66, 0x6a, 0x6c, 0x77, 0x71, 0x67, 0x33, 0x37, 0x76, 0x34, 0x6d, 0x65, + 0x35, 0x75, 0x67, 0x6a, 0x6c, 0x7a, 0x72, 0x64, 0x6e, 0x68, 0x67, 0x6c, 0x38, 0x38, + 0x72, 0x72, 0x6c, 0x65, 0x67, 0x38, 0x33, 0x78, 0x38, 0x61, 0x30, 0x71, 0x6d, 0x77, + 0x79, 0x7a, 0x79, 0x36, 0x39, 0x38, 0x72, 0x38, 0x76, 0x75, 0x63, 0x6e, 0x34, 0x68, + 0x77, 0x61, 0x67, 0x72, 0x36, 0x71, 0x63, 0x65, 0x7a, 0x73, 0x73, 0x66, 0x36, 0x63, + 0x68, 0x30, 0x74, 0x37, 0x34, 0x66, 0x63, 0x30, 0x68, 0x76, 0x6e, 0x36, 0x6d, 0x37, + 0x37, 0x37, 0x68, 0x70, 0x37, 0x35, 0x37, 0x61, 0x76, 0x66, 0x32, 0x63, 0x6b, 0x7a, + 0x63, 0x33, 0x32, 0x39, 0x35, 0x70, 0x33, 0x32, 0x34, 0x30, 0x71, 0x6c, 0x76, 0x75, + 0x70, 0x79, 0x64, 0x65, 0x6c, 0x37, 0x33, 0x6c, 0x37, 0x71, 0x63, 0x74, 0x6e, 0x34, + 0x30, 0x63, 0x79, 0x6b, 0x35, 0x75, 0x36, 0x73, 0x65, 0x73, 0x61, 0x77, 0x72, 0x36, + 0x7a, 0x6d, 0x6b, 0x74, 0x6c, 0x6a, 0x66, 0x78, 0x68, 0x71, 0x63, 0x63, 0x37, 0x65, + 0x77, 0x34, 0x68, ], }, TestVector { @@ -245,14 +245,14 @@ fn unified() { ]), orchard_raw_addr: None, unified_addr: vec![ - 0x75, 0x31, 0x65, 0x68, 0x64, 0x65, 0x73, 0x6a, 0x6a, 0x64, 0x73, 0x70, 0x33, 0x68, - 0x39, 0x37, 0x6a, 0x78, 0x7a, 0x63, 0x61, 0x76, 0x6b, 0x68, 0x64, 0x33, 0x32, 0x70, - 0x32, 0x70, 0x61, 0x73, 0x30, 0x6a, 0x6b, 0x33, 0x32, 0x74, 0x78, 0x35, 0x77, 0x73, - 0x6d, 0x70, 0x7a, 0x6a, 0x6c, 0x35, 0x78, 0x35, 0x34, 0x30, 0x68, 0x35, 0x35, 0x33, - 0x35, 0x63, 0x6c, 0x66, 0x77, 0x68, 0x6b, 0x6b, 0x68, 0x6c, 0x33, 0x67, 0x71, 0x63, - 0x70, 0x72, 0x6d, 0x77, 0x79, 0x65, 0x32, 0x79, 0x79, 0x32, 0x39, 0x30, 0x6a, 0x66, - 0x70, 0x63, 0x78, 0x71, 0x6a, 0x71, 0x75, 0x6c, 0x61, 0x6a, 0x76, 0x6a, 0x76, 0x35, - 0x75, 0x71, 0x78, 0x6e, 0x74, 0x63, 0x65, 0x6e, + 0x75, 0x31, 0x71, 0x78, 0x6b, 0x79, 0x6d, 0x6b, 0x68, 0x64, 0x7a, 0x63, 0x72, 0x72, + 0x7a, 0x6c, 0x79, 0x34, 0x66, 0x72, 0x71, 0x75, 0x63, 0x64, 0x6b, 0x66, 0x73, 0x6e, + 0x6a, 0x37, 0x77, 0x76, 0x77, 0x6c, 0x71, 0x65, 0x75, 0x30, 0x6b, 0x34, 0x66, 0x33, + 0x74, 0x72, 0x70, 0x6e, 0x65, 0x7a, 0x34, 0x76, 0x77, 0x7a, 0x75, 0x68, 0x6b, 0x64, + 0x61, 0x6a, 0x6b, 0x35, 0x65, 0x37, 0x36, 0x34, 0x37, 0x34, 0x6d, 0x6a, 0x34, 0x39, + 0x6b, 0x75, 0x65, 0x39, 0x78, 0x39, 0x68, 0x66, 0x77, 0x65, 0x66, 0x38, 0x6d, 0x34, + 0x37, 0x73, 0x63, 0x63, 0x38, 0x61, 0x70, 0x39, 0x33, 0x68, 0x6e, 0x67, 0x73, 0x65, + 0x75, 0x67, 0x33, 0x38, 0x64, 0x70, 0x63, 0x71, ], }, TestVector { @@ -269,17 +269,17 @@ fn unified() { ]), orchard_raw_addr: None, unified_addr: vec![ - 0x75, 0x31, 0x76, 0x6e, 0x63, 0x34, 0x6a, 0x33, 0x6e, 0x6a, 0x6b, 0x37, 0x71, 0x74, - 0x70, 0x6a, 0x65, 0x76, 0x77, 0x64, 0x74, 0x38, 0x77, 0x34, 0x7a, 0x35, 0x6e, 0x30, - 0x37, 0x6b, 0x36, 0x70, 0x36, 0x32, 0x77, 0x39, 0x6a, 0x67, 0x39, 0x77, 0x79, 0x6d, - 0x6a, 0x6c, 0x75, 0x30, 0x77, 0x6d, 0x76, 0x6d, 0x75, 0x70, 0x35, 0x75, 0x79, 0x65, - 0x6a, 0x61, 0x61, 0x37, 0x36, 0x64, 0x6b, 0x64, 0x67, 0x78, 0x79, 0x73, 0x37, 0x65, - 0x36, 0x61, 0x64, 0x6e, 0x78, 0x65, 0x63, 0x66, 0x78, 0x63, 0x6e, 0x6c, 0x39, 0x30, - 0x65, 0x71, 0x36, 0x65, 0x39, 0x72, 0x30, 0x35, 0x64, 0x73, 0x79, 0x35, 0x32, 0x74, - 0x36, 0x39, 0x76, 0x65, 0x39, 0x61, 0x75, 0x6e, 0x6b, 0x37, 0x6a, 0x77, 0x32, 0x70, - 0x33, 0x74, 0x77, 0x72, 0x61, 0x75, 0x68, 0x6e, 0x6c, 0x36, 0x38, 0x34, 0x6d, 0x6e, - 0x77, 0x33, 0x63, 0x32, 0x75, 0x79, 0x68, 0x61, 0x6a, 0x36, 0x6c, 0x70, 0x34, 0x6c, - 0x33, + 0x75, 0x31, 0x64, 0x33, 0x72, 0x6b, 0x71, 0x77, 0x7a, 0x39, 0x6b, 0x37, 0x34, 0x6b, + 0x74, 0x75, 0x76, 0x6c, 0x74, 0x6e, 0x32, 0x74, 0x6d, 0x74, 0x6a, 0x36, 0x67, 0x6b, + 0x6c, 0x67, 0x39, 0x33, 0x68, 0x77, 0x73, 0x39, 0x37, 0x79, 0x74, 0x73, 0x33, 0x7a, + 0x75, 0x36, 0x30, 0x38, 0x76, 0x6b, 0x76, 0x67, 0x33, 0x63, 0x32, 0x79, 0x73, 0x68, + 0x6d, 0x6d, 0x33, 0x30, 0x71, 0x36, 0x68, 0x38, 0x6b, 0x64, 0x34, 0x72, 0x74, 0x33, + 0x73, 0x30, 0x76, 0x70, 0x34, 0x75, 0x61, 0x6a, 0x77, 0x66, 0x68, 0x39, 0x61, 0x37, + 0x35, 0x65, 0x38, 0x61, 0x38, 0x37, 0x30, 0x6e, 0x39, 0x34, 0x6c, 0x6b, 0x70, 0x65, + 0x78, 0x35, 0x61, 0x73, 0x37, 0x71, 0x6e, 0x77, 0x33, 0x34, 0x36, 0x34, 0x6e, 0x72, + 0x61, 0x74, 0x75, 0x63, 0x35, 0x6e, 0x35, 0x79, 0x35, 0x75, 0x76, 0x6e, 0x7a, 0x76, + 0x66, 0x32, 0x6d, 0x34, 0x66, 0x65, 0x6a, 0x68, 0x7a, 0x65, 0x76, 0x68, 0x6e, 0x30, + 0x6d, ], }, TestVector { @@ -293,14 +293,14 @@ fn unified() { ]), orchard_raw_addr: None, unified_addr: vec![ - 0x75, 0x31, 0x72, 0x79, 0x68, 0x74, 0x61, 0x36, 0x6d, 0x73, 0x35, 0x6a, 0x61, 0x73, - 0x75, 0x39, 0x6e, 0x76, 0x65, 0x32, 0x32, 0x39, 0x6d, 0x76, 0x39, 0x38, 0x36, 0x64, - 0x67, 0x7a, 0x39, 0x36, 0x6a, 0x6c, 0x37, 0x35, 0x72, 0x32, 0x71, 0x6c, 0x6d, 0x78, - 0x79, 0x70, 0x61, 0x36, 0x37, 0x75, 0x65, 0x72, 0x76, 0x37, 0x38, 0x34, 0x72, 0x72, - 0x35, 0x30, 0x66, 0x63, 0x67, 0x75, 0x67, 0x76, 0x6b, 0x64, 0x67, 0x67, 0x32, 0x77, - 0x73, 0x72, 0x6e, 0x78, 0x77, 0x73, 0x73, 0x78, 0x75, 0x6c, 0x77, 0x30, 0x6c, 0x7a, - 0x38, 0x77, 0x35, 0x37, 0x39, 0x70, 0x74, 0x6a, 0x32, 0x39, 0x77, 0x75, 0x67, 0x38, - 0x38, 0x67, 0x67, 0x35, 0x77, 0x33, 0x7a, 0x73, + 0x75, 0x31, 0x61, 0x66, 0x61, 0x74, 0x30, 0x64, 0x75, 0x74, 0x61, 0x73, 0x79, 0x66, + 0x6b, 0x73, 0x61, 0x61, 0x76, 0x6d, 0x34, 0x72, 0x6c, 0x33, 0x61, 0x78, 0x71, 0x6e, + 0x75, 0x78, 0x6c, 0x77, 0x74, 0x37, 0x36, 0x35, 0x73, 0x39, 0x34, 0x76, 0x39, 0x7a, + 0x71, 0x6a, 0x74, 0x30, 0x39, 0x7a, 0x79, 0x36, 0x33, 0x64, 0x6c, 0x35, 0x6d, 0x6d, + 0x79, 0x70, 0x39, 0x78, 0x35, 0x63, 0x6b, 0x76, 0x72, 0x75, 0x6c, 0x6d, 0x64, 0x71, + 0x34, 0x63, 0x6b, 0x6a, 0x33, 0x72, 0x72, 0x76, 0x37, 0x66, 0x39, 0x6c, 0x37, 0x75, + 0x6e, 0x78, 0x66, 0x6c, 0x30, 0x64, 0x38, 0x72, 0x36, 0x35, 0x38, 0x32, 0x34, 0x74, + 0x67, 0x73, 0x67, 0x72, 0x76, 0x67, 0x30, 0x71, ], }, ];