Skip to content

Commit 5732a2b

Browse files
committed
Add test vectors for ZIP 325
1 parent ba707b1 commit 5732a2b

File tree

8 files changed

+284
-1
lines changed

8 files changed

+284
-1
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ zip_0032_arbitrary = "zcash_test_vectors.zip_0032:arbitrary_key_derivation_tvs"
4646
zip_0143 = "zcash_test_vectors.zip_0143:main"
4747
zip_0243 = "zcash_test_vectors.zip_0243:main"
4848
zip_0244 = "zcash_test_vectors.zip_0244:main"
49+
zip_0325 = "zcash_test_vectors.zip_0325:main"
4950

5051
# Transparent test vectors
5152
bip_0032 = "zcash_test_vectors.transparent.bip_0032:main"

regenerate.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ case "$2" in
5151
zip_0243
5252
zip_0244
5353
zip_0316
54-
zip_0320)
54+
zip_0320
55+
zip_0325)
5556
;;
5657
*)
5758
tv_scripts=($2)

test-vectors/json/zip_0325.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[
2+
["From https://github.com/zcash-hackworks/zcash-test-vectors/blob/master/zip_0325.py"],
3+
["seed, account, ufvk, private_use_subject, private_use_keys"],
4+
["000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", 0, null, "5a697033323554657374566563746f7273", ["d88239020bcc64d08282cd3d242cc12be207eb7154b1065fbeaf262dc4cbc94f"]],
5+
["000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", 0, "uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv", "5a697033323554657374566563746f7273", ["02f6dfb0096dad5401a8fa7e371c1b4838341673cc7010a66b17ddb68a851e4f", "f4cd290baf093e9454de5f5cb75ce049102951348f60c666f393c915f23d0310", "dfd34cabdc9afc4ac8ed0b631b109e5ff80824b80c12ecb2892080222d970e43"]],
6+
["000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", 1, null, "5a697033323554657374566563746f7273", ["3bf2fd2bfcead493ae3a1e2b6c5dedc3f4c4a6129ef23699ca8e2015da557728"]],
7+
["000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", 1, "uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv", "5a697033323554657374566563746f7273", ["b24ebfefc04f4eb98ac7c5beecf7a3ab1474a97ac7b3c7d857a23afea547caaf", "fa07cfc2c7ed10d173f7e28f4d601595facd41072e72f6e5936a1440c9cbc7df", "b34929a3f05af8a5ab16ad94708f031c08217b8369f35d125e7fcdfec56ea1bb"]],
8+
["000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", 2, null, "5a697033323554657374566563746f7273", ["a73ffccd70c8c7c7bc47ac555512e8ffdc41e02f32716372f46dbf5a4e207aa2"]],
9+
["000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", 2, "uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv", "5a697033323554657374566563746f7273", ["ebf59396fb27862406b1984309d4784eedf14cb28c969344eabec1c300160da5", "dd39129515151a8e77d280d1e8513fd091eec6c9cce5ce0096fdfc60d8d3f204", "32650eb08e10b17ae37f9d82680e4d83cad25150061a3910a82bc72e25cda568"]],
10+
["000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", 3, null, "5a697033323554657374566563746f7273", ["e237eb4cceb983cc8703996a63668bacb2208289e49dc863fa96feb402bf7b42"]],
11+
["000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", 3, "uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv", "5a697033323554657374566563746f7273", ["6a4124096c38b0132da7fb94c199df4156d804a3589e46f33395c1d0e358e9f0", "d9ef369e616a31e8c40996cc625c352f2cf9815f5119a4edad6562165c8b727a", "9d83e6d209792bd5796f2d0fe19ceb18bfdfec3d09ad0386ed27339a1e7f8501"]]
12+
]

