lib/reticulum/src/conformance/identity.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 //! Generated by `lib/reticulum/build/generate` with `rns==1.5.0`.
2 //! The upstream source is Reticulum commit `e32d4df754a7b87b1bf1bb0d08675d12ff505ae6`.
3 //! Hand edits are lost.
4 //!
5 //! The vectors in this file record an identity's keys, a signed message, an
6 //! encrypted plaintext, and what the reference produced from them, and they
7 //! come from Reticulum@1.5.0 RNS/Identity.py:730,737,804,908.
8 //! The random bytes behind each ephemeral key come from
9 //! RNS/Cryptography/X25519.py:127.
10 //! The random bytes behind each signing key come from
11 //! RNS/Cryptography/Ed25519.py:41.
12 //! The initialization vectors of the encryptions come from
13 //! RNS/Cryptography/Token.py:89.
14
15 pub const Vector = struct {
16 name: []const u8,
17 key_entropy: []const u8,
18 private_key: []const u8,
19 public_key: []const u8,
20 identity_hash: []const u8,
21 message: []const u8,
22 signature: []const u8,
23 validate_verdict: bool,
24 plaintext: []const u8,
25 ephemeral_key_entropy: []const u8,
26 ephemeral_private_key: []const u8,
27 iv: []const u8,
28 ciphertext: []const u8,
29 ratchet_key_entropy: []const u8,
30 ratchet_private_key: []const u8,
31 ratchet_public_key: []const u8,
32 uses_ratchet: bool,
33 decrypt_verdict: bool,
34 };
35
36 pub const vectors: []const Vector = &.{
37 .{
38 .name = "identity-key",
39 .key_entropy = &.{
40 0x66, 0x16, 0x9c, 0x1b, 0xdd, 0xbf, 0x8d, 0x3a, 0x7d, 0xd1, 0xff, 0x37,
41 0xa6, 0x43, 0x1a, 0x87, 0x6c, 0x0d, 0xe8, 0x32, 0x44, 0xb4, 0xe2, 0x28,
42 0x2d, 0xd1, 0x81, 0xf2, 0x6e, 0xc6, 0x94, 0xd8, 0x8f, 0xf2, 0x50, 0x39,
43 0x5f, 0x11, 0xae, 0x92, 0x7c, 0x5c, 0x49, 0x73, 0xf5, 0x54, 0x27, 0x0c,
44 0x10, 0x20, 0x2d, 0xb1, 0xe2, 0xc8, 0xa5, 0x9a, 0xd9, 0x68, 0x68, 0xf3,
45 0xf9, 0x67, 0x32, 0xde,
46 },
47 .private_key = &.{
48 0x60, 0x16, 0x9c, 0x1b, 0xdd, 0xbf, 0x8d, 0x3a, 0x7d, 0xd1, 0xff, 0x37,
49 0xa6, 0x43, 0x1a, 0x87, 0x6c, 0x0d, 0xe8, 0x32, 0x44, 0xb4, 0xe2, 0x28,
50 0x2d, 0xd1, 0x81, 0xf2, 0x6e, 0xc6, 0x94, 0x58, 0x8f, 0xf2, 0x50, 0x39,
51 0x5f, 0x11, 0xae, 0x92, 0x7c, 0x5c, 0x49, 0x73, 0xf5, 0x54, 0x27, 0x0c,
52 0x10, 0x20, 0x2d, 0xb1, 0xe2, 0xc8, 0xa5, 0x9a, 0xd9, 0x68, 0x68, 0xf3,
53 0xf9, 0x67, 0x32, 0xde,
54 },
55 .public_key = &.{
56 0xed, 0x16, 0x4b, 0x07, 0x26, 0x39, 0x17, 0xd8, 0xbb, 0xe3, 0x6d, 0xca,
57 0xbd, 0x63, 0xff, 0x76, 0x93, 0x3f, 0x0d, 0xf3, 0xfa, 0xc2, 0x2d, 0x2d,
58 0x8f, 0x33, 0x43, 0xdd, 0xa3, 0x70, 0xfc, 0x7d, 0x56, 0xc5, 0x1d, 0x60,
59 0x9b, 0x6b, 0x71, 0x08, 0x75, 0xb1, 0xd3, 0xad, 0x40, 0x17, 0xe4, 0xb7,
60 0xf9, 0x34, 0xc3, 0x74, 0xc2, 0xb0, 0x8d, 0x20, 0x96, 0x57, 0x12, 0x0c,
61 0xe4, 0x03, 0xad, 0x37,
62 },
63 .identity_hash = &.{
64 0x4f, 0x87, 0xff, 0xe7, 0x37, 0x29, 0x1e, 0x22, 0x57, 0xdb, 0x47, 0xda,
65 0x3f, 0xb1, 0x79, 0xd3,
66 },
67 .message = &.{
68 0xa0, 0xc5, 0xea, 0x0f, 0x34, 0x59, 0x7e, 0xa3, 0xc8, 0xed, 0x12, 0x37,
69 0x5c, 0x81, 0xa6, 0xcb, 0xf0, 0x15, 0x3a, 0x5f, 0x84, 0xa9, 0xce, 0xf3,
70 0x18, 0x3d, 0x62, 0x87, 0xac, 0xd1, 0xf6,
71 },
72 .signature = &.{
73 0xaa, 0xdf, 0x98, 0xb5, 0xe5, 0xca, 0xa9, 0xf7, 0x49, 0xc8, 0x30, 0xaa,
74 0x27, 0x0b, 0xd6, 0x3a, 0x50, 0x49, 0xe3, 0x71, 0x04, 0x4c, 0xeb, 0xa5,
75 0xc5, 0x85, 0x69, 0x99, 0x7a, 0x27, 0xb0, 0x06, 0x23, 0xdf, 0xa2, 0xbb,
76 0x02, 0xe3, 0x59, 0x92, 0x10, 0xa3, 0x6f, 0xb3, 0x2b, 0x3b, 0x6b, 0x54,
77 0x27, 0x5b, 0x0b, 0x3f, 0x29, 0x24, 0xaa, 0xe2, 0xdc, 0xdd, 0x82, 0x11,
78 0xce, 0x77, 0xfa, 0x0c,
79 },
80 .validate_verdict = true,
81 .plaintext = &.{
82 0xa9, 0xce, 0xf3, 0x18, 0x3d, 0x62, 0x87, 0xac, 0xd1, 0xf6, 0x1b, 0x40,
83 0x65, 0x8a, 0xaf, 0xd4, 0xf9, 0x1e, 0x43, 0x68, 0x8d, 0xb2, 0xd7,
84 },
85 .ephemeral_key_entropy = &.{
86 0x21, 0x70, 0xd6, 0xca, 0x93, 0x4e, 0xde, 0xb2, 0xd5, 0x34, 0x29, 0xfa,
87 0xeb, 0xa7, 0x3d, 0xb2, 0x3b, 0x41, 0xdf, 0x61, 0x0b, 0x22, 0x44, 0xe9,
88 0x05, 0x5c, 0xae, 0xf0, 0x10, 0x85, 0xe9, 0xf1,
89 },
90 .ephemeral_private_key = &.{
91 0x20, 0x70, 0xd6, 0xca, 0x93, 0x4e, 0xde, 0xb2, 0xd5, 0x34, 0x29, 0xfa,
92 0xeb, 0xa7, 0x3d, 0xb2, 0x3b, 0x41, 0xdf, 0x61, 0x0b, 0x22, 0x44, 0xe9,
93 0x05, 0x5c, 0xae, 0xf0, 0x10, 0x85, 0xe9, 0x71,
94 },
95 .iv = &.{
96 0x31, 0x2d, 0x05, 0xf6, 0x7c, 0xc7, 0x09, 0xf5, 0x41, 0x5e, 0x0b, 0xf3,
97 0xa5, 0x0b, 0x0a, 0x03,
98 },
99 .ciphertext = &.{
100 0x39, 0x14, 0x34, 0xe0, 0x6b, 0xc2, 0x29, 0xe4, 0xfb, 0x54, 0x87, 0x7b,
101 0x71, 0x82, 0xd7, 0xba, 0x7a, 0xc9, 0x02, 0xa3, 0x01, 0x75, 0xc6, 0xfc,
102 0x5f, 0x3f, 0xc4, 0x20, 0xab, 0x64, 0xd5, 0x65, 0x31, 0x2d, 0x05, 0xf6,
103 0x7c, 0xc7, 0x09, 0xf5, 0x41, 0x5e, 0x0b, 0xf3, 0xa5, 0x0b, 0x0a, 0x03,
104 0xae, 0x15, 0x94, 0x75, 0x35, 0x9b, 0xd5, 0x4c, 0xb7, 0x65, 0x7f, 0xd6,
105 0x11, 0xf9, 0x7a, 0xf3, 0x25, 0xe9, 0x8e, 0x3c, 0x59, 0x69, 0x74, 0x7e,
106 0xcd, 0x62, 0x62, 0x95, 0x82, 0x12, 0xbc, 0xb0, 0xf2, 0x6a, 0xdd, 0x0a,
107 0x32, 0xec, 0xc6, 0x03, 0x2f, 0xe9, 0x73, 0x51, 0x12, 0x8d, 0x7b, 0x79,
108 0x4e, 0x2e, 0xaa, 0x27, 0x2b, 0x14, 0xcf, 0x8d, 0xc0, 0xce, 0x5f, 0x99,
109 0xb3, 0xe8, 0xa3, 0x40,
110 },
111 .ratchet_key_entropy = &.{},
112 .ratchet_private_key = &.{},
113 .ratchet_public_key = &.{},
114 .uses_ratchet = false,
115 .decrypt_verdict = true,
116 },
117 .{
118 .name = "ratchet",
119 .key_entropy = &.{
120 0xf6, 0xdc, 0x39, 0x95, 0x92, 0x89, 0xd6, 0x85, 0xec, 0x9a, 0x68, 0x31,
121 0xc2, 0x0b, 0x4f, 0xc6, 0x97, 0xbe, 0xe4, 0xdf, 0x87, 0xe9, 0xa3, 0x84,
122 0x43, 0x9c, 0xa4, 0xbd, 0xf8, 0xc7, 0xbd, 0x94, 0x4f, 0x33, 0xc5, 0xd6,
123 0x5c, 0x37, 0x16, 0x79, 0xc1, 0x3d, 0xe2, 0x9f, 0x09, 0xa4, 0x08, 0x89,
124 0x3b, 0x20, 0xf0, 0xbd, 0x2d, 0x38, 0x80, 0xcd, 0xdf, 0xae, 0x3b, 0xaf,
125 0xe8, 0x2d, 0xe0, 0xcc,
126 },
127 .private_key = &.{
128 0xf0, 0xdc, 0x39, 0x95, 0x92, 0x89, 0xd6, 0x85, 0xec, 0x9a, 0x68, 0x31,
129 0xc2, 0x0b, 0x4f, 0xc6, 0x97, 0xbe, 0xe4, 0xdf, 0x87, 0xe9, 0xa3, 0x84,
130 0x43, 0x9c, 0xa4, 0xbd, 0xf8, 0xc7, 0xbd, 0x54, 0x4f, 0x33, 0xc5, 0xd6,
131 0x5c, 0x37, 0x16, 0x79, 0xc1, 0x3d, 0xe2, 0x9f, 0x09, 0xa4, 0x08, 0x89,
132 0x3b, 0x20, 0xf0, 0xbd, 0x2d, 0x38, 0x80, 0xcd, 0xdf, 0xae, 0x3b, 0xaf,
133 0xe8, 0x2d, 0xe0, 0xcc,
134 },
135 .public_key = &.{
136 0xd7, 0xbf, 0x6b, 0x83, 0x79, 0xcc, 0x9a, 0x2d, 0x68, 0x36, 0x64, 0x20,
137 0x47, 0xae, 0xcf, 0x87, 0xb3, 0xba, 0x4b, 0x99, 0x27, 0xb3, 0xf3, 0xfc,
138 0x0c, 0x5c, 0xec, 0x66, 0xc7, 0x17, 0xf4, 0x07, 0x5b, 0xea, 0x1c, 0x0e,
139 0xbf, 0x85, 0x3e, 0x26, 0x8f, 0xe2, 0x79, 0x56, 0x9b, 0x65, 0xf8, 0x8e,
140 0xf3, 0xdc, 0x91, 0xf2, 0xaf, 0x6c, 0xb2, 0x7e, 0x01, 0x6d, 0xb6, 0x98,
141 0xad, 0x99, 0x91, 0x02,
142 },
143 .identity_hash = &.{
144 0x77, 0x58, 0xdd, 0xa6, 0xcc, 0x2b, 0x93, 0x28, 0x12, 0x50, 0xbe, 0xe9,
145 0x18, 0xad, 0xad, 0x78,
146 },
147 .message = &.{
148 0xa1, 0xc6, 0xeb, 0x10, 0x35, 0x5a, 0x7f, 0xa4, 0xc9, 0xee, 0x13, 0x38,
149 0x5d, 0x82, 0xa7, 0xcc, 0xf1, 0x16, 0x3b, 0x60, 0x85, 0xaa, 0xcf, 0xf4,
150 0x19, 0x3e, 0x63, 0x88, 0xad, 0xd2, 0xf7, 0x1c,
151 },
152 .signature = &.{
153 0x5b, 0xb5, 0x0b, 0x26, 0xfc, 0x1f, 0x8d, 0xde, 0x7c, 0x50, 0xe2, 0x00,
154 0xed, 0xe3, 0x7a, 0x69, 0xe1, 0xc4, 0x36, 0xea, 0x24, 0x69, 0x0d, 0xa7,
155 0x15, 0xaf, 0xb7, 0x4d, 0x05, 0x53, 0xdf, 0xa8, 0x85, 0xc5, 0x4d, 0x95,
156 0xf6, 0x65, 0xb0, 0xed, 0x19, 0x84, 0x18, 0x4b, 0xd8, 0x1c, 0xc9, 0xa7,
157 0x13, 0x48, 0xbd, 0x63, 0xfe, 0x04, 0x64, 0xf2, 0xd8, 0xc4, 0xd3, 0x66,
158 0xbd, 0x2b, 0x39, 0x01,
159 },
160 .validate_verdict = true,
161 .plaintext = &.{
162 0xaa, 0xcf, 0xf4, 0x19, 0x3e, 0x63, 0x88, 0xad, 0xd2, 0xf7, 0x1c, 0x41,
163 0x66, 0x8b, 0xb0, 0xd5, 0xfa, 0x1f, 0x44, 0x69, 0x8e, 0xb3, 0xd8, 0xfd,
164 },
165 .ephemeral_key_entropy = &.{
166 0xbf, 0xdf, 0xc0, 0x74, 0xa2, 0x9e, 0xa4, 0x71, 0xc0, 0x4a, 0x2e, 0x04,
167 0xe1, 0x53, 0xef, 0xb4, 0xaa, 0xa4, 0x01, 0x28, 0x63, 0x70, 0x12, 0x4f,
168 0xd9, 0xa0, 0x1c, 0xc1, 0x5f, 0xfb, 0x6c, 0x00,
169 },
170 .ephemeral_private_key = &.{
171 0xb8, 0xdf, 0xc0, 0x74, 0xa2, 0x9e, 0xa4, 0x71, 0xc0, 0x4a, 0x2e, 0x04,
172 0xe1, 0x53, 0xef, 0xb4, 0xaa, 0xa4, 0x01, 0x28, 0x63, 0x70, 0x12, 0x4f,
173 0xd9, 0xa0, 0x1c, 0xc1, 0x5f, 0xfb, 0x6c, 0x40,
174 },
175 .iv = &.{
176 0x1e, 0x12, 0xaa, 0xba, 0xfb, 0x7f, 0xac, 0xbd, 0xdd, 0x3f, 0x94, 0x8c,
177 0x6c, 0xfa, 0xe6, 0x68,
178 },
179 .ciphertext = &.{
180 0x1c, 0xe8, 0x44, 0x5c, 0x59, 0x2b, 0xce, 0x18, 0x03, 0x00, 0xa3, 0xc5,
181 0x0a, 0x37, 0xd7, 0x4a, 0x10, 0x8b, 0x42, 0xcf, 0x34, 0x06, 0x3c, 0x6c,
182 0x25, 0x32, 0x9c, 0x95, 0x91, 0x04, 0xa2, 0x77, 0x1e, 0x12, 0xaa, 0xba,
183 0xfb, 0x7f, 0xac, 0xbd, 0xdd, 0x3f, 0x94, 0x8c, 0x6c, 0xfa, 0xe6, 0x68,
184 0xb8, 0xf6, 0xb5, 0xf5, 0x63, 0x80, 0x87, 0xb2, 0xb6, 0xad, 0x66, 0xe3,
185 0x54, 0x8e, 0x22, 0xea, 0x75, 0xc4, 0xe8, 0xf9, 0x90, 0xce, 0xfb, 0xa3,
186 0xa9, 0x1f, 0xe7, 0x18, 0x44, 0xb3, 0xd1, 0xf5, 0x32, 0x2f, 0x5d, 0xf0,
187 0xba, 0xd9, 0xe9, 0x71, 0x2b, 0x6d, 0x05, 0x83, 0xf6, 0x0b, 0xd7, 0xc4,
188 0x62, 0xdb, 0x7e, 0x28, 0xd4, 0x7f, 0x3d, 0xcd, 0xeb, 0xc3, 0x27, 0xf2,
189 0xe8, 0x87, 0xbc, 0x00,
190 },
191 .ratchet_key_entropy = &.{
192 0x68, 0x64, 0x67, 0x96, 0x23, 0x15, 0x94, 0x84, 0x57, 0x68, 0x2f, 0xc5,
193 0x16, 0x3a, 0xd7, 0x6f, 0xad, 0x2c, 0x16, 0xea, 0x49, 0xc0, 0x52, 0xa0,
194 0xa1, 0x22, 0xf4, 0x19, 0xaa, 0x9c, 0x95, 0x50,
195 },
196 .ratchet_private_key = &.{
197 0x68, 0x64, 0x67, 0x96, 0x23, 0x15, 0x94, 0x84, 0x57, 0x68, 0x2f, 0xc5,
198 0x16, 0x3a, 0xd7, 0x6f, 0xad, 0x2c, 0x16, 0xea, 0x49, 0xc0, 0x52, 0xa0,
199 0xa1, 0x22, 0xf4, 0x19, 0xaa, 0x9c, 0x95, 0x50,
200 },
201 .ratchet_public_key = &.{
202 0x9c, 0x7f, 0xe5, 0xb4, 0x34, 0x45, 0x77, 0x74, 0xd9, 0x56, 0x3e, 0x9d,
203 0xcd, 0x77, 0xc3, 0xf9, 0x74, 0xea, 0x14, 0x05, 0x66, 0xea, 0x1b, 0xae,
204 0x4d, 0xd4, 0xd8, 0xd7, 0x50, 0x95, 0xb2, 0x52,
205 },
206 .uses_ratchet = true,
207 .decrypt_verdict = true,
208 },
209 };