@tacet-ink/journal-core 0.2.5 → 0.3.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.
@@ -0,0 +1,594 @@
1
+ {
2
+ "format": "journal-core-vectors/1",
3
+ "package_version": "0.3.0",
4
+ "spec": "docs/format-spec.md",
5
+ "generator": "scripts/generate-vectors.ts",
6
+ "note": "Frozen evidence generated once by calling the real primitives; not recomputed in CI (random iv/salt). Verify gate [26] checks presence and shape only.",
7
+ "vectors": [
8
+ {
9
+ "prefix": "jr1u.",
10
+ "family": "guest 時代密文",
11
+ "layout": "content",
12
+ "kdf": "K_u = SHA-256(UTF8(guestKdfPrefix ‖ identity))",
13
+ "aad": "noteId:n1",
14
+ "inputs": {
15
+ "plaintext": "今天寫了一點東西。",
16
+ "aad": "noteId:n1",
17
+ "guestKdfPrefix": "tacet-note-u1",
18
+ "identity": "acct-aaaaaaaaaaaaaaaa",
19
+ "key_hex": "ea50fc9b0196cfd3b25b4e518f431aa3bf50c1cfe92cd9f15b441e2ec7517e71"
20
+ },
21
+ "wire": "jr1u.E28OEzwXAV0hlkXL2uA/iSU0xA8MaZcrE4gfLl1/Iy4aY+X4N1tWZCoUF14Kw2p0D78HW+wMUw==",
22
+ "payload_len": 55,
23
+ "fields": [
24
+ {
25
+ "name": "iv",
26
+ "offset": 0,
27
+ "len": 12,
28
+ "hex": "136f0e133c17015d219645cb"
29
+ },
30
+ {
31
+ "name": "ct",
32
+ "offset": 12,
33
+ "len": 27,
34
+ "hex": "dae03f892534c40f0c69972b13881f2e5d7f232e1a63e5f8375b56"
35
+ },
36
+ {
37
+ "name": "tag",
38
+ "offset": 39,
39
+ "len": 16,
40
+ "hex": "642a14175e0ac36a740fbf075bec0c53"
41
+ }
42
+ ]
43
+ },
44
+ {
45
+ "prefix": "jr1b.",
46
+ "family": "綁定時代密文",
47
+ "layout": "content",
48
+ "kdf": "none (noteKey)",
49
+ "aad": "noteId:n1",
50
+ "inputs": {
51
+ "plaintext": "今天寫了一點東西。",
52
+ "aad": "noteId:n1",
53
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
54
+ },
55
+ "wire": "jr1b.hjCYLIC/tiHE7v1XnMzBAhPVF1edWNXj8c+YDQuDmUTh8DjVwi1O6QIKBhv7BkS/EtI+Q4joRA==",
56
+ "payload_len": 55,
57
+ "fields": [
58
+ {
59
+ "name": "iv",
60
+ "offset": 0,
61
+ "len": 12,
62
+ "hex": "8630982c80bfb621c4eefd57"
63
+ },
64
+ {
65
+ "name": "ct",
66
+ "offset": 12,
67
+ "len": 27,
68
+ "hex": "9cccc10213d517579d58d5e3f1cf980d0b839944e1f038d5c22d4e"
69
+ },
70
+ {
71
+ "name": "tag",
72
+ "offset": 39,
73
+ "len": 16,
74
+ "hex": "e9020a061bfb0644bf12d23e4388e844"
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "prefix": "jr1c.",
80
+ "family": "附件密文",
81
+ "layout": "content",
82
+ "kdf": "none (noteKey or K_u, caller-chosen)",
83
+ "aad": "jr1a:note-abc:att-001",
84
+ "inputs": {
85
+ "plaintext": "{\"v\":1,\"kind\":\"img\",\"mime\":\"image/png\",\"w\":1,\"h\":1,\"b64\":\"AA==\"}",
86
+ "aad": "jr1a:note-abc:att-001",
87
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
88
+ },
89
+ "wire": "jr1c.nJClotL7fG6XmPO0O4ZasTP3HqWsACeb48emoog4zWpIz0f5kfXY2Cmcpi9KsCcMl90fllmFlb+MjR66P8HkmSLhvm08VPSsk79jFmAPODlfuqj8lGEEv3db/Kw=",
90
+ "payload_len": 92,
91
+ "fields": [
92
+ {
93
+ "name": "iv",
94
+ "offset": 0,
95
+ "len": 12,
96
+ "hex": "9c90a5a2d2fb7c6e9798f3b4"
97
+ },
98
+ {
99
+ "name": "ct",
100
+ "offset": 12,
101
+ "len": 64,
102
+ "hex": "3b865ab133f71ea5ac00279be3c7a6a28838cd6a48cf47f991f5d8d8299ca62f4ab0270c97dd1f96598595bf8c8d1eba3fc1e49922e1be6d3c54f4ac93bf6316"
103
+ },
104
+ {
105
+ "name": "tag",
106
+ "offset": 76,
107
+ "len": 16,
108
+ "hex": "600f38395fbaa8fc946104bf775bfcac"
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ "prefix": "jr1d.",
114
+ "family": "本機 IDB 密文",
115
+ "layout": "content",
116
+ "kdf": "none (caller-injected key)",
117
+ "aad": "note-abc",
118
+ "inputs": {
119
+ "plaintext": "{\"v\":1,\"body\":\"今天寫了一點東西。\"}",
120
+ "aad": "note-abc",
121
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
122
+ },
123
+ "wire": "jr1d.5S6wZr5b5H1uEOI3fK00a+KvEtm7YjJnzRkZ7oFByjrRyPArel2UfuPLdo2vnQwROaW/6rfxNKHEt1ulB2QNgJTEn+8f1fNN",
124
+ "payload_len": 72,
125
+ "fields": [
126
+ {
127
+ "name": "iv",
128
+ "offset": 0,
129
+ "len": 12,
130
+ "hex": "e52eb066be5be47d6e10e237"
131
+ },
132
+ {
133
+ "name": "ct",
134
+ "offset": 12,
135
+ "len": 44,
136
+ "hex": "7cad346be2af12d9bb623267cd1919ee8141ca3ad1c8f02b7a5d947ee3cb768daf9d0c1139a5bfeab7f134a1"
137
+ },
138
+ {
139
+ "name": "tag",
140
+ "offset": 56,
141
+ "len": 16,
142
+ "hex": "c4b75ba507640d8094c49fef1fd5f34d"
143
+ }
144
+ ]
145
+ },
146
+ {
147
+ "prefix": "jr1w.",
148
+ "family": "passphrase 包裹",
149
+ "layout": "salt-external",
150
+ "kdf": "PBKDF2-HMAC-SHA256 iterations=600000, salt=16B external",
151
+ "aad": "notekey",
152
+ "inputs": {
153
+ "passphrase": "correct-horse-battery-staple-42",
154
+ "salt_hex": "f28bd316108f83335ed9ae4f53aa7611",
155
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
156
+ },
157
+ "wire": "jr1w.ZOLL8kYkEFWupNJEadv4shqgxne/zIplMYFjbWubRMWDh+mHZ4sUcGb4mqhzyBXzoMa4/dCk6UFUvYfRze1F4Ia7E4ccfL3UT+hNIguoT8kbFlqFo5i8Jjy/SkE=",
158
+ "payload_len": 92,
159
+ "fields": [
160
+ {
161
+ "name": "iv",
162
+ "offset": 0,
163
+ "len": 12,
164
+ "hex": "64e2cbf246241055aea4d244"
165
+ },
166
+ {
167
+ "name": "ct",
168
+ "offset": 12,
169
+ "len": 64,
170
+ "hex": "69dbf8b21aa0c677bfcc8a653181636d6b9b44c58387e987678b147066f89aa873c815f3a0c6b8fdd0a4e94154bd87d1cded45e086bb13871c7cbdd44fe84d22"
171
+ },
172
+ {
173
+ "name": "tag",
174
+ "offset": 76,
175
+ "len": 16,
176
+ "hex": "0ba84fc91b165a85a398bc263cbf4a41"
177
+ }
178
+ ]
179
+ },
180
+ {
181
+ "prefix": "jr1w.",
182
+ "family": "復原套件包裹(未配置世代/舊契約)",
183
+ "layout": "salt-external",
184
+ "kdf": "PBKDF2-HMAC-SHA256 iterations=600000, salt=UTF8(recSaltPrefix ‖ identity)",
185
+ "aad": "notekey",
186
+ "inputs": {
187
+ "rec_token": "62ff0221e30b56740ec210cd36df2e9667841585c6d0fcd5200826b965aa36a5",
188
+ "recSaltPrefix": "tacet-note-rec1:",
189
+ "identity": "acct-aaaaaaaaaaaaaaaa",
190
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
191
+ },
192
+ "wire": "jr1w.fHLCL51SD7n0PTw2d1rDn4u8/bml/vzayBI7rpB3bgH345lbidjB/eB5rgf+6rGp/DAQOk6JH+RqdXEBD90tOeo8HEsQhjo21uDVrW5vxMitSAn0kK9csVWAqAk=",
193
+ "payload_len": 92,
194
+ "fields": [
195
+ {
196
+ "name": "iv",
197
+ "offset": 0,
198
+ "len": 12,
199
+ "hex": "7c72c22f9d520fb9f43d3c36"
200
+ },
201
+ {
202
+ "name": "ct",
203
+ "offset": 12,
204
+ "len": 64,
205
+ "hex": "775ac39f8bbcfdb9a5fefcdac8123bae90776e01f7e3995b89d8c1fde079ae07feeab1a9fc30103a4e891fe46a7571010fdd2d39ea3c1c4b10863a36d6e0d5ad"
206
+ },
207
+ {
208
+ "name": "tag",
209
+ "offset": 76,
210
+ "len": 16,
211
+ "hex": "6e6fc4c8ad4809f490af5cb15580a809"
212
+ }
213
+ ]
214
+ },
215
+ {
216
+ "prefix": "jr1r.",
217
+ "family": "復原套件包裹(HKDF 世代)",
218
+ "layout": "salt-external",
219
+ "kdf": "HKDF-SHA256 ikm=UTF8(recToken), salt=recKekSalt, info=UTF8('journal-kek-rec-v1:' + recKekHkdf), L=32",
220
+ "aad": "notekey-rec",
221
+ "inputs": {
222
+ "rec_token": "62ff0221e30b56740ec210cd36df2e9667841585c6d0fcd5200826b965aa36a5",
223
+ "recKekHkdf": "jr1r.",
224
+ "recKekSalt": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
225
+ "hkdf_info": "journal-kek-rec-v1:jr1r.",
226
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
227
+ },
228
+ "wire": "jr1r.SYBdceUPBHT0mFb7leanFayy97bdfedC+gjc5wLrn6myvnr+Y73pRLy4rY54M5Lgt7bMV0WjGEB4wdlqyztf+SAP/xmQ6XFQQ7BHpHgJDX/RAY3f5eFPLAdKmmU=",
229
+ "payload_len": 92,
230
+ "fields": [
231
+ {
232
+ "name": "iv",
233
+ "offset": 0,
234
+ "len": 12,
235
+ "hex": "49805d71e50f0474f49856fb"
236
+ },
237
+ {
238
+ "name": "ct",
239
+ "offset": 12,
240
+ "len": 64,
241
+ "hex": "95e6a715acb2f7b6dd7de742fa08dce702eb9fa9b2be7afe63bde944bcb8ad8e783392e0b7b6cc5745a3184078c1d96acb3b5ff9200fff1990e9715043b047a4"
242
+ },
243
+ {
244
+ "name": "tag",
245
+ "offset": 76,
246
+ "len": 16,
247
+ "hex": "78090d7fd1018ddfe5e14f2c074a9a65"
248
+ }
249
+ ]
250
+ },
251
+ {
252
+ "prefix": "jr1l.",
253
+ "family": "本機包裹",
254
+ "layout": "salt-external",
255
+ "kdf": "K_u = SHA-256(UTF8(guestKdfPrefix ‖ identity))",
256
+ "aad": "notekey-local",
257
+ "inputs": {
258
+ "guestKdfPrefix": "tacet-note-u1",
259
+ "identity": "acct-localwrap-vector",
260
+ "storage_key": "tacet_notekey:acct-localwrap-vector",
261
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
262
+ },
263
+ "wire": "jr1l.aZ2wgIFYrrsvWqzlkD9xBPxL0G/0TaFMMSHx13/ZpBcK0bByikCTBulvTRZWO/YZcTeZXVMOrcaPvC7czx/AeMP0y6pqFqo/myr2kP4w+obwxdWTx27rOkL13N8=",
264
+ "payload_len": 92,
265
+ "fields": [
266
+ {
267
+ "name": "iv",
268
+ "offset": 0,
269
+ "len": 12,
270
+ "hex": "699db0808158aebb2f5aace5"
271
+ },
272
+ {
273
+ "name": "ct",
274
+ "offset": 12,
275
+ "len": 64,
276
+ "hex": "903f7104fc4bd06ff44da14c3121f1d77fd9a4170ad1b0728a409306e96f4d16563bf6197137995d530eadc68fbc2edccf1fc078c3f4cbaa6a16aa3f9b2af690"
277
+ },
278
+ {
279
+ "name": "tag",
280
+ "offset": 76,
281
+ "len": 16,
282
+ "hex": "fe30fa86f0c5d593c76eeb3a42f5dcdf"
283
+ }
284
+ ]
285
+ },
286
+ {
287
+ "prefix": "jrsw.",
288
+ "family": "分享包裹 V1(建立面退役)",
289
+ "layout": "salt-external",
290
+ "kdf": "PBKDF2-HMAC-SHA256 iterations=600000, salt=16B external",
291
+ "aad": "notekey-share",
292
+ "inputs": {
293
+ "share_passphrase": "share-link-passphrase-42",
294
+ "salt_hex": "3ad5b9c89486b94d6859e8bdef4ebbbe",
295
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
296
+ },
297
+ "wire": "jrsw.+PbGkA0qYbs3E1idzMmUx8Bp3FouL5fgI+1OVFeYZ8AQialmOniuPVsGGxABtkLvbNSsfy2bd8kj03x/zITRlDJXUv4QWy7kcrVHbnxyFj3zB8MlzgIQ75v2/l4=",
298
+ "payload_len": 92,
299
+ "fields": [
300
+ {
301
+ "name": "iv",
302
+ "offset": 0,
303
+ "len": 12,
304
+ "hex": "f8f6c6900d2a61bb3713589d"
305
+ },
306
+ {
307
+ "name": "ct",
308
+ "offset": 12,
309
+ "len": 64,
310
+ "hex": "ccc994c7c069dc5a2e2f97e023ed4e54579867c01089a9663a78ae3d5b061b1001b642ef6cd4ac7f2d9b77c923d37c7fcc84d194325752fe105b2ee472b5476e"
311
+ },
312
+ {
313
+ "name": "tag",
314
+ "offset": 76,
315
+ "len": 16,
316
+ "hex": "7c72163df307c325ce0210ef9bf6fe5e"
317
+ }
318
+ ]
319
+ },
320
+ {
321
+ "prefix": "jr3w.",
322
+ "family": "passphrase 包裹(Argon2id)",
323
+ "layout": "salt-external",
324
+ "kdf": "Argon2id(raw passphrase) m=65536KiB t=3 p=1 tag=32B version=0x13, salt=16B external",
325
+ "aad": "notekey",
326
+ "inputs": {
327
+ "passphrase": "correct-horse-battery-staple-42",
328
+ "salt_hex": "a6cf999b10a78a142e08a010b8d2c243",
329
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
330
+ },
331
+ "wire": "jr3w.0MbxRKxqbrGt8JpYnnu397RxunmxacRnDQYUHpguJSyE7ItvAio2ZphzSZ5/Ggt+qwBSoOlgvWTX6R7FFSyNWddpEN44y3kS+fdmuC6IYZejxId7jtQBi+qhuQA=",
332
+ "payload_len": 92,
333
+ "fields": [
334
+ {
335
+ "name": "iv",
336
+ "offset": 0,
337
+ "len": 12,
338
+ "hex": "d0c6f144ac6a6eb1adf09a58"
339
+ },
340
+ {
341
+ "name": "ct",
342
+ "offset": 12,
343
+ "len": 64,
344
+ "hex": "9e7bb7f7b471ba79b169c4670d06141e982e252c84ec8b6f022a36669873499e7f1a0b7eab0052a0e960bd64d7e91ec5152c8d59d76910de38cb7912f9f766b8"
345
+ },
346
+ {
347
+ "name": "tag",
348
+ "offset": 76,
349
+ "len": 16,
350
+ "hex": "2e886197a3c4877b8ed4018beaa1b900"
351
+ }
352
+ ]
353
+ },
354
+ {
355
+ "prefix": "jr4w.",
356
+ "family": "passphrase 包裹(密語正規化 v3)",
357
+ "layout": "salt-external",
358
+ "kdf": "Argon2id(NFKC(passphrase)) m=65536KiB t=3 p=1 tag=32B version=0x13, salt=16B external",
359
+ "aad": "notekey",
360
+ "inputs": {
361
+ "passphrase": "v3-generation-passphrase-42",
362
+ "passphrase_nfkc": "v3-generation-passphrase-42",
363
+ "salt_hex": "f5d0fe43c40db021b01fc80b3771a884",
364
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
365
+ },
366
+ "wire": "jr4w.pRSV3TeBE5u0KWWP2FvNa8BX5Rv62DA4ROyMrM+3JXbrZaS01MO43JTTx/f2JNsf3n7nKAGNTES0UI9V1Y5A5DBm2wKYed2QOTyAL62jKTbVF031ZVG4N7Lon7I=",
367
+ "payload_len": 92,
368
+ "fields": [
369
+ {
370
+ "name": "iv",
371
+ "offset": 0,
372
+ "len": 12,
373
+ "hex": "a51495dd3781139bb429658f"
374
+ },
375
+ {
376
+ "name": "ct",
377
+ "offset": 12,
378
+ "len": 64,
379
+ "hex": "d85bcd6bc057e51bfad8303844ec8caccfb72576eb65a4b4d4c3b8dc94d3c7f7f624db1fde7ee728018d4c44b4508f55d58e40e43066db029879dd90393c802f"
380
+ },
381
+ {
382
+ "name": "tag",
383
+ "offset": 76,
384
+ "len": 16,
385
+ "hex": "ada32936d5174df56551b837b2e89fb2"
386
+ }
387
+ ]
388
+ },
389
+ {
390
+ "prefix": "jr3s.",
391
+ "family": "分享包裹 V2(Argon2id)",
392
+ "layout": "salt-external",
393
+ "kdf": "Argon2id(raw share passphrase) m=65536KiB t=3 p=1 tag=32B version=0x13, salt=16B external",
394
+ "aad": "notekey-share",
395
+ "inputs": {
396
+ "share_passphrase": "share-link-passphrase-42",
397
+ "salt_hex": "c37da29e339f8bae79c5b836b21cc5ca",
398
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
399
+ },
400
+ "wire": "jr3s.sW880ckNLKZVvc0QNRZh8d+QXPTtxLr1m1HJcyMDFS41LtIkAnv66Kq3OUG2pLeMBMIyDX6u6nE9Ifc8quA568Gb+K2s78rNao0ssQK02mA7XyuP+PoWo7/W9Nc=",
401
+ "payload_len": 92,
402
+ "fields": [
403
+ {
404
+ "name": "iv",
405
+ "offset": 0,
406
+ "len": 12,
407
+ "hex": "b16f3cd1c90d2ca655bdcd10"
408
+ },
409
+ {
410
+ "name": "ct",
411
+ "offset": 12,
412
+ "len": 64,
413
+ "hex": "351661f1df905cf4edc4baf59b51c9732303152e352ed224027bfae8aab73941b6a4b78c04c2320d7eaeea713d21f73caae039ebc19bf8adacefcacd6a8d2cb1"
414
+ },
415
+ {
416
+ "name": "tag",
417
+ "offset": 76,
418
+ "len": 16,
419
+ "hex": "02b4da603b5f2b8ff8fa16a3bfd6f4d7"
420
+ }
421
+ ]
422
+ },
423
+ {
424
+ "prefix": "jr2w.",
425
+ "family": "PIN 第二因子合鑰(PBKDF2)",
426
+ "layout": "salt-embedded",
427
+ "kdf": "HKDF-SHA256(ikm = PBKDF2(pass, salt1, 600000) ‖ PBKDF2(normalizePin(pin), UTF8(pinSaltPrefix ‖ hex(pinSalt)), 2000000), salt=pinSalt, info=UTF8('journal-kek2-v1:' + wrapDual))",
428
+ "aad": "notekey2",
429
+ "inputs": {
430
+ "passphrase": "dual-factor-passphrase-42",
431
+ "pin": "2580ab",
432
+ "pinSaltPrefix": "tacet-note-pin1:",
433
+ "hkdf_info": "journal-kek2-v1:jr2w.",
434
+ "salt1_hex": "10804f5162cfc8bb8e40d7a46f7f96d7",
435
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
436
+ },
437
+ "wire": "jr2w.08K+Ive1e/XUYsFWl7kjXkowpvSvp6A0eZnZutaBWB58etl0coc1lXNbX9If8vQwym0HK4zJPAOsryLIPFjjeCu2Z0ic2Skj0BHuReGGzBvhxXWCKdCqibOHsFaWZ4VVivE6HgOZ3yoXfavq",
438
+ "payload_len": 108,
439
+ "fields": [
440
+ {
441
+ "name": "pinSalt",
442
+ "offset": 0,
443
+ "len": 16,
444
+ "hex": "d3c2be22f7b57bf5d462c15697b9235e"
445
+ },
446
+ {
447
+ "name": "iv",
448
+ "offset": 16,
449
+ "len": 12,
450
+ "hex": "4a30a6f4afa7a0347999d9ba"
451
+ },
452
+ {
453
+ "name": "ct",
454
+ "offset": 28,
455
+ "len": 64,
456
+ "hex": "d681581e7c7ad97472873595735b5fd21ff2f430ca6d072b8cc93c03acaf22c83c58e3782bb667489cd92923d011ee45e186cc1be1c5758229d0aa89b387b056"
457
+ },
458
+ {
459
+ "name": "tag",
460
+ "offset": 92,
461
+ "len": 16,
462
+ "hex": "966785558af13a1e0399df2a177dabea"
463
+ }
464
+ ]
465
+ },
466
+ {
467
+ "prefix": "jr3d.",
468
+ "family": "PIN 第二因子合鑰(Argon2id)",
469
+ "layout": "salt-embedded",
470
+ "kdf": "HKDF-SHA256(ikm = Argon2id(raw pass, salt1) ‖ Argon2id(normalizePin(pin), UTF8(pinSalt3Prefix ‖ hex(pinSalt))), m=65536KiB t=3 p=1, salt=pinSalt, info=UTF8('journal-kek2-v1:' + prefix))",
471
+ "aad": "notekey2",
472
+ "inputs": {
473
+ "passphrase": "dual-factor-passphrase-42",
474
+ "pin": "2580ab",
475
+ "pinSalt3Prefix": "tacet-note-pin3:",
476
+ "hkdf_info": "journal-kek2-v1:jr3d.",
477
+ "salt1_hex": "8a08b51dd6b44a9611b154b2a86b06d2",
478
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
479
+ },
480
+ "wire": "jr3d.i9V7ND19cSenf1FijGmydAcZXJbFKcyeI3kIPOSIc8/HtEmJ62/TdRkRCd+1viXyLVK43xz7ZFgC5fZyD4hIDnXxL5nNs2+VJJSZnB5Nxq+gmHvyu0iP+HC0AqajqfFgRT8isMFEZ1aqhhwY",
481
+ "payload_len": 108,
482
+ "fields": [
483
+ {
484
+ "name": "pinSalt",
485
+ "offset": 0,
486
+ "len": 16,
487
+ "hex": "8bd57b343d7d7127a77f51628c69b274"
488
+ },
489
+ {
490
+ "name": "iv",
491
+ "offset": 16,
492
+ "len": 12,
493
+ "hex": "07195c96c529cc9e2379083c"
494
+ },
495
+ {
496
+ "name": "ct",
497
+ "offset": 28,
498
+ "len": 64,
499
+ "hex": "e48873cfc7b44989eb6fd375191109dfb5be25f22d52b8df1cfb645802e5f6720f88480e75f12f99cdb36f952494999c1e4dc6afa0987bf2bb488ff870b402a6"
500
+ },
501
+ {
502
+ "name": "tag",
503
+ "offset": 92,
504
+ "len": 16,
505
+ "hex": "a3a9f160453f22b0c1446756aa861c18"
506
+ }
507
+ ]
508
+ },
509
+ {
510
+ "prefix": "jr4d.",
511
+ "family": "PIN 第二因子合鑰(密語正規化 v3)",
512
+ "layout": "salt-embedded",
513
+ "kdf": "HKDF-SHA256(ikm = Argon2id(NFKC(pass), salt1) ‖ Argon2id(normalizePin(pin), UTF8(pinSalt3Prefix ‖ hex(pinSalt))), m=65536KiB t=3 p=1, salt=pinSalt, info=UTF8('journal-kek2-v1:' + prefix))",
514
+ "aad": "notekey2",
515
+ "inputs": {
516
+ "passphrase": "dual-factor-passphrase-42",
517
+ "passphrase_nfkc": "dual-factor-passphrase-42",
518
+ "pin": "2580ab",
519
+ "pinSalt3Prefix": "tacet-note-pin3:",
520
+ "hkdf_info": "journal-kek2-v1:jr4d.",
521
+ "salt1_hex": "ae4407e7008c36da82a07f50636d43ad",
522
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
523
+ },
524
+ "wire": "jr4d.W1tOT5rwVvwCa355E+HLV6pDqDpVsbkTbDQaa0DFsw6oR5mBNADcECNO77wkImdwpDWpxCrjUZDt6Snk5Bh0jjQkG5pPjpF6PbW74KVRO9Uk3ugRR9kB4vvdePQnzSO/DXaAgCL519u8bRix",
525
+ "payload_len": 108,
526
+ "fields": [
527
+ {
528
+ "name": "pinSalt",
529
+ "offset": 0,
530
+ "len": 16,
531
+ "hex": "5b5b4e4f9af056fc026b7e7913e1cb57"
532
+ },
533
+ {
534
+ "name": "iv",
535
+ "offset": 16,
536
+ "len": 12,
537
+ "hex": "aa43a83a55b1b9136c341a6b"
538
+ },
539
+ {
540
+ "name": "ct",
541
+ "offset": 28,
542
+ "len": 64,
543
+ "hex": "40c5b30ea84799813400dc10234eefbc24226770a435a9c42ae35190ede929e4e418748e34241b9a4f8e917a3db5bbe0a5513bd524dee81147d901e2fbdd78f4"
544
+ },
545
+ {
546
+ "name": "tag",
547
+ "offset": 92,
548
+ "len": 16,
549
+ "hex": "27cd23bf0d76808022f9d7dbbc6d18b1"
550
+ }
551
+ ]
552
+ },
553
+ {
554
+ "prefix": "jr1p.",
555
+ "family": "本機 PIN 鎖定",
556
+ "layout": "salt-embedded",
557
+ "kdf": "PBKDF2-HMAC-SHA256(normalizePin(pin), UTF8(pinLockSaltPrefix ‖ hex(pinSalt)), 600000)",
558
+ "aad": "notekey-pinlock",
559
+ "inputs": {
560
+ "pin": "135790",
561
+ "pinLockSaltPrefix": "tacet-pinlock-v1:",
562
+ "note_key_hex": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
563
+ },
564
+ "wire": "jr1p.+eUaFScqL5fobMx+WZjGksj4Wg2gp3p3KlG5Vigwf77Zd+u9VG8ocy4yAF/H2VTB5JXjOKfSsfkQzYKOEsTDk6CK4mS+NXKnRzAv5kjd7MYV8TMNxNRqJcRfVbc2iFuAWSuih5EWA7EDaVTQ",
565
+ "payload_len": 108,
566
+ "fields": [
567
+ {
568
+ "name": "pinSalt",
569
+ "offset": 0,
570
+ "len": 16,
571
+ "hex": "f9e51a15272a2f97e86ccc7e5998c692"
572
+ },
573
+ {
574
+ "name": "iv",
575
+ "offset": 16,
576
+ "len": 12,
577
+ "hex": "c8f85a0da0a77a772a51b956"
578
+ },
579
+ {
580
+ "name": "ct",
581
+ "offset": 28,
582
+ "len": 64,
583
+ "hex": "28307fbed977ebbd546f28732e32005fc7d954c1e495e338a7d2b1f910cd828e12c4c393a08ae264be3572a747302fe648ddecc615f1330dc4d46a25c45f55b7"
584
+ },
585
+ {
586
+ "name": "tag",
587
+ "offset": 92,
588
+ "len": 16,
589
+ "hex": "36885b80592ba287911603b1036954d0"
590
+ }
591
+ ]
592
+ }
593
+ ]
594
+ }