test-vectors/rust/zip_0325.rs

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
struct TestVector {
2+
seed: [u8; 32],
3+
account: u32,
4+
ufvk: Option<&'static str>,
5+
private_use_subject: &'static [u8],
6+
private_use_keys: &'static [[u8; 32]],
7+
}
8+
9+
// From https://github.com/zcash-hackworks/zcash-test-vectors/blob/master/zip_0325.py
10+
const TEST_VECTORS: &[TestVector] = &[
11+
TestVector {
12+
seed: [
13+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
14+
],
15+
account: 0,
16+
ufvk: None,
17+
private_use_subject: &[
18+
0x5a, 0x69, 0x70, 0x33, 0x32, 0x35, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73
19+
],
20+
private_use_keys: &[
21+
[0xd8, 0x82, 0x39, 0x02, 0x0b, 0xcc, 0x64, 0xd0, 0x82, 0x82, 0xcd, 0x3d, 0x24, 0x2c, 0xc1, 0x2b, 0xe2, 0x07, 0xeb, 0x71, 0x54, 0xb1, 0x06, 0x5f, 0xbe, 0xaf, 0x26, 0x2d, 0xc4, 0xcb, 0xc9, 0x4f],
22+
],
23+
},
24+
TestVector {
25+
seed: [
26+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
27+
],
28+
account: 0,
29+
ufvk: Some("uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv"),
30+
private_use_subject: &[
31+
0x5a, 0x69, 0x70, 0x33, 0x32, 0x35, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73
32+
],
33+
private_use_keys: &[
34+
[0x02, 0xf6, 0xdf, 0xb0, 0x09, 0x6d, 0xad, 0x54, 0x01, 0xa8, 0xfa, 0x7e, 0x37, 0x1c, 0x1b, 0x48, 0x38, 0x34, 0x16, 0x73, 0xcc, 0x70, 0x10, 0xa6, 0x6b, 0x17, 0xdd, 0xb6, 0x8a, 0x85, 0x1e, 0x4f],
35+
[0xf4, 0xcd, 0x29, 0x0b, 0xaf, 0x09, 0x3e, 0x94, 0x54, 0xde, 0x5f, 0x5c, 0xb7, 0x5c, 0xe0, 0x49, 0x10, 0x29, 0x51, 0x34, 0x8f, 0x60, 0xc6, 0x66, 0xf3, 0x93, 0xc9, 0x15, 0xf2, 0x3d, 0x03, 0x10],
36+
[0xdf, 0xd3, 0x4c, 0xab, 0xdc, 0x9a, 0xfc, 0x4a, 0xc8, 0xed, 0x0b, 0x63, 0x1b, 0x10, 0x9e, 0x5f, 0xf8, 0x08, 0x24, 0xb8, 0x0c, 0x12, 0xec, 0xb2, 0x89, 0x20, 0x80, 0x22, 0x2d, 0x97, 0x0e, 0x43],
37+
],
38+
},
39+
TestVector {
40+
seed: [
41+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
42+
],
43+
account: 1,
44+
ufvk: None,
45+
private_use_subject: &[
46+
0x5a, 0x69, 0x70, 0x33, 0x32, 0x35, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73
47+
],
48+
private_use_keys: &[
49+
[0x3b, 0xf2, 0xfd, 0x2b, 0xfc, 0xea, 0xd4, 0x93, 0xae, 0x3a, 0x1e, 0x2b, 0x6c, 0x5d, 0xed, 0xc3, 0xf4, 0xc4, 0xa6, 0x12, 0x9e, 0xf2, 0x36, 0x99, 0xca, 0x8e, 0x20, 0x15, 0xda, 0x55, 0x77, 0x28],
50+
],
51+
},
52+
TestVector {
53+
seed: [
54+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
55+
],
56+
account: 1,
57+
ufvk: Some("uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv"),
58+
private_use_subject: &[
59+
0x5a, 0x69, 0x70, 0x33, 0x32, 0x35, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73
60+
],
61+
private_use_keys: &[
62+
[0xb2, 0x4e, 0xbf, 0xef, 0xc0, 0x4f, 0x4e, 0xb9, 0x8a, 0xc7, 0xc5, 0xbe, 0xec, 0xf7, 0xa3, 0xab, 0x14, 0x74, 0xa9, 0x7a, 0xc7, 0xb3, 0xc7, 0xd8, 0x57, 0xa2, 0x3a, 0xfe, 0xa5, 0x47, 0xca, 0xaf],
63+
[0xfa, 0x07, 0xcf, 0xc2, 0xc7, 0xed, 0x10, 0xd1, 0x73, 0xf7, 0xe2, 0x8f, 0x4d, 0x60, 0x15, 0x95, 0xfa, 0xcd, 0x41, 0x07, 0x2e, 0x72, 0xf6, 0xe5, 0x93, 0x6a, 0x14, 0x40, 0xc9, 0xcb, 0xc7, 0xdf],
64+
[0xb3, 0x49, 0x29, 0xa3, 0xf0, 0x5a, 0xf8, 0xa5, 0xab, 0x16, 0xad, 0x94, 0x70, 0x8f, 0x03, 0x1c, 0x08, 0x21, 0x7b, 0x83, 0x69, 0xf3, 0x5d, 0x12, 0x5e, 0x7f, 0xcd, 0xfe, 0xc5, 0x6e, 0xa1, 0xbb],
65+
],
66+
},
67+
TestVector {
68+
seed: [
69+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
70+
],
71+
account: 2,
72+
ufvk: None,
73+
private_use_subject: &[
74+
0x5a, 0x69, 0x70, 0x33, 0x32, 0x35, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73
75+
],
76+
private_use_keys: &[
77+
[0xa7, 0x3f, 0xfc, 0xcd, 0x70, 0xc8, 0xc7, 0xc7, 0xbc, 0x47, 0xac, 0x55, 0x55, 0x12, 0xe8, 0xff, 0xdc, 0x41, 0xe0, 0x2f, 0x32, 0x71, 0x63, 0x72, 0xf4, 0x6d, 0xbf, 0x5a, 0x4e, 0x20, 0x7a, 0xa2],
78+
],
79+
},
80+
TestVector {
81+
seed: [
82+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
83+
],
84+
account: 2,
85+
ufvk: Some("uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv"),
86+
private_use_subject: &[
87+
0x5a, 0x69, 0x70, 0x33, 0x32, 0x35, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73
88+
],
89+
private_use_keys: &[
90+
[0xeb, 0xf5, 0x93, 0x96, 0xfb, 0x27, 0x86, 0x24, 0x06, 0xb1, 0x98, 0x43, 0x09, 0xd4, 0x78, 0x4e, 0xed, 0xf1, 0x4c, 0xb2, 0x8c, 0x96, 0x93, 0x44, 0xea, 0xbe, 0xc1, 0xc3, 0x00, 0x16, 0x0d, 0xa5],
91+
[0xdd, 0x39, 0x12, 0x95, 0x15, 0x15, 0x1a, 0x8e, 0x77, 0xd2, 0x80, 0xd1, 0xe8, 0x51, 0x3f, 0xd0, 0x91, 0xee, 0xc6, 0xc9, 0xcc, 0xe5, 0xce, 0x00, 0x96, 0xfd, 0xfc, 0x60, 0xd8, 0xd3, 0xf2, 0x04],
92+
[0x32, 0x65, 0x0e, 0xb0, 0x8e, 0x10, 0xb1, 0x7a, 0xe3, 0x7f, 0x9d, 0x82, 0x68, 0x0e, 0x4d, 0x83, 0xca, 0xd2, 0x51, 0x50, 0x06, 0x1a, 0x39, 0x10, 0xa8, 0x2b, 0xc7, 0x2e, 0x25, 0xcd, 0xa5, 0x68],
93+
],
94+
},
95+
TestVector {
96+
seed: [
97+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
98+
],
99+
account: 3,
100+
ufvk: None,
101+
private_use_subject: &[
102+
0x5a, 0x69, 0x70, 0x33, 0x32, 0x35, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73
103+
],
104+
private_use_keys: &[
105+
[0xe2, 0x37, 0xeb, 0x4c, 0xce, 0xb9, 0x83, 0xcc, 0x87, 0x03, 0x99, 0x6a, 0x63, 0x66, 0x8b, 0xac, 0xb2, 0x20, 0x82, 0x89, 0xe4, 0x9d, 0xc8, 0x63, 0xfa, 0x96, 0xfe, 0xb4, 0x02, 0xbf, 0x7b, 0x42],
106+
],
107+
},
108+
TestVector {
109+
seed: [
110+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
111+
],
112+
account: 3,
113+
ufvk: Some("uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv"),
114+
private_use_subject: &[
115+
0x5a, 0x69, 0x70, 0x33, 0x32, 0x35, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73
116+
],
117+
private_use_keys: &[
118+
[0x6a, 0x41, 0x24, 0x09, 0x6c, 0x38, 0xb0, 0x13, 0x2d, 0xa7, 0xfb, 0x94, 0xc1, 0x99, 0xdf, 0x41, 0x56, 0xd8, 0x04, 0xa3, 0x58, 0x9e, 0x46, 0xf3, 0x33, 0x95, 0xc1, 0xd0, 0xe3, 0x58, 0xe9, 0xf0],
119+
[0xd9, 0xef, 0x36, 0x9e, 0x61, 0x6a, 0x31, 0xe8, 0xc4, 0x09, 0x96, 0xcc, 0x62, 0x5c, 0x35, 0x2f, 0x2c, 0xf9, 0x81, 0x5f, 0x51, 0x19, 0xa4, 0xed, 0xad, 0x65, 0x62, 0x16, 0x5c, 0x8b, 0x72, 0x7a],
120+
[0x9d, 0x83, 0xe6, 0xd2, 0x09, 0x79, 0x2b, 0xd5, 0x79, 0x6f, 0x2d, 0x0f, 0xe1, 0x9c, 0xeb, 0x18, 0xbf, 0xdf, 0xec, 0x3d, 0x09, 0xad, 0x03, 0x86, 0xed, 0x27, 0x33, 0x9a, 0x1e, 0x7f, 0x85, 0x01],
121+
],
122+
},
123+
];

