@acpantenna/relay-protocol 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +54 -2
  3. package/dist/bip39-english.d.ts +28 -0
  4. package/dist/bip39-english.d.ts.map +1 -0
  5. package/dist/bip39-english.js +28 -0
  6. package/dist/bip39-english.js.map +1 -0
  7. package/dist/bytes.d.ts +21 -0
  8. package/dist/bytes.d.ts.map +1 -0
  9. package/dist/bytes.js +114 -0
  10. package/dist/bytes.js.map +1 -0
  11. package/dist/frames.d.ts +90 -0
  12. package/dist/frames.d.ts.map +1 -0
  13. package/dist/frames.js +234 -0
  14. package/dist/frames.js.map +1 -0
  15. package/dist/index.d.ts +14 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +14 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/link.d.ts +44 -0
  20. package/dist/link.d.ts.map +1 -0
  21. package/dist/link.js +120 -0
  22. package/dist/link.js.map +1 -0
  23. package/dist/noise.d.ts +181 -0
  24. package/dist/noise.d.ts.map +1 -0
  25. package/dist/noise.js +490 -0
  26. package/dist/noise.js.map +1 -0
  27. package/dist/relay.d.ts +37 -0
  28. package/dist/relay.d.ts.map +1 -0
  29. package/dist/relay.js +70 -0
  30. package/dist/relay.js.map +1 -0
  31. package/dist/sas.d.ts +11 -0
  32. package/dist/sas.d.ts.map +1 -0
  33. package/dist/sas.js +26 -0
  34. package/dist/sas.js.map +1 -0
  35. package/dist/session.d.ts +298 -0
  36. package/dist/session.d.ts.map +1 -0
  37. package/dist/session.js +608 -0
  38. package/dist/session.js.map +1 -0
  39. package/package.json +56 -5
  40. package/src/bip39-english.ts +30 -0
  41. package/src/bytes.ts +125 -0
  42. package/src/frames.ts +278 -0
  43. package/src/index.ts +14 -0
  44. package/src/link.ts +160 -0
  45. package/src/noise.ts +655 -0
  46. package/src/relay.ts +106 -0
  47. package/src/sas.ts +28 -0
  48. package/src/session.ts +848 -0
  49. package/test-vectors/frames.json +353 -0
  50. package/test-vectors/noise-kk.json +43 -0
  51. package/test-vectors/noise-nkpsk0.json +47 -0
  52. package/test-vectors/sas.json +21 -0
  53. package/test-vectors/session.json +58 -0
