lib/reticulum/src/conformance/link.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 link requests use Reticulum@1.5.0 RNS/Link.py:304-322,335-346.
6 //! The generator's interfaces set neither `AUTOCONFIGURE_MTU` nor `FIXED_MTU`.
7 //! An interface is the stand-in network interface object the generator hands
8 //! the reference, named by an index, which the port calls a carrier.
9 //! The signalling of the 500-byte MTU uses RNS/Transport.py:3101-3107 and
10 //! RNS/Link.py:307-310.
11 //! The responders use RNS/Link.py:186-227,348-375 and
12 //! RNS/Transport.py:2456-2487.
13 //! The responder of the `link-request-stripped` step hears the request without
14 //! its signalling bytes.
15 //! A step of the two-node session is one record in this file's `vectors` table,
16 //! holding which end acted, the second it acted at, the frame it heard, any
17 //! bytes handed to it in place of random ones, and the frame it sent back.
18 //! Relays strip the signalling bytes at RNS/Transport.py:1982-1985 before an
19 //! interface that sets neither flag.
20 //! The validation of the proof and the round-trip time use
21 //! RNS/Link.py:391-438,516-538.
22 //! Link data and its proofs use RNS/Link.py:378-389,948-962.
23 //! The keepalives use RNS/Link.py:744-760,795-802,1130-1135.
24 //! The keepalive step runs at the first whole second at or after the deadline
25 //! of RNS/Link.py:749.
26 //! The generator also runs the watchdog one second earlier and records no frame
27 //! there.
28 //! The teardown uses RNS/Link.py:657-683.
29 //! The link keys use RNS/Link.py:348-361 and RNS/Cryptography/HKDF.py:35.
30 //! The initiator's keys use RNS/Cryptography/X25519.py:127 and Ed25519.py:41.
31 //! The initialization vectors of application data use
32 //! RNS/Cryptography/Token.py:89.
33 //! The responder key and the initialization vector of the round-trip report
34 //! come from the port's own convention, HKDF over step entropy with the link id
35 //! as salt, and the reference draws random bytes for both.
36 //! Step entropy is the 32 bytes the caller draws fresh for each carrier frame
37 //! and each timer event, which the step expands with HKDF-SHA256 whenever it
38 //! needs a key or an initialization vector.
39 //! The responder keys use the HKDF context `reticulum-link-responder-key`.
40 //! The initialization vectors of the round-trip report use the HKDF context
41 //! `reticulum-link-rtt-iv`.
42 //! The generator hands those derived bytes to the reference in place of the
43 //! random bytes it would draw.
44 //! Every step of the two-node session uses interface 0.
45 //! The four relay steps and the three-node session, which cross one transport
46 //! node, use RNS/Transport.py:1968-2077,2569-2590.
47 //! A three-node session is a link recorded across three reference nodes, the
48 //! middle one a transport node, with every frame on every hop kept.
49
50 pub const SessionVector = struct {
51 name: []const u8,
52 announce_clock: u64,
53 announce_raw: []const u8,
54 destination_hash: []const u8,
55 destination_private_key: []const u8,
56 };
57
58 pub const Vector = struct {
59 name: []const u8,
60 node: []const u8,
61 clock: u64,
62 input_raw: []const u8,
63 entropy: []const u8,
64 encryption_private_key: []const u8,
65 signing_private_key: []const u8,
66 iv: []const u8,
67 plaintext: []const u8,
68 output_raw: []const u8,
69 link_id: []const u8,
70 packet_hash: []const u8,
71 };
72
73 pub const KeyVector = struct {
74 name: []const u8,
75 initiator_encryption_private_key: []const u8,
76 responder_encryption_private_key: []const u8,
77 link_id: []const u8,
78 shared_key: []const u8,
79 derived_key: []const u8,
80 };
81
82 pub const RelayVector = struct {
83 name: []const u8,
84 identity_hash: []const u8,
85 interfaces: u8,
86 announce_raw: []const u8,
87 announce_interface: u8,
88 announce_clock: u64,
89 request_raw: []const u8,
90 request_interface: u8,
91 request_clock: u64,
92 proof_raw: []const u8,
93 proof_interface: u8,
94 proof_clock: u64,
95 input_raw: []const u8,
96 input_interface: u8,
97 input_clock: u64,
98 entropy: []const u8,
99 encryption_private_key: []const u8,
100 signing_private_key: []const u8,
101 output_interface: u8,
102 output_raw: []const u8,
103 link_id: []const u8,
104 transport_id: []const u8,
105 hops: u8,
106 context: u8,
107 context_flag: u1,
108 packet_hash: []const u8,
109 };
110
111 pub const ThreeNodeVector = struct {
112 name: []const u8,
113 start_clock: u64,
114 announce_raw: []const u8,
115 destination_hash: []const u8,
116 destination_private_key: []const u8,
117 destination_name_hash: []const u8,
118 destination_app_data: []const u8,
119 announce_random_hash: []const u8,
120 initiator_identity_hash: []const u8,
121 transport_identity_hash: []const u8,
122 responder_identity_hash: []const u8,
123 rebroadcast_clock: u64,
124 rebroadcast_raw: []const u8,
125 retry_clock: u64,
126 retry_raw: []const u8,
127 request_clock: u64,
128 link_id: []const u8,
129 initiator_encryption_private_key: []const u8,
130 initiator_signing_private_key: []const u8,
131 request_raw: []const u8,
132 stripped_raw: []const u8,
133 responder_entropy: []const u8,
134 responder_encryption_private_key: []const u8,
135 proof_raw: []const u8,
136 relayed_proof_raw: []const u8,
137 proof_clock: u64,
138 rtt_entropy: []const u8,
139 rtt_iv: []const u8,
140 rtt_plaintext: []const u8,
141 rtt_raw: []const u8,
142 relayed_rtt_raw: []const u8,
143 data_clock: u64,
144 data_iv: []const u8,
145 data_plaintext: []const u8,
146 data_raw: []const u8,
147 relayed_data_raw: []const u8,
148 data_proof_raw: []const u8,
149 relayed_data_proof_raw: []const u8,
150 answer_clock: u64,
151 answer_iv: []const u8,
152 answer_plaintext: []const u8,
153 answer_raw: []const u8,
154 relayed_answer_raw: []const u8,
155 answer_proof_raw: []const u8,
156 relayed_answer_proof_raw: []const u8,
157 keepalive_clock: u64,
158 keepalive_raw: []const u8,
159 relayed_keepalive_raw: []const u8,
160 keepalive_answer_raw: []const u8,
161 relayed_keepalive_answer_raw: []const u8,
162 close_clock: u64,
163 close_iv: []const u8,
164 close_raw: []const u8,
165 relayed_close_raw: []const u8,
166 };
167
168 pub const session_vectors: []const SessionVector = &.{
169 .{
170 .name = "link-session",
171 .announce_clock = 1700000300,
172 .announce_raw = &.{
173 0x01, 0x00, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
174 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x3c, 0x16, 0xa4, 0x7b, 0xc3,
175 0xcd, 0x38, 0x94, 0xbf, 0xe9, 0xa6, 0x7a, 0xb5, 0xe7, 0x2c, 0xb9, 0x96,
176 0x4a, 0x9d, 0x6b, 0x71, 0x6c, 0x74, 0x3a, 0x4a, 0x20, 0xb1, 0x2a, 0x7f,
177 0x9f, 0xe5, 0x12, 0x61, 0xb9, 0xf0, 0xd6, 0xdd, 0x9e, 0xa1, 0x35, 0xf4,
178 0x71, 0xf8, 0x32, 0xae, 0x69, 0xe1, 0x67, 0xe7, 0x8a, 0x20, 0x46, 0xa0,
179 0x23, 0x8a, 0x2a, 0x6a, 0x90, 0x98, 0x89, 0xc9, 0x57, 0x9a, 0x04, 0xd6,
180 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e, 0x66, 0x02, 0x7f, 0x7a,
181 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00, 0x0c, 0xd8, 0xa7, 0xb0, 0xee,
182 0x50, 0x27, 0xdf, 0x23, 0x06, 0x18, 0x66, 0xfd, 0xad, 0x0d, 0xc8, 0xd1,
183 0x9b, 0x9f, 0x60, 0xd1, 0xeb, 0x6d, 0x56, 0xd1, 0x5d, 0x3f, 0xcc, 0x7b,
184 0xc8, 0x2a, 0xd4, 0xe2, 0x9c, 0x62, 0x9f, 0x5f, 0xae, 0x98, 0x3d, 0x74,
185 0x57, 0x29, 0x3e, 0xe6, 0xcb, 0x07, 0x40, 0xc2, 0x38, 0x3d, 0xb1, 0x2a,
186 0xcf, 0x1d, 0x7c, 0xc6, 0x33, 0xe5, 0x7d, 0xfa, 0xcb, 0x06, 0x0f,
187 },
188 .destination_hash = &.{
189 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8,
190 0x49, 0xc0, 0xe3, 0x16,
191 },
192 .destination_private_key = &.{
193 0x08, 0x72, 0xe9, 0xdf, 0xd8, 0x6b, 0x82, 0xfc, 0xc5, 0x2d, 0x1a, 0x61,
194 0xf8, 0x7d, 0x72, 0x6e, 0x5a, 0x19, 0x3c, 0xfc, 0xc6, 0xab, 0x3b, 0x26,
195 0x25, 0xa6, 0x8c, 0xe2, 0xe9, 0x15, 0x15, 0x48, 0x54, 0x0a, 0xc4, 0xa5,
196 0x8a, 0xc0, 0x1c, 0x61, 0x8e, 0xed, 0x0a, 0x8a, 0xe3, 0xe3, 0xf7, 0x1a,
197 0xa5, 0xfb, 0xf0, 0x0e, 0xb1, 0x17, 0x19, 0x25, 0x7c, 0x4f, 0xe7, 0x0c,
198 0xf3, 0xdc, 0xaf, 0xcd,
199 },
200 },
201 };
202
203 pub const vectors: []const Vector = &.{
204 .{
205 .name = "link-request",
206 .node = "initiator",
207 .clock = 1700000301,
208 .input_raw = &.{},
209 .entropy = &.{},
210 .encryption_private_key = &.{
211 0x0a, 0x88, 0x04, 0x4a, 0x3e, 0x94, 0x83, 0x75, 0x71, 0x76, 0x14, 0x22,
212 0x4f, 0x74, 0x3f, 0xcc, 0x2f, 0x04, 0x12, 0x7b, 0x03, 0xc2, 0x08, 0xab,
213 0xf2, 0x06, 0xdb, 0x08, 0xf4, 0x4a, 0x65, 0xf6,
214 },
215 .signing_private_key = &.{
216 0xcd, 0x7a, 0xd4, 0xaa, 0x70, 0x91, 0xe3, 0x03, 0xdb, 0xa3, 0xf1, 0x61,
217 0x03, 0xc0, 0x3c, 0x67, 0x8f, 0x6a, 0xd6, 0xb8, 0x32, 0xb1, 0xd6, 0x1b,
218 0x0b, 0x27, 0x30, 0xac, 0xf0, 0x20, 0xd5, 0x79,
219 },
220 .iv = &.{},
221 .plaintext = &.{
222 0x10, 0xf3, 0x8c, 0xc9, 0xdd, 0x40, 0xce, 0xe4, 0x6c, 0x2a, 0x4b, 0x1f,
223 0x78, 0x2c, 0x58, 0x90, 0xe1, 0x0b, 0xa3, 0x46, 0x99, 0xee, 0xc9, 0x53,
224 0xac, 0xd6, 0xde, 0x44, 0xc0, 0x26, 0x99, 0x7b, 0x46, 0xca, 0x63, 0xd4,
225 0xe7, 0xaf, 0xfc, 0x90, 0x8b, 0xce, 0x14, 0xa3, 0x45, 0x71, 0x37, 0xef,
226 0xf0, 0x71, 0xce, 0x7c, 0x2b, 0x8a, 0x78, 0xe1, 0x0f, 0xcc, 0xf6, 0x16,
227 0x84, 0x48, 0x7d, 0xfa, 0x20, 0x01, 0xf4,
228 },
229 .output_raw = &.{
230 0x02, 0x00, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
231 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x10, 0xf3, 0x8c, 0xc9, 0xdd,
232 0x40, 0xce, 0xe4, 0x6c, 0x2a, 0x4b, 0x1f, 0x78, 0x2c, 0x58, 0x90, 0xe1,
233 0x0b, 0xa3, 0x46, 0x99, 0xee, 0xc9, 0x53, 0xac, 0xd6, 0xde, 0x44, 0xc0,
234 0x26, 0x99, 0x7b, 0x46, 0xca, 0x63, 0xd4, 0xe7, 0xaf, 0xfc, 0x90, 0x8b,
235 0xce, 0x14, 0xa3, 0x45, 0x71, 0x37, 0xef, 0xf0, 0x71, 0xce, 0x7c, 0x2b,
236 0x8a, 0x78, 0xe1, 0x0f, 0xcc, 0xf6, 0x16, 0x84, 0x48, 0x7d, 0xfa, 0x20,
237 0x01, 0xf4,
238 },
239 .link_id = &.{
240 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
241 0x58, 0xcb, 0x4c, 0x9d,
242 },
243 .packet_hash = &.{
244 0x1b, 0x9d, 0x4a, 0x28, 0x02, 0x82, 0x5c, 0x3a, 0x92, 0xce, 0x00, 0xa8,
245 0x44, 0xc5, 0x9e, 0x67, 0x5f, 0x99, 0xda, 0x82, 0x70, 0x1f, 0xc6, 0xd3,
246 0xea, 0x69, 0xe6, 0xd9, 0x84, 0xdd, 0x7b, 0xc1,
247 },
248 },
249 .{
250 .name = "link-proof",
251 .node = "responder",
252 .clock = 1700000301,
253 .input_raw = &.{
254 0x02, 0x00, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
255 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x10, 0xf3, 0x8c, 0xc9, 0xdd,
256 0x40, 0xce, 0xe4, 0x6c, 0x2a, 0x4b, 0x1f, 0x78, 0x2c, 0x58, 0x90, 0xe1,
257 0x0b, 0xa3, 0x46, 0x99, 0xee, 0xc9, 0x53, 0xac, 0xd6, 0xde, 0x44, 0xc0,
258 0x26, 0x99, 0x7b, 0x46, 0xca, 0x63, 0xd4, 0xe7, 0xaf, 0xfc, 0x90, 0x8b,
259 0xce, 0x14, 0xa3, 0x45, 0x71, 0x37, 0xef, 0xf0, 0x71, 0xce, 0x7c, 0x2b,
260 0x8a, 0x78, 0xe1, 0x0f, 0xcc, 0xf6, 0x16, 0x84, 0x48, 0x7d, 0xfa, 0x20,
261 0x01, 0xf4,
262 },
263 .entropy = &.{
264 0xeb, 0xbc, 0x1b, 0xea, 0xc0, 0xb6, 0x73, 0x72, 0x7b, 0x50, 0x33, 0xa6,
265 0x41, 0x96, 0xdf, 0x38, 0x17, 0x3e, 0xc0, 0xe4, 0x72, 0xa9, 0x41, 0x16,
266 0x16, 0xe2, 0x3b, 0xac, 0x49, 0xa0, 0x0e, 0x3c,
267 },
268 .encryption_private_key = &.{
269 0x05, 0x19, 0x34, 0x20, 0x96, 0x6b, 0xab, 0x7e, 0x23, 0x14, 0x9a, 0xf3,
270 0x8e, 0xad, 0x67, 0x4f, 0x73, 0x38, 0x75, 0xd8, 0x88, 0xe8, 0x2b, 0x79,
271 0xba, 0xb2, 0xe9, 0x52, 0x83, 0xdc, 0xae, 0xb7,
272 },
273 .signing_private_key = &.{},
274 .iv = &.{},
275 .plaintext = &.{
276 0x0f, 0xcc, 0x6d, 0x3d, 0xb9, 0x31, 0xa6, 0xe3, 0xfd, 0x8d, 0xfd, 0xea,
277 0x07, 0x91, 0x78, 0xcd, 0xba, 0xc0, 0x9d, 0x2b, 0x85, 0x63, 0xb3, 0xb9,
278 0xbf, 0xf6, 0x39, 0xfd, 0xf6, 0x64, 0x0d, 0xd6, 0xe0, 0x39, 0x31, 0x7c,
279 0x0e, 0x98, 0xaa, 0x4e, 0x28, 0xa5, 0x55, 0x8b, 0x82, 0xf8, 0x7c, 0xb6,
280 0x88, 0x4d, 0xf8, 0x39, 0x17, 0xd7, 0xa0, 0xdb, 0xf0, 0xf3, 0x34, 0xce,
281 0x80, 0xe0, 0x75, 0x06, 0x95, 0x25, 0xbd, 0xb8, 0x3d, 0x64, 0x56, 0xd1,
282 0x1a, 0x11, 0x3e, 0x4b, 0x00, 0xe6, 0xea, 0x52, 0x71, 0x8c, 0x73, 0x9b,
283 0x48, 0xc8, 0x22, 0xb6, 0x1d, 0x8a, 0x9b, 0x73, 0xd1, 0xa3, 0xf6, 0x63,
284 0x20, 0x01, 0xf4,
285 },
286 .output_raw = &.{
287 0x0f, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
288 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0xff, 0x0f, 0xcc, 0x6d, 0x3d, 0xb9,
289 0x31, 0xa6, 0xe3, 0xfd, 0x8d, 0xfd, 0xea, 0x07, 0x91, 0x78, 0xcd, 0xba,
290 0xc0, 0x9d, 0x2b, 0x85, 0x63, 0xb3, 0xb9, 0xbf, 0xf6, 0x39, 0xfd, 0xf6,
291 0x64, 0x0d, 0xd6, 0xe0, 0x39, 0x31, 0x7c, 0x0e, 0x98, 0xaa, 0x4e, 0x28,
292 0xa5, 0x55, 0x8b, 0x82, 0xf8, 0x7c, 0xb6, 0x88, 0x4d, 0xf8, 0x39, 0x17,
293 0xd7, 0xa0, 0xdb, 0xf0, 0xf3, 0x34, 0xce, 0x80, 0xe0, 0x75, 0x06, 0x95,
294 0x25, 0xbd, 0xb8, 0x3d, 0x64, 0x56, 0xd1, 0x1a, 0x11, 0x3e, 0x4b, 0x00,
295 0xe6, 0xea, 0x52, 0x71, 0x8c, 0x73, 0x9b, 0x48, 0xc8, 0x22, 0xb6, 0x1d,
296 0x8a, 0x9b, 0x73, 0xd1, 0xa3, 0xf6, 0x63, 0x20, 0x01, 0xf4,
297 },
298 .link_id = &.{
299 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
300 0x58, 0xcb, 0x4c, 0x9d,
301 },
302 .packet_hash = &.{
303 0xcb, 0x8c, 0x5c, 0xf7, 0x1f, 0x56, 0x34, 0xd4, 0x0b, 0xe8, 0x96, 0x56,
304 0x6e, 0xce, 0x95, 0x88, 0x20, 0xcb, 0x3e, 0x8f, 0xcb, 0xed, 0x1c, 0x6f,
305 0x7d, 0x31, 0xf5, 0xc1, 0x01, 0xb1, 0x59, 0x5c,
306 },
307 },
308 .{
309 .name = "link-rtt",
310 .node = "initiator",
311 .clock = 1700000302,
312 .input_raw = &.{
313 0x0f, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
314 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0xff, 0x0f, 0xcc, 0x6d, 0x3d, 0xb9,
315 0x31, 0xa6, 0xe3, 0xfd, 0x8d, 0xfd, 0xea, 0x07, 0x91, 0x78, 0xcd, 0xba,
316 0xc0, 0x9d, 0x2b, 0x85, 0x63, 0xb3, 0xb9, 0xbf, 0xf6, 0x39, 0xfd, 0xf6,
317 0x64, 0x0d, 0xd6, 0xe0, 0x39, 0x31, 0x7c, 0x0e, 0x98, 0xaa, 0x4e, 0x28,
318 0xa5, 0x55, 0x8b, 0x82, 0xf8, 0x7c, 0xb6, 0x88, 0x4d, 0xf8, 0x39, 0x17,
319 0xd7, 0xa0, 0xdb, 0xf0, 0xf3, 0x34, 0xce, 0x80, 0xe0, 0x75, 0x06, 0x95,
320 0x25, 0xbd, 0xb8, 0x3d, 0x64, 0x56, 0xd1, 0x1a, 0x11, 0x3e, 0x4b, 0x00,
321 0xe6, 0xea, 0x52, 0x71, 0x8c, 0x73, 0x9b, 0x48, 0xc8, 0x22, 0xb6, 0x1d,
322 0x8a, 0x9b, 0x73, 0xd1, 0xa3, 0xf6, 0x63, 0x20, 0x01, 0xf4,
323 },
324 .entropy = &.{
325 0x74, 0x1b, 0xa0, 0x51, 0x03, 0x64, 0xb7, 0xbf, 0x70, 0x76, 0x32, 0x0b,
326 0xb2, 0x0a, 0xb8, 0xef, 0xea, 0x29, 0x1c, 0xbe, 0x31, 0x76, 0xd8, 0xf7,
327 0x83, 0xed, 0x2c, 0x37, 0x67, 0xef, 0x5a, 0x8d,
328 },
329 .encryption_private_key = &.{},
330 .signing_private_key = &.{},
331 .iv = &.{
332 0x43, 0x38, 0xf0, 0xb8, 0xe9, 0xd7, 0x30, 0x0a, 0x9c, 0x64, 0x54, 0x00,
333 0xc5, 0xeb, 0xb3, 0xbd,
334 },
335 .plaintext = &.{
336 0xcb, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
337 },
338 .output_raw = &.{
339 0x0c, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
340 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0xfe, 0x43, 0x38, 0xf0, 0xb8, 0xe9,
341 0xd7, 0x30, 0x0a, 0x9c, 0x64, 0x54, 0x00, 0xc5, 0xeb, 0xb3, 0xbd, 0x39,
342 0xb5, 0x0d, 0x0f, 0x9e, 0x64, 0x88, 0xe0, 0x04, 0xff, 0x2f, 0xff, 0x19,
343 0x68, 0x8b, 0x7c, 0x03, 0xd4, 0xdc, 0xf3, 0xe4, 0x2a, 0xad, 0x15, 0xd0,
344 0x89, 0x51, 0x9f, 0xd4, 0xce, 0xae, 0x8a, 0x4e, 0x17, 0xb7, 0x8a, 0xa3,
345 0xa0, 0x58, 0x7f, 0x8b, 0x4c, 0x8b, 0xb0, 0xf4, 0x59, 0x00, 0xa5,
346 },
347 .link_id = &.{
348 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
349 0x58, 0xcb, 0x4c, 0x9d,
350 },
351 .packet_hash = &.{
352 0x73, 0xc9, 0x64, 0x23, 0xa7, 0xcb, 0x7a, 0x8e, 0xbe, 0xd1, 0xa3, 0xe9,
353 0x48, 0xbb, 0x82, 0x09, 0x38, 0xe5, 0x42, 0x39, 0x8c, 0x7e, 0x6e, 0x6a,
354 0x3c, 0xb3, 0x5b, 0x8c, 0x1e, 0x5c, 0xd2, 0x0c,
355 },
356 },
357 .{
358 .name = "link-data",
359 .node = "initiator",
360 .clock = 1700000303,
361 .input_raw = &.{},
362 .entropy = &.{},
363 .encryption_private_key = &.{},
364 .signing_private_key = &.{},
365 .iv = &.{
366 0x29, 0x80, 0x9b, 0x2a, 0x8c, 0xbf, 0x14, 0xbd, 0xf4, 0x75, 0xd8, 0x0f,
367 0xeb, 0x6b, 0xab, 0x17,
368 },
369 .plaintext = &.{
370 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x64, 0x61, 0x74, 0x61,
371 },
372 .output_raw = &.{
373 0x0c, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
374 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0x00, 0x29, 0x80, 0x9b, 0x2a, 0x8c,
375 0xbf, 0x14, 0xbd, 0xf4, 0x75, 0xd8, 0x0f, 0xeb, 0x6b, 0xab, 0x17, 0x77,
376 0x34, 0xb3, 0x17, 0xa6, 0x71, 0x77, 0xcf, 0x10, 0x69, 0xd0, 0xef, 0xe8,
377 0xd2, 0x57, 0xc2, 0x56, 0x50, 0x1c, 0x8c, 0x1d, 0xb4, 0x84, 0x71, 0xaf,
378 0xde, 0x45, 0x71, 0x99, 0xd4, 0xe6, 0x9d, 0x03, 0x6a, 0x90, 0x0b, 0x27,
379 0xc5, 0xce, 0x68, 0xad, 0x14, 0x01, 0x37, 0x7c, 0x62, 0xf6, 0x18,
380 },
381 .link_id = &.{
382 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
383 0x58, 0xcb, 0x4c, 0x9d,
384 },
385 .packet_hash = &.{
386 0xe4, 0x95, 0x10, 0x12, 0x36, 0xcc, 0x60, 0x75, 0x97, 0x0c, 0x55, 0x42,
387 0x95, 0x31, 0xe4, 0x86, 0x71, 0x59, 0x0b, 0x67, 0x11, 0xe7, 0xdf, 0x31,
388 0x0d, 0xc8, 0x27, 0xf4, 0x91, 0x01, 0xb5, 0x21,
389 },
390 },
391 .{
392 .name = "link-data-proof",
393 .node = "responder",
394 .clock = 1700000303,
395 .input_raw = &.{
396 0x0c, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
397 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0x00, 0x29, 0x80, 0x9b, 0x2a, 0x8c,
398 0xbf, 0x14, 0xbd, 0xf4, 0x75, 0xd8, 0x0f, 0xeb, 0x6b, 0xab, 0x17, 0x77,
399 0x34, 0xb3, 0x17, 0xa6, 0x71, 0x77, 0xcf, 0x10, 0x69, 0xd0, 0xef, 0xe8,
400 0xd2, 0x57, 0xc2, 0x56, 0x50, 0x1c, 0x8c, 0x1d, 0xb4, 0x84, 0x71, 0xaf,
401 0xde, 0x45, 0x71, 0x99, 0xd4, 0xe6, 0x9d, 0x03, 0x6a, 0x90, 0x0b, 0x27,
402 0xc5, 0xce, 0x68, 0xad, 0x14, 0x01, 0x37, 0x7c, 0x62, 0xf6, 0x18,
403 },
404 .entropy = &.{},
405 .encryption_private_key = &.{},
406 .signing_private_key = &.{},
407 .iv = &.{},
408 .plaintext = &.{
409 0xe4, 0x95, 0x10, 0x12, 0x36, 0xcc, 0x60, 0x75, 0x97, 0x0c, 0x55, 0x42,
410 0x95, 0x31, 0xe4, 0x86, 0x71, 0x59, 0x0b, 0x67, 0x11, 0xe7, 0xdf, 0x31,
411 0x0d, 0xc8, 0x27, 0xf4, 0x91, 0x01, 0xb5, 0x21, 0xd8, 0x03, 0xbb, 0x4a,
412 0x94, 0x3d, 0xc7, 0xe9, 0xf3, 0x28, 0x56, 0x64, 0xe5, 0xfd, 0x9f, 0x03,
413 0xe4, 0xd3, 0x0d, 0x86, 0xa3, 0x93, 0xbc, 0xa8, 0xc7, 0x92, 0x5f, 0x4f,
414 0x9a, 0xa2, 0x91, 0xba, 0x23, 0x2a, 0xc6, 0x7a, 0xd9, 0x8a, 0xca, 0x1e,
415 0xd1, 0x22, 0xdf, 0x2a, 0xfb, 0x80, 0x38, 0x76, 0xc1, 0xdf, 0x86, 0xa2,
416 0xe1, 0xe8, 0xa1, 0xc8, 0x7a, 0xa3, 0x3f, 0xf9, 0x1a, 0x98, 0x59, 0x0a,
417 },
418 .output_raw = &.{
419 0x0f, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
420 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0x00, 0xe4, 0x95, 0x10, 0x12, 0x36,
421 0xcc, 0x60, 0x75, 0x97, 0x0c, 0x55, 0x42, 0x95, 0x31, 0xe4, 0x86, 0x71,
422 0x59, 0x0b, 0x67, 0x11, 0xe7, 0xdf, 0x31, 0x0d, 0xc8, 0x27, 0xf4, 0x91,
423 0x01, 0xb5, 0x21, 0xd8, 0x03, 0xbb, 0x4a, 0x94, 0x3d, 0xc7, 0xe9, 0xf3,
424 0x28, 0x56, 0x64, 0xe5, 0xfd, 0x9f, 0x03, 0xe4, 0xd3, 0x0d, 0x86, 0xa3,
425 0x93, 0xbc, 0xa8, 0xc7, 0x92, 0x5f, 0x4f, 0x9a, 0xa2, 0x91, 0xba, 0x23,
426 0x2a, 0xc6, 0x7a, 0xd9, 0x8a, 0xca, 0x1e, 0xd1, 0x22, 0xdf, 0x2a, 0xfb,
427 0x80, 0x38, 0x76, 0xc1, 0xdf, 0x86, 0xa2, 0xe1, 0xe8, 0xa1, 0xc8, 0x7a,
428 0xa3, 0x3f, 0xf9, 0x1a, 0x98, 0x59, 0x0a,
429 },
430 .link_id = &.{
431 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
432 0x58, 0xcb, 0x4c, 0x9d,
433 },
434 .packet_hash = &.{
435 0x9e, 0xcc, 0x80, 0x3a, 0x19, 0x17, 0xd1, 0xe5, 0x07, 0x62, 0x50, 0x9a,
436 0xfe, 0xf3, 0xbd, 0x5a, 0x6b, 0x95, 0xd6, 0xa6, 0xcb, 0x7b, 0x69, 0xc8,
437 0x81, 0x09, 0x7a, 0xf4, 0x45, 0x6b, 0x62, 0x88,
438 },
439 },
440 .{
441 .name = "link-keepalive",
442 .node = "initiator",
443 .clock = 1700000509,
444 .input_raw = &.{},
445 .entropy = &.{},
446 .encryption_private_key = &.{},
447 .signing_private_key = &.{},
448 .iv = &.{},
449 .plaintext = &.{0xff},
450 .output_raw = &.{
451 0x0c, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
452 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0xfa, 0xff,
453 },
454 .link_id = &.{
455 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
456 0x58, 0xcb, 0x4c, 0x9d,
457 },
458 .packet_hash = &.{
459 0xfb, 0x75, 0xf1, 0x89, 0x3f, 0xbe, 0x06, 0xc2, 0xe0, 0x0a, 0xbd, 0xac,
460 0x55, 0x74, 0xa6, 0x56, 0x79, 0x7a, 0x41, 0x0b, 0x11, 0xc7, 0xab, 0xbd,
461 0xfb, 0xad, 0xf4, 0x7b, 0x91, 0xb8, 0x9c, 0x6a,
462 },
463 },
464 .{
465 .name = "link-keepalive-answer",
466 .node = "responder",
467 .clock = 1700000509,
468 .input_raw = &.{
469 0x0c, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
470 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0xfa, 0xff,
471 },
472 .entropy = &.{},
473 .encryption_private_key = &.{},
474 .signing_private_key = &.{},
475 .iv = &.{},
476 .plaintext = &.{0xfe},
477 .output_raw = &.{
478 0x0c, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
479 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0xfa, 0xfe,
480 },
481 .link_id = &.{
482 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
483 0x58, 0xcb, 0x4c, 0x9d,
484 },
485 .packet_hash = &.{
486 0x52, 0x73, 0x92, 0xf0, 0x51, 0xe6, 0xad, 0xca, 0x8f, 0x95, 0xd2, 0x68,
487 0x58, 0x84, 0x8a, 0xf0, 0xd5, 0x96, 0x90, 0xea, 0x30, 0x20, 0x6e, 0x10,
488 0xbb, 0x82, 0xea, 0x4c, 0xda, 0xc0, 0xcf, 0xa8,
489 },
490 },
491 .{
492 .name = "link-close",
493 .node = "initiator",
494 .clock = 1700000510,
495 .input_raw = &.{},
496 .entropy = &.{},
497 .encryption_private_key = &.{},
498 .signing_private_key = &.{},
499 .iv = &.{
500 0x46, 0x5e, 0xab, 0x88, 0x5e, 0xd0, 0x0e, 0x76, 0xb6, 0x14, 0x73, 0x4e,
501 0xd6, 0x20, 0xc2, 0x52,
502 },
503 .plaintext = &.{
504 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
505 0x58, 0xcb, 0x4c, 0x9d,
506 },
507 .output_raw = &.{
508 0x0c, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
509 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0xfc, 0x46, 0x5e, 0xab, 0x88, 0x5e,
510 0xd0, 0x0e, 0x76, 0xb6, 0x14, 0x73, 0x4e, 0xd6, 0x20, 0xc2, 0x52, 0x34,
511 0x7d, 0x34, 0x71, 0x6b, 0x1d, 0x90, 0xa9, 0x01, 0x62, 0xdf, 0xbe, 0xeb,
512 0x43, 0x4e, 0x0c, 0x29, 0xa5, 0x30, 0x28, 0xed, 0x20, 0xea, 0x89, 0xe5,
513 0x03, 0xe8, 0x67, 0x08, 0x83, 0x4a, 0xd6, 0x19, 0x1b, 0x97, 0xe7, 0xa6,
514 0xef, 0x5a, 0x6d, 0xe4, 0x44, 0x64, 0x58, 0xd5, 0x5d, 0x4b, 0x76, 0xab,
515 0x40, 0x41, 0xc4, 0x73, 0xd0, 0xe9, 0x16, 0x1d, 0x26, 0x6b, 0xe3, 0xf9,
516 0x73, 0x9a, 0xda,
517 },
518 .link_id = &.{
519 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
520 0x58, 0xcb, 0x4c, 0x9d,
521 },
522 .packet_hash = &.{
523 0xe6, 0x08, 0x36, 0xec, 0xeb, 0x77, 0xa7, 0x9e, 0x78, 0x11, 0x16, 0x0f,
524 0xc3, 0xf1, 0x62, 0x6f, 0xe3, 0x67, 0xfa, 0x9b, 0xba, 0x31, 0x00, 0x73,
525 0x5b, 0xc9, 0xc6, 0xe4, 0x68, 0x8d, 0x10, 0x0a,
526 },
527 },
528 .{
529 .name = "link-request-stripped",
530 .node = "responder",
531 .clock = 1700000301,
532 .input_raw = &.{
533 0x02, 0x00, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
534 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x10, 0xf3, 0x8c, 0xc9, 0xdd,
535 0x40, 0xce, 0xe4, 0x6c, 0x2a, 0x4b, 0x1f, 0x78, 0x2c, 0x58, 0x90, 0xe1,
536 0x0b, 0xa3, 0x46, 0x99, 0xee, 0xc9, 0x53, 0xac, 0xd6, 0xde, 0x44, 0xc0,
537 0x26, 0x99, 0x7b, 0x46, 0xca, 0x63, 0xd4, 0xe7, 0xaf, 0xfc, 0x90, 0x8b,
538 0xce, 0x14, 0xa3, 0x45, 0x71, 0x37, 0xef, 0xf0, 0x71, 0xce, 0x7c, 0x2b,
539 0x8a, 0x78, 0xe1, 0x0f, 0xcc, 0xf6, 0x16, 0x84, 0x48, 0x7d, 0xfa,
540 },
541 .entropy = &.{
542 0x4e, 0x22, 0x21, 0x45, 0x73, 0x71, 0x58, 0xdc, 0x56, 0x75, 0xf3, 0xc5,
543 0xdd, 0x90, 0x0e, 0x46, 0x31, 0x72, 0x64, 0x28, 0x8d, 0x9b, 0x78, 0x54,
544 0xaa, 0xd9, 0xd4, 0x3f, 0x25, 0x00, 0x45, 0xcd,
545 },
546 .encryption_private_key = &.{
547 0xf8, 0xbd, 0x93, 0xd8, 0xd0, 0x8c, 0xc9, 0x84, 0xa7, 0x79, 0x44, 0x9b,
548 0x7d, 0x12, 0x74, 0x1d, 0x13, 0xd3, 0x7d, 0xef, 0x79, 0x74, 0xb4, 0x34,
549 0x1c, 0xcb, 0x73, 0x66, 0xef, 0xdb, 0x4a, 0x82,
550 },
551 .signing_private_key = &.{},
552 .iv = &.{},
553 .plaintext = &.{
554 0xf9, 0xba, 0x05, 0x68, 0x3a, 0x96, 0x99, 0x8d, 0x3d, 0xd2, 0x0d, 0x13,
555 0x8c, 0xaf, 0x02, 0x4a, 0xab, 0x4d, 0x0b, 0xf8, 0x93, 0x58, 0x0e, 0x29,
556 0xf5, 0x45, 0x92, 0x31, 0x6b, 0x3b, 0xec, 0x05, 0x58, 0xce, 0x5c, 0x5d,
557 0xd6, 0x1c, 0x03, 0xa3, 0xcb, 0x3c, 0x90, 0x54, 0x99, 0xfc, 0x3f, 0x29,
558 0x2e, 0x01, 0x9d, 0x2a, 0x7d, 0x1f, 0xef, 0xd4, 0xaa, 0x2e, 0xa2, 0xb5,
559 0x9c, 0x74, 0x45, 0x0f, 0x51, 0xfc, 0xfb, 0x0d, 0xfd, 0x34, 0x00, 0x2f,
560 0xf5, 0x47, 0xcd, 0xa2, 0xd6, 0x50, 0xc5, 0x42, 0xec, 0xcf, 0xa4, 0xc0,
561 0xc7, 0x72, 0x68, 0x29, 0xfb, 0x66, 0x4d, 0x47, 0xf0, 0x2d, 0x7e, 0x3c,
562 0x20, 0x01, 0xf4,
563 },
564 .output_raw = &.{
565 0x0f, 0x00, 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36,
566 0x11, 0xf4, 0x58, 0xcb, 0x4c, 0x9d, 0xff, 0xf9, 0xba, 0x05, 0x68, 0x3a,
567 0x96, 0x99, 0x8d, 0x3d, 0xd2, 0x0d, 0x13, 0x8c, 0xaf, 0x02, 0x4a, 0xab,
568 0x4d, 0x0b, 0xf8, 0x93, 0x58, 0x0e, 0x29, 0xf5, 0x45, 0x92, 0x31, 0x6b,
569 0x3b, 0xec, 0x05, 0x58, 0xce, 0x5c, 0x5d, 0xd6, 0x1c, 0x03, 0xa3, 0xcb,
570 0x3c, 0x90, 0x54, 0x99, 0xfc, 0x3f, 0x29, 0x2e, 0x01, 0x9d, 0x2a, 0x7d,
571 0x1f, 0xef, 0xd4, 0xaa, 0x2e, 0xa2, 0xb5, 0x9c, 0x74, 0x45, 0x0f, 0x51,
572 0xfc, 0xfb, 0x0d, 0xfd, 0x34, 0x00, 0x2f, 0xf5, 0x47, 0xcd, 0xa2, 0xd6,
573 0x50, 0xc5, 0x42, 0xec, 0xcf, 0xa4, 0xc0, 0xc7, 0x72, 0x68, 0x29, 0xfb,
574 0x66, 0x4d, 0x47, 0xf0, 0x2d, 0x7e, 0x3c, 0x20, 0x01, 0xf4,
575 },
576 .link_id = &.{
577 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
578 0x58, 0xcb, 0x4c, 0x9d,
579 },
580 .packet_hash = &.{
581 0x5b, 0xdf, 0xf7, 0x57, 0x49, 0x4e, 0x64, 0x20, 0x93, 0x4f, 0xaf, 0x09,
582 0x93, 0x69, 0xe9, 0xfb, 0x67, 0x2d, 0x2e, 0x2c, 0x37, 0x72, 0xf6, 0x50,
583 0x15, 0x57, 0x9b, 0x09, 0xc5, 0xb0, 0x03, 0xf0,
584 },
585 },
586 };
587
588 pub const key_vectors: []const KeyVector = &.{
589 .{
590 .name = "link-key",
591 .initiator_encryption_private_key = &.{
592 0x0a, 0x88, 0x04, 0x4a, 0x3e, 0x94, 0x83, 0x75, 0x71, 0x76, 0x14, 0x22,
593 0x4f, 0x74, 0x3f, 0xcc, 0x2f, 0x04, 0x12, 0x7b, 0x03, 0xc2, 0x08, 0xab,
594 0xf2, 0x06, 0xdb, 0x08, 0xf4, 0x4a, 0x65, 0xf6,
595 },
596 .responder_encryption_private_key = &.{
597 0x05, 0x19, 0x34, 0x20, 0x96, 0x6b, 0xab, 0x7e, 0x23, 0x14, 0x9a, 0xf3,
598 0x8e, 0xad, 0x67, 0x4f, 0x73, 0x38, 0x75, 0xd8, 0x88, 0xe8, 0x2b, 0x79,
599 0xba, 0xb2, 0xe9, 0x52, 0x83, 0xdc, 0xae, 0xb7,
600 },
601 .link_id = &.{
602 0x12, 0xbf, 0x81, 0x44, 0xbb, 0xce, 0x7d, 0x18, 0x1b, 0x36, 0x11, 0xf4,
603 0x58, 0xcb, 0x4c, 0x9d,
604 },
605 .shared_key = &.{
606 0x5b, 0xc9, 0x41, 0x8e, 0x08, 0x78, 0xe7, 0xed, 0x7e, 0x40, 0xd4, 0x7c,
607 0x12, 0xea, 0xe0, 0xf6, 0xda, 0xd4, 0x3f, 0x30, 0xb4, 0x31, 0xd7, 0x0a,
608 0x0f, 0x95, 0x4f, 0x40, 0xfb, 0x55, 0x73, 0x5c,
609 },
610 .derived_key = &.{
611 0x84, 0x7b, 0x69, 0x78, 0xd3, 0x85, 0xc7, 0xf7, 0x9e, 0xef, 0x23, 0xd5,
612 0x46, 0x5e, 0x1f, 0x98, 0x87, 0xce, 0x84, 0x3f, 0x9d, 0xd3, 0xf6, 0x40,
613 0xbe, 0xae, 0x0a, 0x16, 0x55, 0x25, 0x99, 0xc4, 0x8c, 0xa5, 0x02, 0x0f,
614 0xdd, 0xaa, 0x62, 0xe0, 0xea, 0x2f, 0xd8, 0x81, 0x4e, 0x14, 0xf7, 0x7a,
615 0x8e, 0x43, 0x14, 0xb0, 0x77, 0x84, 0xbb, 0x08, 0x78, 0x46, 0x84, 0x21,
616 0xda, 0x6e, 0xc7, 0x82,
617 },
618 },
619 };
620
621 pub const relay_vectors: []const RelayVector = &.{
622 .{
623 .name = "transport-link-request-insert",
624 .identity_hash = &.{
625 0x1c, 0x1d, 0x4c, 0xee, 0xca, 0xba, 0x5e, 0xcd, 0x83, 0x3e, 0x99, 0xab,
626 0xe6, 0x93, 0x37, 0x0a,
627 },
628 .interfaces = 2,
629 .announce_raw = &.{
630 0x51, 0x01, 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78,
631 0xb0, 0x93, 0xe6, 0x08, 0x9c, 0x3e, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10,
632 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x3c,
633 0x16, 0xa4, 0x7b, 0xc3, 0xcd, 0x38, 0x94, 0xbf, 0xe9, 0xa6, 0x7a, 0xb5,
634 0xe7, 0x2c, 0xb9, 0x96, 0x4a, 0x9d, 0x6b, 0x71, 0x6c, 0x74, 0x3a, 0x4a,
635 0x20, 0xb1, 0x2a, 0x7f, 0x9f, 0xe5, 0x12, 0x61, 0xb9, 0xf0, 0xd6, 0xdd,
636 0x9e, 0xa1, 0x35, 0xf4, 0x71, 0xf8, 0x32, 0xae, 0x69, 0xe1, 0x67, 0xe7,
637 0x8a, 0x20, 0x46, 0xa0, 0x23, 0x8a, 0x2a, 0x6a, 0x90, 0x98, 0x89, 0xc9,
638 0x57, 0x9a, 0x04, 0xd6, 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e,
639 0x66, 0x02, 0x7f, 0x7a, 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00, 0x0c,
640 0xd8, 0xa7, 0xb0, 0xee, 0x50, 0x27, 0xdf, 0x23, 0x06, 0x18, 0x66, 0xfd,
641 0xad, 0x0d, 0xc8, 0xd1, 0x9b, 0x9f, 0x60, 0xd1, 0xeb, 0x6d, 0x56, 0xd1,
642 0x5d, 0x3f, 0xcc, 0x7b, 0xc8, 0x2a, 0xd4, 0xe2, 0x9c, 0x62, 0x9f, 0x5f,
643 0xae, 0x98, 0x3d, 0x74, 0x57, 0x29, 0x3e, 0xe6, 0xcb, 0x07, 0x40, 0xc2,
644 0x38, 0x3d, 0xb1, 0x2a, 0xcf, 0x1d, 0x7c, 0xc6, 0x33, 0xe5, 0x7d, 0xfa,
645 0xcb, 0x06, 0x0f,
646 },
647 .announce_interface = 0,
648 .announce_clock = 1700000001,
649 .request_raw = &.{},
650 .request_interface = 0,
651 .request_clock = 0,
652 .proof_raw = &.{},
653 .proof_interface = 0,
654 .proof_clock = 0,
655 .input_raw = &.{},
656 .input_interface = 0,
657 .input_clock = 1700000020,
658 .entropy = &.{},
659 .encryption_private_key = &.{
660 0x9d, 0x11, 0x48, 0x0a, 0x52, 0xa6, 0x0b, 0x08, 0x24, 0xaa, 0x00, 0xfa,
661 0x63, 0x0c, 0x23, 0x94, 0x17, 0x75, 0xaa, 0x23, 0xec, 0xc5, 0x88, 0xa7,
662 0xe7, 0xd4, 0x59, 0x6b, 0x35, 0xf9, 0xd5, 0x85,
663 },
664 .signing_private_key = &.{
665 0x4a, 0x9a, 0xea, 0x3c, 0x71, 0x20, 0xde, 0x0c, 0x5f, 0xb7, 0x5a, 0x86,
666 0x30, 0x92, 0x6a, 0x45, 0xef, 0x9f, 0xef, 0xce, 0xf2, 0x44, 0x07, 0x13,
667 0x0e, 0x68, 0x16, 0x13, 0x2f, 0x35, 0x1f, 0xec,
668 },
669 .output_interface = 0,
670 .output_raw = &.{
671 0x52, 0x00, 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78,
672 0xb0, 0x93, 0xe6, 0x08, 0x9c, 0x3e, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10,
673 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x67,
674 0x91, 0xfa, 0xa6, 0x25, 0x13, 0x90, 0x1c, 0xc6, 0xdc, 0x37, 0xff, 0x5e,
675 0x0d, 0xac, 0x65, 0x94, 0x87, 0x03, 0xc2, 0x20, 0x2f, 0x9e, 0x4f, 0x34,
676 0x51, 0x52, 0x20, 0x00, 0x89, 0x88, 0x2c, 0x97, 0x3d, 0xf0, 0x7e, 0x19,
677 0x59, 0x7f, 0x8f, 0x1a, 0x7e, 0x8b, 0xc1, 0x68, 0xf9, 0xc4, 0x31, 0x6e,
678 0x28, 0xd7, 0x83, 0x9c, 0x39, 0xd3, 0xca, 0xa6, 0xc7, 0xea, 0x68, 0xba,
679 0xff, 0x3f, 0xac, 0x20, 0x01, 0xf4,
680 },
681 .link_id = &.{
682 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78, 0x65, 0x4a,
683 0x15, 0x78, 0x2f, 0x38,
684 },
685 .transport_id = &.{
686 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78, 0xb0, 0x93,
687 0xe6, 0x08, 0x9c, 0x3e,
688 },
689 .hops = 0,
690 .context = 0,
691 .context_flag = 0,
692 .packet_hash = &.{
693 0xd7, 0x92, 0xe0, 0xdb, 0x24, 0x52, 0x8b, 0x3e, 0x71, 0x6e, 0x41, 0x28,
694 0x25, 0x25, 0x91, 0xd9, 0x90, 0x8c, 0xed, 0x5d, 0x0c, 0x56, 0xe6, 0x04,
695 0xd8, 0xfa, 0xd5, 0xee, 0x6a, 0x28, 0x57, 0x41,
696 },
697 },
698 .{
699 .name = "transport-link-request-strip",
700 .identity_hash = &.{
701 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78, 0xb0, 0x93,
702 0xe6, 0x08, 0x9c, 0x3e,
703 },
704 .interfaces = 2,
705 .announce_raw = &.{
706 0x01, 0x00, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
707 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x3c, 0x16, 0xa4, 0x7b, 0xc3,
708 0xcd, 0x38, 0x94, 0xbf, 0xe9, 0xa6, 0x7a, 0xb5, 0xe7, 0x2c, 0xb9, 0x96,
709 0x4a, 0x9d, 0x6b, 0x71, 0x6c, 0x74, 0x3a, 0x4a, 0x20, 0xb1, 0x2a, 0x7f,
710 0x9f, 0xe5, 0x12, 0x61, 0xb9, 0xf0, 0xd6, 0xdd, 0x9e, 0xa1, 0x35, 0xf4,
711 0x71, 0xf8, 0x32, 0xae, 0x69, 0xe1, 0x67, 0xe7, 0x8a, 0x20, 0x46, 0xa0,
712 0x23, 0x8a, 0x2a, 0x6a, 0x90, 0x98, 0x89, 0xc9, 0x57, 0x9a, 0x04, 0xd6,
713 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e, 0x66, 0x02, 0x7f, 0x7a,
714 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00, 0x0c, 0xd8, 0xa7, 0xb0, 0xee,
715 0x50, 0x27, 0xdf, 0x23, 0x06, 0x18, 0x66, 0xfd, 0xad, 0x0d, 0xc8, 0xd1,
716 0x9b, 0x9f, 0x60, 0xd1, 0xeb, 0x6d, 0x56, 0xd1, 0x5d, 0x3f, 0xcc, 0x7b,
717 0xc8, 0x2a, 0xd4, 0xe2, 0x9c, 0x62, 0x9f, 0x5f, 0xae, 0x98, 0x3d, 0x74,
718 0x57, 0x29, 0x3e, 0xe6, 0xcb, 0x07, 0x40, 0xc2, 0x38, 0x3d, 0xb1, 0x2a,
719 0xcf, 0x1d, 0x7c, 0xc6, 0x33, 0xe5, 0x7d, 0xfa, 0xcb, 0x06, 0x0f,
720 },
721 .announce_interface = 1,
722 .announce_clock = 1700000000,
723 .request_raw = &.{},
724 .request_interface = 0,
725 .request_clock = 0,
726 .proof_raw = &.{},
727 .proof_interface = 0,
728 .proof_clock = 0,
729 .input_raw = &.{
730 0x52, 0x00, 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78,
731 0xb0, 0x93, 0xe6, 0x08, 0x9c, 0x3e, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10,
732 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x67,
733 0x91, 0xfa, 0xa6, 0x25, 0x13, 0x90, 0x1c, 0xc6, 0xdc, 0x37, 0xff, 0x5e,
734 0x0d, 0xac, 0x65, 0x94, 0x87, 0x03, 0xc2, 0x20, 0x2f, 0x9e, 0x4f, 0x34,
735 0x51, 0x52, 0x20, 0x00, 0x89, 0x88, 0x2c, 0x97, 0x3d, 0xf0, 0x7e, 0x19,
736 0x59, 0x7f, 0x8f, 0x1a, 0x7e, 0x8b, 0xc1, 0x68, 0xf9, 0xc4, 0x31, 0x6e,
737 0x28, 0xd7, 0x83, 0x9c, 0x39, 0xd3, 0xca, 0xa6, 0xc7, 0xea, 0x68, 0xba,
738 0xff, 0x3f, 0xac, 0x20, 0x01, 0xf4,
739 },
740 .input_interface = 0,
741 .input_clock = 1700000020,
742 .entropy = &.{},
743 .encryption_private_key = &.{},
744 .signing_private_key = &.{},
745 .output_interface = 1,
746 .output_raw = &.{
747 0x02, 0x01, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
748 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x67, 0x91, 0xfa, 0xa6, 0x25,
749 0x13, 0x90, 0x1c, 0xc6, 0xdc, 0x37, 0xff, 0x5e, 0x0d, 0xac, 0x65, 0x94,
750 0x87, 0x03, 0xc2, 0x20, 0x2f, 0x9e, 0x4f, 0x34, 0x51, 0x52, 0x20, 0x00,
751 0x89, 0x88, 0x2c, 0x97, 0x3d, 0xf0, 0x7e, 0x19, 0x59, 0x7f, 0x8f, 0x1a,
752 0x7e, 0x8b, 0xc1, 0x68, 0xf9, 0xc4, 0x31, 0x6e, 0x28, 0xd7, 0x83, 0x9c,
753 0x39, 0xd3, 0xca, 0xa6, 0xc7, 0xea, 0x68, 0xba, 0xff, 0x3f, 0xac,
754 },
755 .link_id = &.{
756 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78, 0x65, 0x4a,
757 0x15, 0x78, 0x2f, 0x38,
758 },
759 .transport_id = &.{},
760 .hops = 1,
761 .context = 0,
762 .context_flag = 0,
763 .packet_hash = &.{
764 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78, 0x65, 0x4a,
765 0x15, 0x78, 0x2f, 0x38, 0x66, 0x79, 0x2f, 0x39, 0xf4, 0x3c, 0xcd, 0x90,
766 0x80, 0x08, 0xbc, 0xa8, 0xf4, 0x2d, 0x87, 0xa1,
767 },
768 },
769 .{
770 .name = "transport-link-proof-relay",
771 .identity_hash = &.{
772 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78, 0xb0, 0x93,
773 0xe6, 0x08, 0x9c, 0x3e,
774 },
775 .interfaces = 2,
776 .announce_raw = &.{
777 0x01, 0x00, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
778 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x3c, 0x16, 0xa4, 0x7b, 0xc3,
779 0xcd, 0x38, 0x94, 0xbf, 0xe9, 0xa6, 0x7a, 0xb5, 0xe7, 0x2c, 0xb9, 0x96,
780 0x4a, 0x9d, 0x6b, 0x71, 0x6c, 0x74, 0x3a, 0x4a, 0x20, 0xb1, 0x2a, 0x7f,
781 0x9f, 0xe5, 0x12, 0x61, 0xb9, 0xf0, 0xd6, 0xdd, 0x9e, 0xa1, 0x35, 0xf4,
782 0x71, 0xf8, 0x32, 0xae, 0x69, 0xe1, 0x67, 0xe7, 0x8a, 0x20, 0x46, 0xa0,
783 0x23, 0x8a, 0x2a, 0x6a, 0x90, 0x98, 0x89, 0xc9, 0x57, 0x9a, 0x04, 0xd6,
784 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e, 0x66, 0x02, 0x7f, 0x7a,
785 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00, 0x0c, 0xd8, 0xa7, 0xb0, 0xee,
786 0x50, 0x27, 0xdf, 0x23, 0x06, 0x18, 0x66, 0xfd, 0xad, 0x0d, 0xc8, 0xd1,
787 0x9b, 0x9f, 0x60, 0xd1, 0xeb, 0x6d, 0x56, 0xd1, 0x5d, 0x3f, 0xcc, 0x7b,
788 0xc8, 0x2a, 0xd4, 0xe2, 0x9c, 0x62, 0x9f, 0x5f, 0xae, 0x98, 0x3d, 0x74,
789 0x57, 0x29, 0x3e, 0xe6, 0xcb, 0x07, 0x40, 0xc2, 0x38, 0x3d, 0xb1, 0x2a,
790 0xcf, 0x1d, 0x7c, 0xc6, 0x33, 0xe5, 0x7d, 0xfa, 0xcb, 0x06, 0x0f,
791 },
792 .announce_interface = 1,
793 .announce_clock = 1700000000,
794 .request_raw = &.{
795 0x52, 0x00, 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78,
796 0xb0, 0x93, 0xe6, 0x08, 0x9c, 0x3e, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10,
797 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x67,
798 0x91, 0xfa, 0xa6, 0x25, 0x13, 0x90, 0x1c, 0xc6, 0xdc, 0x37, 0xff, 0x5e,
799 0x0d, 0xac, 0x65, 0x94, 0x87, 0x03, 0xc2, 0x20, 0x2f, 0x9e, 0x4f, 0x34,
800 0x51, 0x52, 0x20, 0x00, 0x89, 0x88, 0x2c, 0x97, 0x3d, 0xf0, 0x7e, 0x19,
801 0x59, 0x7f, 0x8f, 0x1a, 0x7e, 0x8b, 0xc1, 0x68, 0xf9, 0xc4, 0x31, 0x6e,
802 0x28, 0xd7, 0x83, 0x9c, 0x39, 0xd3, 0xca, 0xa6, 0xc7, 0xea, 0x68, 0xba,
803 0xff, 0x3f, 0xac, 0x20, 0x01, 0xf4,
804 },
805 .request_interface = 0,
806 .request_clock = 1700000020,
807 .proof_raw = &.{},
808 .proof_interface = 0,
809 .proof_clock = 0,
810 .input_raw = &.{
811 0x0f, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
812 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xff, 0x08, 0x5c, 0x15, 0x4c, 0x75,
813 0xe1, 0x17, 0x2e, 0xe6, 0x29, 0xa5, 0xe1, 0xfb, 0x44, 0x1c, 0x21, 0x85,
814 0x90, 0x23, 0x35, 0x32, 0x90, 0xb0, 0x17, 0xbb, 0x9e, 0xe2, 0xaa, 0xd2,
815 0xdd, 0xb8, 0x1d, 0xbb, 0x8c, 0x12, 0xb3, 0x33, 0x08, 0x8a, 0x27, 0xb7,
816 0xda, 0xde, 0x2e, 0x0d, 0xe0, 0x90, 0x80, 0x00, 0x7c, 0x9d, 0x8e, 0xc1,
817 0x2f, 0xa3, 0x30, 0xbd, 0xa0, 0x5b, 0x2c, 0xe5, 0x09, 0xc7, 0x0d, 0x24,
818 0x68, 0xd8, 0x8b, 0x0e, 0x4a, 0x63, 0xd1, 0x9e, 0x97, 0x53, 0x05, 0xd7,
819 0x34, 0xdf, 0xb5, 0x9e, 0x76, 0xc7, 0xd0, 0x55, 0xa0, 0xfd, 0xc0, 0xbe,
820 0xe8, 0x49, 0xd3, 0x05, 0x19, 0xbf, 0x76, 0x20, 0x01, 0xf4,
821 },
822 .input_interface = 1,
823 .input_clock = 1700000020,
824 .entropy = &.{},
825 .encryption_private_key = &.{},
826 .signing_private_key = &.{},
827 .output_interface = 0,
828 .output_raw = &.{
829 0x0f, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
830 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xff, 0x08, 0x5c, 0x15, 0x4c, 0x75,
831 0xe1, 0x17, 0x2e, 0xe6, 0x29, 0xa5, 0xe1, 0xfb, 0x44, 0x1c, 0x21, 0x85,
832 0x90, 0x23, 0x35, 0x32, 0x90, 0xb0, 0x17, 0xbb, 0x9e, 0xe2, 0xaa, 0xd2,
833 0xdd, 0xb8, 0x1d, 0xbb, 0x8c, 0x12, 0xb3, 0x33, 0x08, 0x8a, 0x27, 0xb7,
834 0xda, 0xde, 0x2e, 0x0d, 0xe0, 0x90, 0x80, 0x00, 0x7c, 0x9d, 0x8e, 0xc1,
835 0x2f, 0xa3, 0x30, 0xbd, 0xa0, 0x5b, 0x2c, 0xe5, 0x09, 0xc7, 0x0d, 0x24,
836 0x68, 0xd8, 0x8b, 0x0e, 0x4a, 0x63, 0xd1, 0x9e, 0x97, 0x53, 0x05, 0xd7,
837 0x34, 0xdf, 0xb5, 0x9e, 0x76, 0xc7, 0xd0, 0x55, 0xa0, 0xfd, 0xc0, 0xbe,
838 0xe8, 0x49, 0xd3, 0x05, 0x19, 0xbf, 0x76, 0x20, 0x01, 0xf4,
839 },
840 .link_id = &.{
841 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78, 0x65, 0x4a,
842 0x15, 0x78, 0x2f, 0x38,
843 },
844 .transport_id = &.{},
845 .hops = 1,
846 .context = 255,
847 .context_flag = 0,
848 .packet_hash = &.{
849 0x99, 0xfe, 0xfd, 0x19, 0x4b, 0x62, 0x16, 0x6a, 0x91, 0x44, 0x6a, 0xed,
850 0x3c, 0x26, 0xbc, 0xde, 0x61, 0xa8, 0xf1, 0x59, 0x22, 0x6c, 0xc6, 0x1f,
851 0x5a, 0xe2, 0x8c, 0x32, 0x67, 0xb0, 0x3f, 0xe5,
852 },
853 },
854 .{
855 .name = "transport-link-data-relay",
856 .identity_hash = &.{
857 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78, 0xb0, 0x93,
858 0xe6, 0x08, 0x9c, 0x3e,
859 },
860 .interfaces = 2,
861 .announce_raw = &.{
862 0x01, 0x00, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
863 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x3c, 0x16, 0xa4, 0x7b, 0xc3,
864 0xcd, 0x38, 0x94, 0xbf, 0xe9, 0xa6, 0x7a, 0xb5, 0xe7, 0x2c, 0xb9, 0x96,
865 0x4a, 0x9d, 0x6b, 0x71, 0x6c, 0x74, 0x3a, 0x4a, 0x20, 0xb1, 0x2a, 0x7f,
866 0x9f, 0xe5, 0x12, 0x61, 0xb9, 0xf0, 0xd6, 0xdd, 0x9e, 0xa1, 0x35, 0xf4,
867 0x71, 0xf8, 0x32, 0xae, 0x69, 0xe1, 0x67, 0xe7, 0x8a, 0x20, 0x46, 0xa0,
868 0x23, 0x8a, 0x2a, 0x6a, 0x90, 0x98, 0x89, 0xc9, 0x57, 0x9a, 0x04, 0xd6,
869 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e, 0x66, 0x02, 0x7f, 0x7a,
870 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00, 0x0c, 0xd8, 0xa7, 0xb0, 0xee,
871 0x50, 0x27, 0xdf, 0x23, 0x06, 0x18, 0x66, 0xfd, 0xad, 0x0d, 0xc8, 0xd1,
872 0x9b, 0x9f, 0x60, 0xd1, 0xeb, 0x6d, 0x56, 0xd1, 0x5d, 0x3f, 0xcc, 0x7b,
873 0xc8, 0x2a, 0xd4, 0xe2, 0x9c, 0x62, 0x9f, 0x5f, 0xae, 0x98, 0x3d, 0x74,
874 0x57, 0x29, 0x3e, 0xe6, 0xcb, 0x07, 0x40, 0xc2, 0x38, 0x3d, 0xb1, 0x2a,
875 0xcf, 0x1d, 0x7c, 0xc6, 0x33, 0xe5, 0x7d, 0xfa, 0xcb, 0x06, 0x0f,
876 },
877 .announce_interface = 1,
878 .announce_clock = 1700000000,
879 .request_raw = &.{
880 0x52, 0x00, 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78,
881 0xb0, 0x93, 0xe6, 0x08, 0x9c, 0x3e, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10,
882 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x67,
883 0x91, 0xfa, 0xa6, 0x25, 0x13, 0x90, 0x1c, 0xc6, 0xdc, 0x37, 0xff, 0x5e,
884 0x0d, 0xac, 0x65, 0x94, 0x87, 0x03, 0xc2, 0x20, 0x2f, 0x9e, 0x4f, 0x34,
885 0x51, 0x52, 0x20, 0x00, 0x89, 0x88, 0x2c, 0x97, 0x3d, 0xf0, 0x7e, 0x19,
886 0x59, 0x7f, 0x8f, 0x1a, 0x7e, 0x8b, 0xc1, 0x68, 0xf9, 0xc4, 0x31, 0x6e,
887 0x28, 0xd7, 0x83, 0x9c, 0x39, 0xd3, 0xca, 0xa6, 0xc7, 0xea, 0x68, 0xba,
888 0xff, 0x3f, 0xac, 0x20, 0x01, 0xf4,
889 },
890 .request_interface = 0,
891 .request_clock = 1700000020,
892 .proof_raw = &.{
893 0x0f, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
894 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xff, 0x08, 0x5c, 0x15, 0x4c, 0x75,
895 0xe1, 0x17, 0x2e, 0xe6, 0x29, 0xa5, 0xe1, 0xfb, 0x44, 0x1c, 0x21, 0x85,
896 0x90, 0x23, 0x35, 0x32, 0x90, 0xb0, 0x17, 0xbb, 0x9e, 0xe2, 0xaa, 0xd2,
897 0xdd, 0xb8, 0x1d, 0xbb, 0x8c, 0x12, 0xb3, 0x33, 0x08, 0x8a, 0x27, 0xb7,
898 0xda, 0xde, 0x2e, 0x0d, 0xe0, 0x90, 0x80, 0x00, 0x7c, 0x9d, 0x8e, 0xc1,
899 0x2f, 0xa3, 0x30, 0xbd, 0xa0, 0x5b, 0x2c, 0xe5, 0x09, 0xc7, 0x0d, 0x24,
900 0x68, 0xd8, 0x8b, 0x0e, 0x4a, 0x63, 0xd1, 0x9e, 0x97, 0x53, 0x05, 0xd7,
901 0x34, 0xdf, 0xb5, 0x9e, 0x76, 0xc7, 0xd0, 0x55, 0xa0, 0xfd, 0xc0, 0xbe,
902 0xe8, 0x49, 0xd3, 0x05, 0x19, 0xbf, 0x76, 0x20, 0x01, 0xf4,
903 },
904 .proof_interface = 1,
905 .proof_clock = 1700000020,
906 .input_raw = &.{
907 0x0c, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
908 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0xdc, 0x32, 0x77, 0xd9, 0xa9,
909 0xa2, 0x2b, 0x4d, 0x58, 0x77, 0x9c, 0xa6, 0xfa, 0x23, 0xba, 0xe9, 0x30,
910 0xf1, 0xdd, 0x64, 0x73, 0x50, 0x1f, 0x95, 0x1e, 0x7b, 0x47, 0x1f, 0x39,
911 0x5d, 0x4f, 0x8d, 0x03, 0x6e, 0x03, 0x37, 0x61, 0x10, 0x29, 0x22, 0x98,
912 0xc3, 0x82, 0xb9, 0x2c, 0x9b, 0x72, 0x53, 0x3e, 0x4f, 0xf2, 0x12, 0x71,
913 0x15, 0xa0, 0x56, 0x49, 0x15, 0xa0, 0x11, 0x8b, 0xdb, 0xdf, 0xc8,
914 },
915 .input_interface = 0,
916 .input_clock = 1700000022,
917 .entropy = &.{},
918 .encryption_private_key = &.{},
919 .signing_private_key = &.{},
920 .output_interface = 1,
921 .output_raw = &.{
922 0x0c, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
923 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0xdc, 0x32, 0x77, 0xd9, 0xa9,
924 0xa2, 0x2b, 0x4d, 0x58, 0x77, 0x9c, 0xa6, 0xfa, 0x23, 0xba, 0xe9, 0x30,
925 0xf1, 0xdd, 0x64, 0x73, 0x50, 0x1f, 0x95, 0x1e, 0x7b, 0x47, 0x1f, 0x39,
926 0x5d, 0x4f, 0x8d, 0x03, 0x6e, 0x03, 0x37, 0x61, 0x10, 0x29, 0x22, 0x98,
927 0xc3, 0x82, 0xb9, 0x2c, 0x9b, 0x72, 0x53, 0x3e, 0x4f, 0xf2, 0x12, 0x71,
928 0x15, 0xa0, 0x56, 0x49, 0x15, 0xa0, 0x11, 0x8b, 0xdb, 0xdf, 0xc8,
929 },
930 .link_id = &.{
931 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78, 0x65, 0x4a,
932 0x15, 0x78, 0x2f, 0x38,
933 },
934 .transport_id = &.{},
935 .hops = 1,
936 .context = 0,
937 .context_flag = 0,
938 .packet_hash = &.{
939 0xea, 0x3f, 0x88, 0x00, 0xb4, 0x27, 0x4c, 0xa5, 0x68, 0x7e, 0x28, 0xc7,
940 0x38, 0x57, 0x0d, 0xa8, 0xf3, 0xc4, 0x99, 0x22, 0x72, 0x9d, 0xe3, 0xa2,
941 0xca, 0x9b, 0xef, 0xc4, 0x2c, 0x79, 0xc7, 0x43,
942 },
943 },
944 };
945
946 pub const three_node_vectors: []const ThreeNodeVector = &.{
947 .{
948 .name = "transport-three-node-link",
949 .start_clock = 1700000000,
950 .announce_raw = &.{
951 0x01, 0x00, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
952 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x3c, 0x16, 0xa4, 0x7b, 0xc3,
953 0xcd, 0x38, 0x94, 0xbf, 0xe9, 0xa6, 0x7a, 0xb5, 0xe7, 0x2c, 0xb9, 0x96,
954 0x4a, 0x9d, 0x6b, 0x71, 0x6c, 0x74, 0x3a, 0x4a, 0x20, 0xb1, 0x2a, 0x7f,
955 0x9f, 0xe5, 0x12, 0x61, 0xb9, 0xf0, 0xd6, 0xdd, 0x9e, 0xa1, 0x35, 0xf4,
956 0x71, 0xf8, 0x32, 0xae, 0x69, 0xe1, 0x67, 0xe7, 0x8a, 0x20, 0x46, 0xa0,
957 0x23, 0x8a, 0x2a, 0x6a, 0x90, 0x98, 0x89, 0xc9, 0x57, 0x9a, 0x04, 0xd6,
958 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e, 0x66, 0x02, 0x7f, 0x7a,
959 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00, 0x0c, 0xd8, 0xa7, 0xb0, 0xee,
960 0x50, 0x27, 0xdf, 0x23, 0x06, 0x18, 0x66, 0xfd, 0xad, 0x0d, 0xc8, 0xd1,
961 0x9b, 0x9f, 0x60, 0xd1, 0xeb, 0x6d, 0x56, 0xd1, 0x5d, 0x3f, 0xcc, 0x7b,
962 0xc8, 0x2a, 0xd4, 0xe2, 0x9c, 0x62, 0x9f, 0x5f, 0xae, 0x98, 0x3d, 0x74,
963 0x57, 0x29, 0x3e, 0xe6, 0xcb, 0x07, 0x40, 0xc2, 0x38, 0x3d, 0xb1, 0x2a,
964 0xcf, 0x1d, 0x7c, 0xc6, 0x33, 0xe5, 0x7d, 0xfa, 0xcb, 0x06, 0x0f,
965 },
966 .destination_hash = &.{
967 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8,
968 0x49, 0xc0, 0xe3, 0x16,
969 },
970 .destination_private_key = &.{
971 0x08, 0x72, 0xe9, 0xdf, 0xd8, 0x6b, 0x82, 0xfc, 0xc5, 0x2d, 0x1a, 0x61,
972 0xf8, 0x7d, 0x72, 0x6e, 0x5a, 0x19, 0x3c, 0xfc, 0xc6, 0xab, 0x3b, 0x26,
973 0x25, 0xa6, 0x8c, 0xe2, 0xe9, 0x15, 0x15, 0x48, 0x54, 0x0a, 0xc4, 0xa5,
974 0x8a, 0xc0, 0x1c, 0x61, 0x8e, 0xed, 0x0a, 0x8a, 0xe3, 0xe3, 0xf7, 0x1a,
975 0xa5, 0xfb, 0xf0, 0x0e, 0xb1, 0x17, 0x19, 0x25, 0x7c, 0x4f, 0xe7, 0x0c,
976 0xf3, 0xdc, 0xaf, 0xcd,
977 },
978 .destination_name_hash = &.{
979 0xd6, 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e, 0x66,
980 },
981 .destination_app_data = &.{},
982 .announce_random_hash = &.{
983 0x02, 0x7f, 0x7a, 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00,
984 },
985 .initiator_identity_hash = &.{
986 0x1c, 0x1d, 0x4c, 0xee, 0xca, 0xba, 0x5e, 0xcd, 0x83, 0x3e, 0x99, 0xab,
987 0xe6, 0x93, 0x37, 0x0a,
988 },
989 .transport_identity_hash = &.{
990 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78, 0xb0, 0x93,
991 0xe6, 0x08, 0x9c, 0x3e,
992 },
993 .responder_identity_hash = &.{
994 0x24, 0x68, 0x47, 0x44, 0x49, 0x0e, 0xe7, 0x6f, 0x39, 0x1a, 0x17, 0x06,
995 0xe3, 0xb5, 0x6d, 0x1a,
996 },
997 .rebroadcast_clock = 1700000001,
998 .rebroadcast_raw = &.{
999 0x51, 0x01, 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78,
1000 0xb0, 0x93, 0xe6, 0x08, 0x9c, 0x3e, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10,
1001 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x3c,
1002 0x16, 0xa4, 0x7b, 0xc3, 0xcd, 0x38, 0x94, 0xbf, 0xe9, 0xa6, 0x7a, 0xb5,
1003 0xe7, 0x2c, 0xb9, 0x96, 0x4a, 0x9d, 0x6b, 0x71, 0x6c, 0x74, 0x3a, 0x4a,
1004 0x20, 0xb1, 0x2a, 0x7f, 0x9f, 0xe5, 0x12, 0x61, 0xb9, 0xf0, 0xd6, 0xdd,
1005 0x9e, 0xa1, 0x35, 0xf4, 0x71, 0xf8, 0x32, 0xae, 0x69, 0xe1, 0x67, 0xe7,
1006 0x8a, 0x20, 0x46, 0xa0, 0x23, 0x8a, 0x2a, 0x6a, 0x90, 0x98, 0x89, 0xc9,
1007 0x57, 0x9a, 0x04, 0xd6, 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e,
1008 0x66, 0x02, 0x7f, 0x7a, 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00, 0x0c,
1009 0xd8, 0xa7, 0xb0, 0xee, 0x50, 0x27, 0xdf, 0x23, 0x06, 0x18, 0x66, 0xfd,
1010 0xad, 0x0d, 0xc8, 0xd1, 0x9b, 0x9f, 0x60, 0xd1, 0xeb, 0x6d, 0x56, 0xd1,
1011 0x5d, 0x3f, 0xcc, 0x7b, 0xc8, 0x2a, 0xd4, 0xe2, 0x9c, 0x62, 0x9f, 0x5f,
1012 0xae, 0x98, 0x3d, 0x74, 0x57, 0x29, 0x3e, 0xe6, 0xcb, 0x07, 0x40, 0xc2,
1013 0x38, 0x3d, 0xb1, 0x2a, 0xcf, 0x1d, 0x7c, 0xc6, 0x33, 0xe5, 0x7d, 0xfa,
1014 0xcb, 0x06, 0x0f,
1015 },
1016 .retry_clock = 1700000007,
1017 .retry_raw = &.{
1018 0x51, 0x01, 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78,
1019 0xb0, 0x93, 0xe6, 0x08, 0x9c, 0x3e, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10,
1020 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x3c,
1021 0x16, 0xa4, 0x7b, 0xc3, 0xcd, 0x38, 0x94, 0xbf, 0xe9, 0xa6, 0x7a, 0xb5,
1022 0xe7, 0x2c, 0xb9, 0x96, 0x4a, 0x9d, 0x6b, 0x71, 0x6c, 0x74, 0x3a, 0x4a,
1023 0x20, 0xb1, 0x2a, 0x7f, 0x9f, 0xe5, 0x12, 0x61, 0xb9, 0xf0, 0xd6, 0xdd,
1024 0x9e, 0xa1, 0x35, 0xf4, 0x71, 0xf8, 0x32, 0xae, 0x69, 0xe1, 0x67, 0xe7,
1025 0x8a, 0x20, 0x46, 0xa0, 0x23, 0x8a, 0x2a, 0x6a, 0x90, 0x98, 0x89, 0xc9,
1026 0x57, 0x9a, 0x04, 0xd6, 0x1e, 0x4a, 0x0a, 0x55, 0x70, 0xf8, 0x77, 0x1e,
1027 0x66, 0x02, 0x7f, 0x7a, 0x3f, 0x92, 0x00, 0x65, 0x53, 0xf1, 0x00, 0x0c,
1028 0xd8, 0xa7, 0xb0, 0xee, 0x50, 0x27, 0xdf, 0x23, 0x06, 0x18, 0x66, 0xfd,
1029 0xad, 0x0d, 0xc8, 0xd1, 0x9b, 0x9f, 0x60, 0xd1, 0xeb, 0x6d, 0x56, 0xd1,
1030 0x5d, 0x3f, 0xcc, 0x7b, 0xc8, 0x2a, 0xd4, 0xe2, 0x9c, 0x62, 0x9f, 0x5f,
1031 0xae, 0x98, 0x3d, 0x74, 0x57, 0x29, 0x3e, 0xe6, 0xcb, 0x07, 0x40, 0xc2,
1032 0x38, 0x3d, 0xb1, 0x2a, 0xcf, 0x1d, 0x7c, 0xc6, 0x33, 0xe5, 0x7d, 0xfa,
1033 0xcb, 0x06, 0x0f,
1034 },
1035 .request_clock = 1700000020,
1036 .link_id = &.{
1037 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78, 0x65, 0x4a,
1038 0x15, 0x78, 0x2f, 0x38,
1039 },
1040 .initiator_encryption_private_key = &.{
1041 0x9d, 0x11, 0x48, 0x0a, 0x52, 0xa6, 0x0b, 0x08, 0x24, 0xaa, 0x00, 0xfa,
1042 0x63, 0x0c, 0x23, 0x94, 0x17, 0x75, 0xaa, 0x23, 0xec, 0xc5, 0x88, 0xa7,
1043 0xe7, 0xd4, 0x59, 0x6b, 0x35, 0xf9, 0xd5, 0x85,
1044 },
1045 .initiator_signing_private_key = &.{
1046 0x4a, 0x9a, 0xea, 0x3c, 0x71, 0x20, 0xde, 0x0c, 0x5f, 0xb7, 0x5a, 0x86,
1047 0x30, 0x92, 0x6a, 0x45, 0xef, 0x9f, 0xef, 0xce, 0xf2, 0x44, 0x07, 0x13,
1048 0x0e, 0x68, 0x16, 0x13, 0x2f, 0x35, 0x1f, 0xec,
1049 },
1050 .request_raw = &.{
1051 0x52, 0x00, 0xf8, 0x58, 0x2f, 0x60, 0xf4, 0xc7, 0xd1, 0x6f, 0x6c, 0x78,
1052 0xb0, 0x93, 0xe6, 0x08, 0x9c, 0x3e, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10,
1053 0x0a, 0x6b, 0x11, 0x9e, 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x67,
1054 0x91, 0xfa, 0xa6, 0x25, 0x13, 0x90, 0x1c, 0xc6, 0xdc, 0x37, 0xff, 0x5e,
1055 0x0d, 0xac, 0x65, 0x94, 0x87, 0x03, 0xc2, 0x20, 0x2f, 0x9e, 0x4f, 0x34,
1056 0x51, 0x52, 0x20, 0x00, 0x89, 0x88, 0x2c, 0x97, 0x3d, 0xf0, 0x7e, 0x19,
1057 0x59, 0x7f, 0x8f, 0x1a, 0x7e, 0x8b, 0xc1, 0x68, 0xf9, 0xc4, 0x31, 0x6e,
1058 0x28, 0xd7, 0x83, 0x9c, 0x39, 0xd3, 0xca, 0xa6, 0xc7, 0xea, 0x68, 0xba,
1059 0xff, 0x3f, 0xac, 0x20, 0x01, 0xf4,
1060 },
1061 .stripped_raw = &.{
1062 0x02, 0x01, 0xbc, 0xdf, 0x15, 0x62, 0x79, 0x10, 0x0a, 0x6b, 0x11, 0x9e,
1063 0x02, 0xd8, 0x49, 0xc0, 0xe3, 0x16, 0x00, 0x67, 0x91, 0xfa, 0xa6, 0x25,
1064 0x13, 0x90, 0x1c, 0xc6, 0xdc, 0x37, 0xff, 0x5e, 0x0d, 0xac, 0x65, 0x94,
1065 0x87, 0x03, 0xc2, 0x20, 0x2f, 0x9e, 0x4f, 0x34, 0x51, 0x52, 0x20, 0x00,
1066 0x89, 0x88, 0x2c, 0x97, 0x3d, 0xf0, 0x7e, 0x19, 0x59, 0x7f, 0x8f, 0x1a,
1067 0x7e, 0x8b, 0xc1, 0x68, 0xf9, 0xc4, 0x31, 0x6e, 0x28, 0xd7, 0x83, 0x9c,
1068 0x39, 0xd3, 0xca, 0xa6, 0xc7, 0xea, 0x68, 0xba, 0xff, 0x3f, 0xac,
1069 },
1070 .responder_entropy = &.{
1071 0xc0, 0xdc, 0xe3, 0x29, 0x7c, 0x32, 0xe5, 0x04, 0x16, 0x67, 0xbf, 0x74,
1072 0xe0, 0xf1, 0x94, 0x62, 0xc0, 0xdb, 0xbb, 0x13, 0xcd, 0x57, 0x01, 0x92,
1073 0x72, 0x54, 0x92, 0x97, 0x49, 0x47, 0x18, 0xb6,
1074 },
1075 .responder_encryption_private_key = &.{
1076 0xb2, 0x7f, 0x47, 0x0f, 0x62, 0x75, 0x92, 0xb2, 0xe1, 0x95, 0x9b, 0x95,
1077 0xd7, 0x81, 0xac, 0xe5, 0x17, 0x0b, 0xa5, 0xb0, 0xc3, 0x5a, 0x25, 0xe4,
1078 0xd8, 0xb3, 0xd9, 0xf7, 0x2e, 0x08, 0x9e, 0x99,
1079 },
1080 .proof_raw = &.{
1081 0x0f, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1082 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xff, 0x08, 0x5c, 0x15, 0x4c, 0x75,
1083 0xe1, 0x17, 0x2e, 0xe6, 0x29, 0xa5, 0xe1, 0xfb, 0x44, 0x1c, 0x21, 0x85,
1084 0x90, 0x23, 0x35, 0x32, 0x90, 0xb0, 0x17, 0xbb, 0x9e, 0xe2, 0xaa, 0xd2,
1085 0xdd, 0xb8, 0x1d, 0xbb, 0x8c, 0x12, 0xb3, 0x33, 0x08, 0x8a, 0x27, 0xb7,
1086 0xda, 0xde, 0x2e, 0x0d, 0xe0, 0x90, 0x80, 0x00, 0x7c, 0x9d, 0x8e, 0xc1,
1087 0x2f, 0xa3, 0x30, 0xbd, 0xa0, 0x5b, 0x2c, 0xe5, 0x09, 0xc7, 0x0d, 0x24,
1088 0x68, 0xd8, 0x8b, 0x0e, 0x4a, 0x63, 0xd1, 0x9e, 0x97, 0x53, 0x05, 0xd7,
1089 0x34, 0xdf, 0xb5, 0x9e, 0x76, 0xc7, 0xd0, 0x55, 0xa0, 0xfd, 0xc0, 0xbe,
1090 0xe8, 0x49, 0xd3, 0x05, 0x19, 0xbf, 0x76, 0x20, 0x01, 0xf4,
1091 },
1092 .relayed_proof_raw = &.{
1093 0x0f, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1094 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xff, 0x08, 0x5c, 0x15, 0x4c, 0x75,
1095 0xe1, 0x17, 0x2e, 0xe6, 0x29, 0xa5, 0xe1, 0xfb, 0x44, 0x1c, 0x21, 0x85,
1096 0x90, 0x23, 0x35, 0x32, 0x90, 0xb0, 0x17, 0xbb, 0x9e, 0xe2, 0xaa, 0xd2,
1097 0xdd, 0xb8, 0x1d, 0xbb, 0x8c, 0x12, 0xb3, 0x33, 0x08, 0x8a, 0x27, 0xb7,
1098 0xda, 0xde, 0x2e, 0x0d, 0xe0, 0x90, 0x80, 0x00, 0x7c, 0x9d, 0x8e, 0xc1,
1099 0x2f, 0xa3, 0x30, 0xbd, 0xa0, 0x5b, 0x2c, 0xe5, 0x09, 0xc7, 0x0d, 0x24,
1100 0x68, 0xd8, 0x8b, 0x0e, 0x4a, 0x63, 0xd1, 0x9e, 0x97, 0x53, 0x05, 0xd7,
1101 0x34, 0xdf, 0xb5, 0x9e, 0x76, 0xc7, 0xd0, 0x55, 0xa0, 0xfd, 0xc0, 0xbe,
1102 0xe8, 0x49, 0xd3, 0x05, 0x19, 0xbf, 0x76, 0x20, 0x01, 0xf4,
1103 },
1104 .proof_clock = 1700000021,
1105 .rtt_entropy = &.{
1106 0x89, 0x8a, 0x14, 0xcc, 0xde, 0xc1, 0xb7, 0x72, 0xf1, 0x28, 0x65, 0xb0,
1107 0xae, 0x6e, 0xff, 0xfb, 0xb8, 0xf7, 0x0c, 0x92, 0xbc, 0x7f, 0xc2, 0x9d,
1108 0xbe, 0x44, 0xf9, 0xed, 0xad, 0x34, 0x56, 0x6c,
1109 },
1110 .rtt_iv = &.{
1111 0x27, 0x6c, 0x44, 0xc7, 0x93, 0xb0, 0xf2, 0x13, 0x69, 0x27, 0x53, 0xf5,
1112 0x5b, 0x41, 0xc0, 0xea,
1113 },
1114 .rtt_plaintext = &.{
1115 0xcb, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1116 },
1117 .rtt_raw = &.{
1118 0x0c, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1119 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xfe, 0x27, 0x6c, 0x44, 0xc7, 0x93,
1120 0xb0, 0xf2, 0x13, 0x69, 0x27, 0x53, 0xf5, 0x5b, 0x41, 0xc0, 0xea, 0x42,
1121 0x35, 0x05, 0x82, 0x42, 0x45, 0x84, 0xb2, 0x34, 0x9c, 0x53, 0xe6, 0xeb,
1122 0xf8, 0x71, 0xc2, 0x0b, 0x82, 0x49, 0xc3, 0xf4, 0x85, 0xae, 0xf2, 0xc4,
1123 0xbc, 0x63, 0xd4, 0x0e, 0x82, 0x0f, 0x46, 0x8c, 0xe9, 0xf9, 0xfa, 0x72,
1124 0x31, 0xfd, 0xee, 0xe3, 0xe7, 0x1d, 0x40, 0x93, 0x44, 0x0b, 0x23,
1125 },
1126 .relayed_rtt_raw = &.{
1127 0x0c, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1128 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xfe, 0x27, 0x6c, 0x44, 0xc7, 0x93,
1129 0xb0, 0xf2, 0x13, 0x69, 0x27, 0x53, 0xf5, 0x5b, 0x41, 0xc0, 0xea, 0x42,
1130 0x35, 0x05, 0x82, 0x42, 0x45, 0x84, 0xb2, 0x34, 0x9c, 0x53, 0xe6, 0xeb,
1131 0xf8, 0x71, 0xc2, 0x0b, 0x82, 0x49, 0xc3, 0xf4, 0x85, 0xae, 0xf2, 0xc4,
1132 0xbc, 0x63, 0xd4, 0x0e, 0x82, 0x0f, 0x46, 0x8c, 0xe9, 0xf9, 0xfa, 0x72,
1133 0x31, 0xfd, 0xee, 0xe3, 0xe7, 0x1d, 0x40, 0x93, 0x44, 0x0b, 0x23,
1134 },
1135 .data_clock = 1700000022,
1136 .data_iv = &.{
1137 0xdc, 0x32, 0x77, 0xd9, 0xa9, 0xa2, 0x2b, 0x4d, 0x58, 0x77, 0x9c, 0xa6,
1138 0xfa, 0x23, 0xba, 0xe9,
1139 },
1140 .data_plaintext = &.{
1141 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x64, 0x61, 0x74, 0x61,
1142 },
1143 .data_raw = &.{
1144 0x0c, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1145 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0xdc, 0x32, 0x77, 0xd9, 0xa9,
1146 0xa2, 0x2b, 0x4d, 0x58, 0x77, 0x9c, 0xa6, 0xfa, 0x23, 0xba, 0xe9, 0x30,
1147 0xf1, 0xdd, 0x64, 0x73, 0x50, 0x1f, 0x95, 0x1e, 0x7b, 0x47, 0x1f, 0x39,
1148 0x5d, 0x4f, 0x8d, 0x03, 0x6e, 0x03, 0x37, 0x61, 0x10, 0x29, 0x22, 0x98,
1149 0xc3, 0x82, 0xb9, 0x2c, 0x9b, 0x72, 0x53, 0x3e, 0x4f, 0xf2, 0x12, 0x71,
1150 0x15, 0xa0, 0x56, 0x49, 0x15, 0xa0, 0x11, 0x8b, 0xdb, 0xdf, 0xc8,
1151 },
1152 .relayed_data_raw = &.{
1153 0x0c, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1154 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0xdc, 0x32, 0x77, 0xd9, 0xa9,
1155 0xa2, 0x2b, 0x4d, 0x58, 0x77, 0x9c, 0xa6, 0xfa, 0x23, 0xba, 0xe9, 0x30,
1156 0xf1, 0xdd, 0x64, 0x73, 0x50, 0x1f, 0x95, 0x1e, 0x7b, 0x47, 0x1f, 0x39,
1157 0x5d, 0x4f, 0x8d, 0x03, 0x6e, 0x03, 0x37, 0x61, 0x10, 0x29, 0x22, 0x98,
1158 0xc3, 0x82, 0xb9, 0x2c, 0x9b, 0x72, 0x53, 0x3e, 0x4f, 0xf2, 0x12, 0x71,
1159 0x15, 0xa0, 0x56, 0x49, 0x15, 0xa0, 0x11, 0x8b, 0xdb, 0xdf, 0xc8,
1160 },
1161 .data_proof_raw = &.{
1162 0x0f, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1163 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0xea, 0x3f, 0x88, 0x00, 0xb4,
1164 0x27, 0x4c, 0xa5, 0x68, 0x7e, 0x28, 0xc7, 0x38, 0x57, 0x0d, 0xa8, 0xf3,
1165 0xc4, 0x99, 0x22, 0x72, 0x9d, 0xe3, 0xa2, 0xca, 0x9b, 0xef, 0xc4, 0x2c,
1166 0x79, 0xc7, 0x43, 0x9b, 0x62, 0xc5, 0x14, 0x1b, 0xf9, 0x4c, 0xd3, 0xa1,
1167 0x63, 0x81, 0x34, 0x29, 0xe2, 0x47, 0xe7, 0xde, 0xa9, 0x63, 0x20, 0xca,
1168 0x7d, 0x8d, 0xea, 0x73, 0x8c, 0x0a, 0x94, 0x5e, 0xea, 0x1d, 0x2d, 0x06,
1169 0x5b, 0x1f, 0x28, 0x49, 0xa3, 0x8f, 0x0d, 0x87, 0x35, 0x6b, 0xce, 0xc5,
1170 0xea, 0xec, 0xdc, 0xa0, 0xdf, 0x60, 0xa0, 0xc3, 0xca, 0xa2, 0xf8, 0xf4,
1171 0xe3, 0xf2, 0x63, 0xf4, 0x33, 0xf2, 0x03,
1172 },
1173 .relayed_data_proof_raw = &.{
1174 0x0f, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1175 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0xea, 0x3f, 0x88, 0x00, 0xb4,
1176 0x27, 0x4c, 0xa5, 0x68, 0x7e, 0x28, 0xc7, 0x38, 0x57, 0x0d, 0xa8, 0xf3,
1177 0xc4, 0x99, 0x22, 0x72, 0x9d, 0xe3, 0xa2, 0xca, 0x9b, 0xef, 0xc4, 0x2c,
1178 0x79, 0xc7, 0x43, 0x9b, 0x62, 0xc5, 0x14, 0x1b, 0xf9, 0x4c, 0xd3, 0xa1,
1179 0x63, 0x81, 0x34, 0x29, 0xe2, 0x47, 0xe7, 0xde, 0xa9, 0x63, 0x20, 0xca,
1180 0x7d, 0x8d, 0xea, 0x73, 0x8c, 0x0a, 0x94, 0x5e, 0xea, 0x1d, 0x2d, 0x06,
1181 0x5b, 0x1f, 0x28, 0x49, 0xa3, 0x8f, 0x0d, 0x87, 0x35, 0x6b, 0xce, 0xc5,
1182 0xea, 0xec, 0xdc, 0xa0, 0xdf, 0x60, 0xa0, 0xc3, 0xca, 0xa2, 0xf8, 0xf4,
1183 0xe3, 0xf2, 0x63, 0xf4, 0x33, 0xf2, 0x03,
1184 },
1185 .answer_clock = 1700000023,
1186 .answer_iv = &.{
1187 0xf8, 0x46, 0xc7, 0x9a, 0xb6, 0x09, 0x88, 0x31, 0x79, 0x07, 0xca, 0x1f,
1188 0xff, 0xdf, 0xda, 0x36,
1189 },
1190 .answer_plaintext = &.{
1191 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72,
1192 },
1193 .answer_raw = &.{
1194 0x0c, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1195 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0xf8, 0x46, 0xc7, 0x9a, 0xb6,
1196 0x09, 0x88, 0x31, 0x79, 0x07, 0xca, 0x1f, 0xff, 0xdf, 0xda, 0x36, 0xa8,
1197 0x28, 0x46, 0xf1, 0x64, 0x14, 0x5f, 0x0e, 0xcd, 0x7f, 0x7e, 0xda, 0xa1,
1198 0x28, 0x83, 0x67, 0x67, 0x01, 0x76, 0x5f, 0x53, 0x61, 0xaa, 0x85, 0x00,
1199 0x10, 0xe6, 0xd5, 0xec, 0x04, 0xa2, 0x4e, 0x0e, 0xa0, 0xfb, 0x48, 0x3e,
1200 0xa7, 0x25, 0xe0, 0xe8, 0x75, 0xc9, 0x0e, 0xa3, 0x67, 0x80, 0x26,
1201 },
1202 .relayed_answer_raw = &.{
1203 0x0c, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1204 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0xf8, 0x46, 0xc7, 0x9a, 0xb6,
1205 0x09, 0x88, 0x31, 0x79, 0x07, 0xca, 0x1f, 0xff, 0xdf, 0xda, 0x36, 0xa8,
1206 0x28, 0x46, 0xf1, 0x64, 0x14, 0x5f, 0x0e, 0xcd, 0x7f, 0x7e, 0xda, 0xa1,
1207 0x28, 0x83, 0x67, 0x67, 0x01, 0x76, 0x5f, 0x53, 0x61, 0xaa, 0x85, 0x00,
1208 0x10, 0xe6, 0xd5, 0xec, 0x04, 0xa2, 0x4e, 0x0e, 0xa0, 0xfb, 0x48, 0x3e,
1209 0xa7, 0x25, 0xe0, 0xe8, 0x75, 0xc9, 0x0e, 0xa3, 0x67, 0x80, 0x26,
1210 },
1211 .answer_proof_raw = &.{
1212 0x0f, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1213 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0x16, 0x5a, 0x63, 0xac, 0xdc,
1214 0x94, 0xb7, 0x3a, 0xb6, 0x95, 0xa6, 0xab, 0xb7, 0x05, 0xf7, 0x9b, 0x3b,
1215 0x78, 0xe5, 0x7f, 0x40, 0xb8, 0xec, 0xaa, 0x7a, 0x8a, 0xb1, 0xed, 0x06,
1216 0x21, 0x47, 0x03, 0x71, 0xa1, 0x0b, 0xa9, 0x64, 0x7d, 0x35, 0x75, 0x91,
1217 0xc0, 0xb3, 0x5b, 0x36, 0xef, 0x41, 0x17, 0x71, 0xfb, 0x7b, 0x3f, 0xdf,
1218 0x4f, 0x36, 0x29, 0xd0, 0x53, 0xce, 0xd2, 0x22, 0x5c, 0xc9, 0xfb, 0xb6,
1219 0x74, 0xb9, 0x13, 0x54, 0x62, 0x15, 0x85, 0xc9, 0x47, 0x56, 0x3b, 0x7f,
1220 0x62, 0x74, 0x2d, 0xa5, 0x06, 0x53, 0xc0, 0x89, 0x10, 0xac, 0x40, 0xb6,
1221 0x85, 0xfc, 0x37, 0x23, 0x4f, 0xa5, 0x0c,
1222 },
1223 .relayed_answer_proof_raw = &.{
1224 0x0f, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1225 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0x00, 0x16, 0x5a, 0x63, 0xac, 0xdc,
1226 0x94, 0xb7, 0x3a, 0xb6, 0x95, 0xa6, 0xab, 0xb7, 0x05, 0xf7, 0x9b, 0x3b,
1227 0x78, 0xe5, 0x7f, 0x40, 0xb8, 0xec, 0xaa, 0x7a, 0x8a, 0xb1, 0xed, 0x06,
1228 0x21, 0x47, 0x03, 0x71, 0xa1, 0x0b, 0xa9, 0x64, 0x7d, 0x35, 0x75, 0x91,
1229 0xc0, 0xb3, 0x5b, 0x36, 0xef, 0x41, 0x17, 0x71, 0xfb, 0x7b, 0x3f, 0xdf,
1230 0x4f, 0x36, 0x29, 0xd0, 0x53, 0xce, 0xd2, 0x22, 0x5c, 0xc9, 0xfb, 0xb6,
1231 0x74, 0xb9, 0x13, 0x54, 0x62, 0x15, 0x85, 0xc9, 0x47, 0x56, 0x3b, 0x7f,
1232 0x62, 0x74, 0x2d, 0xa5, 0x06, 0x53, 0xc0, 0x89, 0x10, 0xac, 0x40, 0xb6,
1233 0x85, 0xfc, 0x37, 0x23, 0x4f, 0xa5, 0x0c,
1234 },
1235 .keepalive_clock = 1700000229,
1236 .keepalive_raw = &.{
1237 0x0c, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1238 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xfa, 0xff,
1239 },
1240 .relayed_keepalive_raw = &.{
1241 0x0c, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1242 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xfa, 0xff,
1243 },
1244 .keepalive_answer_raw = &.{
1245 0x0c, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1246 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xfa, 0xfe,
1247 },
1248 .relayed_keepalive_answer_raw = &.{
1249 0x0c, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1250 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xfa, 0xfe,
1251 },
1252 .close_clock = 1700000230,
1253 .close_iv = &.{
1254 0x4c, 0x58, 0x2e, 0xa2, 0x08, 0xe5, 0xf1, 0xd5, 0xa9, 0x83, 0x6b, 0x31,
1255 0x4f, 0xa3, 0xaf, 0x01,
1256 },
1257 .close_raw = &.{
1258 0x0c, 0x00, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1259 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xfc, 0x4c, 0x58, 0x2e, 0xa2, 0x08,
1260 0xe5, 0xf1, 0xd5, 0xa9, 0x83, 0x6b, 0x31, 0x4f, 0xa3, 0xaf, 0x01, 0x1d,
1261 0x5b, 0xcd, 0xa3, 0xe8, 0xe8, 0xb7, 0x5e, 0x5d, 0x70, 0x99, 0x38, 0x1c,
1262 0x71, 0x1b, 0xff, 0xed, 0x8b, 0x49, 0xf7, 0xc3, 0x44, 0xfc, 0x0c, 0x4e,
1263 0x96, 0x7f, 0x86, 0x37, 0x8a, 0x41, 0xf5, 0x64, 0x5f, 0x92, 0xea, 0xaf,
1264 0xc5, 0x2a, 0x45, 0xe8, 0xa1, 0x8c, 0xd3, 0x76, 0x23, 0xcd, 0x17, 0xdf,
1265 0x47, 0xda, 0x0a, 0xce, 0x99, 0xe2, 0xe3, 0x83, 0x8a, 0xf7, 0x34, 0x71,
1266 0x35, 0x1e, 0xf0,
1267 },
1268 .relayed_close_raw = &.{
1269 0x0c, 0x01, 0xec, 0x81, 0xd4, 0x5c, 0xc2, 0x89, 0xcd, 0xba, 0xc3, 0x78,
1270 0x65, 0x4a, 0x15, 0x78, 0x2f, 0x38, 0xfc, 0x4c, 0x58, 0x2e, 0xa2, 0x08,
1271 0xe5, 0xf1, 0xd5, 0xa9, 0x83, 0x6b, 0x31, 0x4f, 0xa3, 0xaf, 0x01, 0x1d,
1272 0x5b, 0xcd, 0xa3, 0xe8, 0xe8, 0xb7, 0x5e, 0x5d, 0x70, 0x99, 0x38, 0x1c,
1273 0x71, 0x1b, 0xff, 0xed, 0x8b, 0x49, 0xf7, 0xc3, 0x44, 0xfc, 0x0c, 0x4e,
1274 0x96, 0x7f, 0x86, 0x37, 0x8a, 0x41, 0xf5, 0x64, 0x5f, 0x92, 0xea, 0xaf,
1275 0xc5, 0x2a, 0x45, 0xe8, 0xa1, 0x8c, 0xd3, 0x76, 0x23, 0xcd, 0x17, 0xdf,
1276 0x47, 0xda, 0x0a, 0xce, 0x99, 0xe2, 0xe3, 0x83, 0x8a, 0xf7, 0x34, 0x71,
1277 0x35, 0x1e, 0xf0,
1278 },
1279 },
1280 };