test-vectors/zcash/zip_0325.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[
2+
["From https://github.com/zcash-hackworks/zcash-test-vectors/blob/master/zip_0325.py"],
3+
["seed, account, ufvk, private_use_subject, private_use_keys"],
4+
["1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100", 0, null, "5a697033323554657374566563746f7273", ["4fc9cbc42d26afbe5f06b15471eb07e22bc12c243dcd8282d064cc0b023982d8"]],
5+
["1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100", 0, "uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv", "5a697033323554657374566563746f7273", ["4f1e858ab6dd176ba61070cc73163438481b1c377efaa80154ad6d09b0dff602", "10033df215c993f366c6608f3451291049e05cb75c5fde54943e09af0b29cdf4", "430e972d22802089b2ec120cb82408f85f9e101b630bedc84afc9adcab4cd3df"]],
6+
["1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100", 1, null, "5a697033323554657374566563746f7273", ["287755da15208eca9936f29e12a6c4f4c3ed5d6c2b1e3aae93d4eafc2bfdf23b"]],
7+
["1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100", 1, "uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv", "5a697033323554657374566563746f7273", ["afca47a5fe3aa257d8c7b3c77aa97414aba3f7ecbec5c78ab94e4fc0efbf4eb2", "dfc7cbc940146a93e5f6722e0741cdfa9515604d8fe2f773d110edc7c2cf07fa", "bba16ec5fecd7f5e125df369837b21081c038f7094ad16aba5f85af0a32949b3"]],
8+
["1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100", 2, null, "5a697033323554657374566563746f7273", ["a27a204e5abf6df4726371322fe041dcffe8125555ac47bcc7c7c870cdfc3fa7"]],
9+
["1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100", 2, "uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv", "5a697033323554657374566563746f7273", ["a50d1600c3c1beea4493968cb24cf1ed4e78d4094398b106248627fb9693f5eb", "04f2d3d860fcfd9600cee5ccc9c6ee91d03f51e8d180d2778e1a1515951239dd", "68a5cd252ec72ba810391a065051d2ca834d0e68829d7fe37ab1108eb00e6532"]],
10+
["1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100", 3, null, "5a697033323554657374566563746f7273", ["427bbf02b4fe96fa63c89de4898220b2ac8b66636a990387cc83b9ce4ceb37e2"]],
11+
["1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100", 3, "uview1cgrqnry478ckvpr0f580t6fsahp0a5mj2e9xl7hv2d2jd4ldzy449mwwk2l9yeuts85wjls6hjtghdsy5vhhvmjdw3jxl3cxhrg3vs296a3czazrycrr5cywjhwc5c3ztfyjdhmz0exvzzeyejamyp0cr9z8f9wj0953fzht0m4lenk94t70ruwgjxag2tvp63wn9ftzhtkh20gyre3w5s24f6wlgqxnjh40gd2lxe75sf3z8h5y2x0atpxcyf9t3em4h0evvsftluruqne6w4sm066sw0qe5y8qg423grple5fftxrqyy7xmqmatv7nzd7tcjadu8f7mqz4l83jsyxy4t8pkayytyk7nrp467ds85knekdkvnd7hqkfer8mnqd7pv", "5a697033323554657374566563746f7273", ["f0e958e3d0c19533f3469e58a304d85641df99c194fba72d13b0386c0924416a", "7a728b5c166265adeda419515f81f92c2f355c62cc9609c4e8316a619e36efd9", "01857f1e9a3327ed8603ad093decdfbf18eb9ce10f2d6f79d52b7909d2e6839d"]]
12+
]