@@ -0,0 +1,353 @@
1
+ {
2
+ "description": "Frame plaintexts (before encryption). `valid` round-trips; `invalid` must be refused; `buckets` maps an unpadded length to its padded length; `chunking` gives the frames of one long message, whose bytes are i mod 251; `streams` are frame sequences a receiver must accept or refuse.",
3
+ "valid": [
4
+ {
5
+ "description": "ACP, one chunk",
6
+ "frame": {
7
+ "type": 1,
8
+ "stream": 1,
9
+ "seq": 0,
10
+ "final": true,
11
+ "payload": "7b226a736f6e727063223a22322e30222c226964223a312c226d6574686f64223a22696e697469616c697a65222c22706172616d73223a7b2270726f746f636f6c56657273696f6e223a317d7d"
12
+ },
13
+ "plaintext": "010000000100000000010000004d7b226a736f6e727063223a22322e30222c226964223a312c226d6574686f64223a22696e697469616c697a65222c22706172616d73223a7b2270726f746f636f6c56657273696f6e223a317d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
14
+ },
15
+ {
16
+ "description": "ACP, 300 bytes: the 512 bucket",
17
+ "frame": {
18
+ "type": 1,
19
+ "stream": 7,
20
+ "seq": 2,
21
+ "final": false,
22
+ "payload": "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30"
23
+ },
24
+ "plaintext": "010000000700000002000000012c000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
25
+ },
26
+ {
27
+ "description": "ACP, empty",
28
+ "frame": {
29
+ "type": 1,
30
+ "stream": 2,
31
+ "seq": 0,
32
+ "final": true,
33
+ "payload": ""
34
+ },
35
+ "plaintext": "01000000020000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
36
+ },
37
+ {
38
+ "description": "CLOSE with a reason",
39
+ "frame": {
40
+ "type": 2,
41
+ "stream": 0,
42
+ "seq": 0,
43
+ "final": true,
44
+ "payload": "627965"
45
+ },
46
+ "plaintext": "02000000000000000001000000036279650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
47
+ },
48
+ {
49
+ "description": "PING",
50
+ "frame": {
51
+ "type": 3,
52
+ "stream": 0,
53
+ "seq": 0,
54
+ "final": true,
55
+ "payload": "01020304"
56
+ },
57
+ "plaintext": "03000000000000000001000000040102030400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
58
+ },
59
+ {
60
+ "description": "PONG",
61
+ "frame": {
62
+ "type": 4,
63
+ "stream": 0,
64
+ "seq": 0,
65
+ "final": true,
66
+ "payload": "01020304"
67
+ },
68
+ "plaintext": "04000000000000000001000000040102030400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
69
+ },
70
+ {
71
+ "description": "CONFIRMED",
72
+ "frame": {
73
+ "type": 5,
74
+ "stream": 0,
75
+ "seq": 0,
76
+ "final": true,
77
+ "payload": ""
78
+ },
79
+ "plaintext": "05000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
80
+ },
81
+ {
82
+ "description": "CONFIRMED of a reconnect, resuming after stream 7",
83
+ "frame": {
84
+ "type": 5,
85
+ "stream": 0,
86
+ "seq": 0,
87
+ "final": true,
88
+ "payload": "00000007"
89
+ },
90
+ "plaintext": "05000000000000000001000000040000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
91
+ },
92
+ {
93
+ "description": "REMEMBER",
94
+ "frame": {
95
+ "type": 6,
96
+ "stream": 0,
97
+ "seq": 0,
98
+ "final": true,
99
+ "payload": "41414543417751464267634943516f4c4441304f4478415245684d554652595847426b6147787764486838"
100
+ },
101
+ "plaintext": "060000000000000000010000002b41414543417751464267634943516f4c4441304f4478415245684d554652595847426b614778776448683800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
102
+ }
103
+ ],
104
+ "invalid": [
105
+ {
106
+ "description": "unknown type",
107
+ "plaintext": "07000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
108
+ },
109
+ {
110
+ "description": "unknown flag",
111
+ "plaintext": "01000000010000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
112
+ },
113
+ {
114
+ "description": "length past the end",
115
+ "plaintext": "01000000010000000001000000f30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
116
+ },
117
+ {
118
+ "description": "not padded to its bucket",
119
+ "plaintext": "0100000001000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
120
+ },
121
+ {
122
+ "description": "shorter than the smallest bucket",
123
+ "plaintext": "0100000001000000000100000000"
124
+ },
125
+ {
126
+ "description": "non-zero padding",
127
+ "plaintext": "01000000010000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"
128
+ },
129
+ {
130
+ "description": "control frame with a stream",
131
+ "plaintext": "03000000010000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
132
+ },
133
+ {
134
+ "description": "control frame without FINAL",
135
+ "plaintext": "03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
136
+ },
137
+ {
138
+ "description": "ACP on stream 0",
139
+ "plaintext": "01000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
140
+ },
141
+ {
142
+ "description": "CONFIRMED with a payload that is not a u32",
143
+ "plaintext": "05000000000000000001000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
144
+ },
145
+ {
146
+ "description": "REMEMBER with a short key",
147
+ "plaintext": "060000000000000000010000002a41414543417751464267634943516f4c4441304f4478415245684d554652595847426b614778776448680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
148
+ }
149
+ ],
150
+ "buckets": [
151
+ {
152
+ "length": 0,
153
+ "padded": 256
154
+ },
155
+ {
156
+ "length": 14,
157
+ "padded": 256
158
+ },
159
+ {
160
+ "length": 256,
161
+ "padded": 256
162
+ },
163
+ {
164
+ "length": 257,
165
+ "padded": 512
166
+ },
167
+ {
168
+ "length": 512,
169
+ "padded": 512
170
+ },
171
+ {
172
+ "length": 513,
173
+ "padded": 1024
174
+ },
175
+ {
176
+ "length": 4000,
177
+ "padded": 4096
178
+ },
179
+ {
180
+ "length": 32768,
181
+ "padded": 32768
182
+ },
183
+ {
184
+ "length": 32769,
185
+ "padded": 65519
186
+ },
187
+ {
188
+ "length": 65519,
189
+ "padded": 65519
190
+ }
191
+ ],
192
+ "chunking": {
193
+ "stream": 3,
194
+ "length": 131110,
195
+ "frames": [
196
+ {
197
+ "seq": 0,
198
+ "final": false,
199
+ "payloadLength": 65505,
200
+ "plaintextLength": 65519
201
+ },
202
+ {
203
+ "seq": 1,
204
+ "final": false,
205
+ "payloadLength": 65505,
206
+ "plaintextLength": 65519
207
+ },
208
+ {
209
+ "seq": 2,
210
+ "final": true,
211
+ "payloadLength": 100,
212
+ "plaintextLength": 256
213
+ }
214
+ ]
215
+ },
216
+ "streams": [
217
+ {
218
+ "description": "two messages, the second in two chunks",
219
+ "frames": [
220
+ {
221
+ "stream": 1,
222
+ "seq": 0,
223
+ "final": true
224
+ },
225
+ {
226
+ "stream": 2,
227
+ "seq": 0,
228
+ "final": false
229
+ },
230
+ {
231
+ "stream": 2,
232
+ "seq": 1,
233
+ "final": true
234
+ }
235
+ ],
236
+ "messages": 2
237
+ },
238
+ {
239
+ "description": "first stream is not 1",
240
+ "frames": [
241
+ {
242
+ "stream": 2,
243
+ "seq": 0,
244
+ "final": true
245
+ }
246
+ ],
247
+ "error": true
248
+ },
249
+ {
250
+ "description": "a stream skipped",
251
+ "frames": [
252
+ {
253
+ "stream": 1,
254
+ "seq": 0,
255
+ "final": true
256
+ },
257
+ {
258
+ "stream": 3,
259
+ "seq": 0,
260
+ "final": true
261
+ }
262
+ ],
263
+ "error": true
264
+ },
265
+ {
266
+ "description": "a stream repeated",
267
+ "frames": [
268
+ {
269
+ "stream": 1,
270
+ "seq": 0,
271
+ "final": true
272
+ },
273
+ {
274
+ "stream": 1,
275
+ "seq": 0,
276
+ "final": true
277
+ }
278
+ ],
279
+ "error": true
280
+ },
281
+ {
282
+ "description": "a chunk skipped",
283
+ "frames": [
284
+ {
285
+ "stream": 1,
286
+ "seq": 0,
287
+ "final": false
288
+ },
289
+ {
290
+ "stream": 1,
291
+ "seq": 2,
292
+ "final": true
293
+ }
294
+ ],
295
+ "error": true
296
+ },
297
+ {
298
+ "description": "a chunk repeated",
299
+ "frames": [
300
+ {
301
+ "stream": 1,
302
+ "seq": 0,
303
+ "final": false
304
+ },
305
+ {
306
+ "stream": 1,
307
+ "seq": 0,
308
+ "final": true
309
+ }
310
+ ],
311
+ "error": true
312
+ },
313
+ {
314
+ "description": "streams interleaved",
315
+ "frames": [
316
+ {
317
+ "stream": 1,
318
+ "seq": 0,
319
+ "final": false
320
+ },
321
+ {
322
+ "stream": 2,
323
+ "seq": 0,
324
+ "final": true
325
+ }
326
+ ],
327
+ "error": true
328
+ },
329
+ {
330
+ "description": "first chunk not seq 0",
331
+ "frames": [
332
+ {
333
+ "stream": 1,
334
+ "seq": 1,
335
+ "final": true
336
+ }
337
+ ],
338
+ "error": true
339
+ },
340
+ {
341
+ "description": "CLOSE inside a stream",
342
+ "frames": [
343
+ {
344
+ "stream": 1,
345
+ "seq": 0,
346
+ "final": false
347
+ },
348
+ "close"
349
+ ],
350
+ "error": true
351
+ }
352
+ ]
353
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "source": "https://github.com/haskell-cryptography/cacophony/blob/master/vectors/cacophony.txt",
3
+ "vectors": [
4
+ {
5
+ "protocol_name": "Noise_KK_25519_ChaChaPoly_BLAKE2s",
6
+ "init_prologue": "4a6f686e2047616c74",
7
+ "init_static": "e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1",
8
+ "init_ephemeral": "893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a",
9
+ "init_remote_static": "31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62",
10
+ "resp_prologue": "4a6f686e2047616c74",
11
+ "resp_static": "4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893",
12
+ "resp_ephemeral": "bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b",
13
+ "resp_remote_static": "6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a",
14
+ "handshake_hash": "1362b8627a00907ce11e558aba8ce7cbca88e83f0e84ce7db5159b1c3e25ab59",
15
+ "messages": [
16
+ {
17
+ "payload": "4c756477696720766f6e204d69736573",
18
+ "ciphertext": "ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944266a5f53784aa3becb0f7485c2759c328937867a4cbaafef07422b0725e098be"
19
+ },
20
+ {
21
+ "payload": "4d757272617920526f746862617264",
22
+ "ciphertext": "95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843008aeea5d76d6abcbab87a18502c8a8352d9933ac11e2a7d228038d721e31e"
23
+ },
24
+ {
25
+ "payload": "462e20412e20486179656b",
26
+ "ciphertext": "5f92113edf78c3e56e6d67201f5f9e0c8f2930c3e1ffb64ede0358"
27
+ },
28
+ {
29
+ "payload": "4361726c204d656e676572",
30
+ "ciphertext": "30ebbd9cdcef7f40d99c8cd11e880dac28f5c9e5032c1059b3b56a"
31
+ },
32
+ {
33
+ "payload": "4a65616e2d426170746973746520536179",
34
+ "ciphertext": "b011620dc31f88abd1788db50912952fe45da56e9d0907ab2cbce5f609b58b1cf2"
35
+ },
36
+ {
37
+ "payload": "457567656e2042f6686d20766f6e2042617765726b",
38
+ "ciphertext": "a0661971e9047b28a815c7b1f62fefb471e4d34bc2a5b48149e7f80c3772b8e4aae8b44baa"
39
+ }
40
+ ]
41
+ }
42
+ ]
43
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "source": "https://github.com/haskell-cryptography/cacophony/blob/master/vectors/cacophony.txt",
3
+ "vectors": [
4
+ {
5
+ "protocol_name": "Noise_NKpsk0_25519_ChaChaPoly_BLAKE2s",
6
+ "init_prologue": "4a6f686e2047616c74",
7
+ "init_psks": [
8
+ "54686973206973206d7920417573747269616e20706572737065637469766521"
9
+ ],
10
+ "init_ephemeral": "893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a",
11
+ "init_remote_static": "31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62",
12
+ "resp_prologue": "4a6f686e2047616c74",
13
+ "resp_psks": [
14
+ "54686973206973206d7920417573747269616e20706572737065637469766521"
15
+ ],
16
+ "resp_static": "4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893",
17
+ "resp_ephemeral": "bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b",
18
+ "handshake_hash": "6bd69bd4066f41f32e47134976f5bf01606f7a4a0e04369fe61158b06f3a144e",
19
+ "messages": [
20
+ {
21
+ "payload": "4c756477696720766f6e204d69736573",
22
+ "ciphertext": "ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794427635ede06947b2d3acd77a36788aaaf17e9f5a8ac252e560fb421ba161a2cf8"
23
+ },
24
+ {
25
+ "payload": "4d757272617920526f746862617264",
26
+ "ciphertext": "95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d682eb9cf4fee6816c8c8cfd34c15774321e234e3a426d7cfd3f13e5e84d04"
27
+ },
28
+ {
29
+ "payload": "462e20412e20486179656b",
30
+ "ciphertext": "b6645684db57679aa08f0b3352d58f32ec7f1e1a02083d5bd54277"
31
+ },
32
+ {
33
+ "payload": "4361726c204d656e676572",
34
+ "ciphertext": "473a9a4109eba0939e934640d318984df8d0900aa922f0195a09ad"
35
+ },
36
+ {
37
+ "payload": "4a65616e2d426170746973746520536179",
38
+ "ciphertext": "c8c44a16fff728f83e61272382149feadd3eb0ee1bab6313f84c72fe1581225236"
39
+ },
40
+ {
41
+ "payload": "457567656e2042f6686d20766f6e2042617765726b",
42
+ "ciphertext": "21354f87158ac5e357529e87e8c84cfcdb49c8a080550c8f908d05ef7ea82ca525e3d1398e"
43
+ }
44
+ ]
45
+ }
46
+ ]
47
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "description": "SAS words: BLAKE2s(\"acpantenna-sas\" || h), first 44 bits, four 11-bit indexes into the BIP-39 English list.",
3
+ "vectors": [
4
+ {
5
+ "h": "0000000000000000000000000000000000000000000000000000000000000000",
6
+ "words": ["torch", "program", "manage", "bone"]
7
+ },
8
+ {
9
+ "h": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
10
+ "words": ["hub", "provide", "level", "vanish"]
11
+ },
12
+ {
13
+ "h": "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
14
+ "words": ["grape", "round", "polar", "effort"]
15
+ },
16
+ {
17
+ "h": "6bd69bd4066f41f32e47134976f5bf01606f7a4a0e04369fe61158b06f3a144e",
18
+ "words": ["crystal", "empty", "dismiss", "abandon"]
19
+ }
20
+ ]
21
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "description": "One pairing with fixed keys: message 1, message 2, the browser's PING and the PONG, CONFIRMED, one ACP message each way, then CLOSE. `transcript` is every binary relay message in order.",
3
+ "webOrigin": "https://app.example",
4
+ "room": "000102030405060708090a0b0c0d0e0f",
5
+ "responderStaticPrivate": "4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893",
6
+ "responderStaticPublic": "31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62",
7
+ "psk": "4242424242424242424242424242424242424242424242424242424242424242",
8
+ "initiatorEphemeralPrivate": "893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a",
9
+ "responderEphemeralPrivate": "bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b",
10
+ "link": "https://app.example/#v1.AAECAwQFBgcICQoLDA0ODw.MeAwP9ZBjS-MDni5HyLoyu0Pvkhlbc9HZ-SDT3Abj2I.QkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI.1800000000",
11
+ "handshakeHash": "ed61afd6a3107d85d27a5c6a0ce9e3b331f6d6db53a4f7b9e9dc0847ecb6bdc2",
12
+ "sas": ["chaos", "theory", "together", "film"],
13
+ "messages": [
14
+ {
15
+ "from": "browser",
16
+ "acp": "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":1}}"
17
+ },
18
+ {
19
+ "from": "agent",
20
+ "acp": "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"protocolVersion\":1}}"
21
+ }
22
+ ],
23
+ "closeReason": "done",
24
+ "transcript": [
25
+ {
26
+ "from": "browser",
27
+ "hex": "ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442da91f2efbe8995a4c7d2a3fdc41a8ef"
28
+ },
29
+ {
30
+ "from": "agent",
31
+ "hex": "95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884358c2800b665046b8b86b4c1621dc7b77"
32
+ },
33
+ {
34
+ "from": "browser",
35
+ "hex": "84c7a11ad531492a05a7da58c835f09f7c8b9c6f078d37a9f948123c88939b31b230ad0cd5b4629757e1890a108380327abdb721498d4cbf68239185c4560ed92a8d617c9eb37f2e546deb34ed7468d3ca9bcd6bafdb227952b49afbd6cd19f0a69feafeb07ced3a8ee43f83dd96060eb4c9c82c10a9a359a578fee9249f7d87860261964b2f8181d279daf1faa8a034ba5d5b78189c518c3be1e5b3df51bbfacd53154d323ed89dd6e8039c2fd5f4285df18453b6c2bbcca771c422bdc018f8d57c3014ece21d875a4e6db7253da3f2b21d16ef4b79dc4ad04f8a0074b39425ee611ab4b3f56b1d9d6897218de0ea7a43e2d05fbb831eaa22e5fbe13659d4ab4d0c60eef188aa5ed007a6564ad8ec1a"
36
+ },
37
+ {
38
+ "from": "agent",
39
+ "hex": "953a4703348bed85f4cbf5e478aaea869616dd95b9bec78bc43fa6bf63d176952fc63213a3e9f722a3ccc840bfe26175b05c51a49a5b741ea9199505dbc21817c4980a7fc42c9e09eaa25d19777a2623120419a4550370635dc4490badbd39b138b31c2a678bb7a709ff7fd3f1bf33ad2390b03a8246f21bc572026fec1101f095be28a66466e08a2a0e81be8c8ebe3fab91363b26e8a6f78ccb45650d07f7285840341b2aa44447d59189d23f2f2ef52d62ba1572d017490f0a958d69c913f341a974f61404ec35e4e77ca4a2e0875d243129aea3f732585da7ddc3f0c707bb1f4ab3826de25517ce06f318606e4f8eed0f87b7d3ac34c9252822f2b85419333cbae30f792772f0d13ab07787eae90c"
40
+ },
41
+ {
42
+ "from": "agent",
43
+ "hex": "26e3b57cb61ef4310a8b944420012f75c5015c49e077bbed2151b549ee1727e64b0f8f030c011f6a0bff74ff0d34ce28bb9fbc329ad6a96b563042666bba44572c34b02ca965189085ab915be2c2c9eba6a8239ec12bcb8d6f2c3617532102c28ebe43b71343d82598a9f195816184d4f2ad7a879a98737e0b4b23397f059954add68e87ac1b06dacf5c3992a9cc7b16a17fb8a9eafa4f10f58e783b5b17f2577098ed50fc782d2a006c6e524ea0f1faf7ae6e98d4fb22a96005c7fd6b5c9b13d04f1ecc0e817711f02b6432985d4654a36206277a54e472a23d1c2085ef873041c1701face95d6504eef745fe90e6c01d2d90710cd8a88a146c5d840291c7e9632c92d9a6877094f527f2cf3ac38b2e"
44
+ },
45
+ {
46
+ "from": "browser",
47
+ "hex": "bfba7b2fcd1df812fdcd6bdce745de8f054eb8028bfab5f86d250dfc5fd710222819982346f3bdc8b0fd7588a8004cb16f6ace4fa414a6d0d59781e268951a05c1aeaee654f61aefba447afc62e98fd6f02069b85253f8b5a0b86d88a18bfa81224250d1cff60ed126d1ea7fce7bd203ac5115c3474b69a0e7d3e7fab83c72bc8bdd08c06e805e220d5b5f4c868daffe53169d8b5939f03f2c39515ea5650f908179109603b31fe8bf81a824eb3f9cf3052c3ad7eb652dadf7940e9c8f5f0e450d52d5dc803fd0f342c36f204b56a2161d0c2636ca4b8eeac7212a2238208ad76e7da82478f442224a949c2cd656a17c4a0d9cb7d39b148abb7e11f124e99f8b5f3c45d91ae70cdb7364b73aa0c36a85"
48
+ },
49
+ {
50
+ "from": "agent",
51
+ "hex": "5dc3f11c66cc2f4e1eac51afd7481bfde92a7520b04aeb30350e1a25b6ebbc37bb0020afe4b6ec8958a8d47a3639f008d95d4d3d703c227ebb173170fa3191f4f1158c29759614b887735b7c4460b1fb479d246253978230f35e86ccc0418fa77fa1f30c057902c6543f09e7cd5ba15f5531194bf1eac0812e3e34bafc74c112f269ab5e9598d44a327c81029423b1e33d23fd2c2c1edf9aa022377520a538e78808552ba4332dd494a9903e838f20ad851cf2071b49d71f9fff07ad4b102468c68bc0fb8c7fc4bd51784d127c5cac0c5f0b0c52e2306f7ad251e8a3aa5dd6fe1726fd5b3073646e5356a52a8b31fbe0cde1664120230f9a2acfd2eae68e3c2bed30290436968ad9aaef31dd501721dc"
52
+ },
53
+ {
54
+ "from": "browser",
55
+ "hex": "d6e564e2614ead63034c51b80970ea3fd48b3a4d2697d19a5331657e5752e78b7360a57643b7d1ee6ad4253bac897aa39837ee8bb046469274a166256c61695fcc3e01239ae91136b99340bf4c47f17cc2bcf1fac186cd88709514e71cb30e3441d67324d9eca3c712dbc607be01a7f230a81dfe0d9081b8476df02dd92f28ba81e78adb858e5bdb88cb6b81354e3c6f76a6771a2364a5f77198e1567ab366b6fee19c8da0d186c937461d2656bdbeb8ba6172d181f405223d692aae098f967afdc8f804dfab61136a86c22b15164da59b48818136955204a359a965d40c10d2ff545aceed644dc39b4713f3634c1745520c49526979929cc1e15c7a3b808b171d6f2273d1b12846a47fa216be597e01"
56
+ }
57
+ ]
58
+ }