zcash_address: Include HRP inside Unified Address Padding bytes

Closes zcash/librustzcash#418.
This commit is contained in:
Jack Grigg 2021-07-30 15:34:36 +01:00
parent 786da38f3e
commit 00b369b2a4
3 changed files with 179 additions and 168 deletions

View File

@ -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])])),

View File

@ -204,15 +204,20 @@ impl Receiver {
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct Address(pub(crate) Vec<Receiver>);
impl TryFrom<&[u8]> for Address {
impl TryFrom<(&str, &[u8])> for Address {
type Error = ParseError;
fn try_from(buf: &[u8]) -> Result<Self, Self::Error> {
fn try_from((hrp, buf): (&str, &[u8])) -> Result<Self, Self::Error> {
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<Vec<Receiver>> for Address {
impl Address {
/// Returns the raw encoding of this Unified Address.
pub(crate) fn to_bytes(&self) -> Vec<u8> {
pub(crate) fn to_bytes(&self, hrp: &str) -> Vec<u8> {
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)
);
}

View File

@ -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,
],
},
];