zcash_test_vectors/output.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ def tv_option_bytes_rust(name, value, pad, kind=""):
117117
else:
118118
print('%s%s: None,' % (pad, name))
119119

120+
def tv_option_str_rust(name, value, pad):
121+
if value:
122+
print('''%s%s: Some("%s"),''' % (
123+
pad,
124+
name,
125+
value.thing,
126+
))
127+
else:
128+
print('%s%s: None,' % (pad, name))
129+
120130
def tv_int_rust(name, value, pad):
121131
print('%s%s: %d,' % (pad, name, value))
122132

@@ -137,6 +147,8 @@ def tv_part_rust(name, value, config, indent=3):
137147
tv_option_bytes_rust(name, value, pad, kind="vec!")
138148
elif config['rust_type'] == 'Option<&\'static [u8]>':
139149
tv_option_bytes_rust(name, value, pad, kind="&")
150+
elif config['rust_type'] == 'Option<&\'static str>':
151+
tv_option_str_rust(name, value, pad)
140152
elif config['rust_type'] == 'Vec<u8>':
141153
tv_bytes_rust(name, value, pad, kind="vec!")
142154
elif config['rust_type'] == '&\'static [u8]':

zcash_test_vectors/unified_encoding.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,19 @@
1111
SAPLING_ITEM = 0x02
1212
ORCHARD_ITEM = 0x03
1313

14+
# Returns a key such that sorting in ascending order is equivalent to preference order.
15+
def preference_order_key(typecode):
16+
if typecode == ORCHARD_ITEM:
17+
return 0
18+
elif typecode == SAPLING_ITEM:
19+
return 1
20+
elif typecode == P2SH_ITEM or typecode == P2PKH_ITEM:
21+
return 2
22+
else:
23+
# Typecodes must be less than or equal to 0x2000000.
24+
# For unknown typecodes, assume larger is more recent and thus preferred.
25+
return 0x2000000 - typecode + 3
26+
1427
def tlv(typecode, value):
1528
return b"".join([write_compact_size(typecode), write_compact_size(len(value)), value])
1629

0 commit comments

Comments
 (0)