@protontech/openpgp 6.1.1-patch.4 → 6.2.1

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 (49) hide show
  1. package/README.md +13 -2
  2. package/dist/lightweight/argon2id.min.mjs +2 -2
  3. package/dist/lightweight/argon2id.min.mjs.map +1 -1
  4. package/dist/lightweight/argon2id.mjs +4 -4
  5. package/dist/lightweight/legacy_ciphers.min.mjs +1 -1
  6. package/dist/lightweight/legacy_ciphers.min.mjs.map +1 -1
  7. package/dist/lightweight/legacy_ciphers.mjs +10 -10
  8. package/dist/lightweight/nacl-fast.min.mjs +3 -0
  9. package/dist/lightweight/nacl-fast.min.mjs.map +1 -0
  10. package/dist/lightweight/nacl-fast.mjs +1382 -0
  11. package/dist/lightweight/noble_curves.min.mjs +11 -12
  12. package/dist/lightweight/noble_curves.min.mjs.map +1 -1
  13. package/dist/lightweight/noble_curves.mjs +2175 -1752
  14. package/dist/lightweight/noble_hashes.min.mjs +2 -2
  15. package/dist/lightweight/noble_hashes.min.mjs.map +1 -1
  16. package/dist/lightweight/noble_hashes.mjs +80 -51
  17. package/dist/lightweight/noble_post_quantum.min.mjs +3 -4
  18. package/dist/lightweight/noble_post_quantum.min.mjs.map +1 -1
  19. package/dist/lightweight/noble_post_quantum.mjs +352 -10
  20. package/dist/lightweight/openpgp.min.mjs +3 -4
  21. package/dist/lightweight/openpgp.min.mjs.map +1 -1
  22. package/dist/lightweight/openpgp.mjs +998 -2820
  23. package/dist/lightweight/seek-bzip.min.mjs +2 -2
  24. package/dist/lightweight/seek-bzip.min.mjs.map +1 -1
  25. package/dist/lightweight/seek-bzip.mjs +780 -746
  26. package/dist/lightweight/sha512.min.mjs +4 -2
  27. package/dist/lightweight/sha512.min.mjs.map +1 -1
  28. package/dist/lightweight/sha512.mjs +672 -130
  29. package/dist/node/openpgp.cjs +10685 -10141
  30. package/dist/node/openpgp.min.cjs +14 -17
  31. package/dist/node/openpgp.min.cjs.map +1 -1
  32. package/dist/node/openpgp.min.mjs +14 -17
  33. package/dist/node/openpgp.min.mjs.map +1 -1
  34. package/dist/node/openpgp.mjs +10685 -10140
  35. package/dist/openpgp.js +11728 -11188
  36. package/dist/openpgp.min.js +14 -17
  37. package/dist/openpgp.min.js.map +1 -1
  38. package/dist/openpgp.min.mjs +14 -17
  39. package/dist/openpgp.min.mjs.map +1 -1
  40. package/dist/openpgp.mjs +11728 -11188
  41. package/{src → dist/types}/config/config.d.ts +1 -21
  42. package/{openpgp.d.ts → dist/types/index.d.ts} +94 -76
  43. package/dist/types/packet/grammar.d.ts +33 -0
  44. package/package.json +40 -39
  45. package/dist/lightweight/sha3.min.mjs +0 -4
  46. package/dist/lightweight/sha3.min.mjs.map +0 -1
  47. package/dist/lightweight/sha3.mjs +0 -401
  48. /package/{src → dist/types}/config/index.d.ts +0 -0
  49. /package/{src → dist/types}/enums.d.ts +0 -0
@@ -0,0 +1,1382 @@
1
+ /*! OpenPGP.js v6.2.1 - 2025-08-28 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
2
+ const globalThis = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
3
+
4
+ // declare const globalThis: Record<string, any> | undefined;
5
+ const crypto =
6
+ typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;
7
+
8
+ const nacl = {};
9
+
10
+ // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.
11
+ // Public domain.
12
+ //
13
+ // Implementation derived from TweetNaCl version 20140427.
14
+ // See for details: http://tweetnacl.cr.yp.to/
15
+
16
+ var gf = function(init) {
17
+ var i, r = new Float64Array(16);
18
+ if (init) for (i = 0; i < init.length; i++) r[i] = init[i];
19
+ return r;
20
+ };
21
+
22
+ // Pluggable, initialized in high-level API below.
23
+ var randombytes = function(/* x, n */) { throw new Error('no PRNG'); };
24
+
25
+ var _9 = new Uint8Array(32); _9[0] = 9;
26
+
27
+ var gf0 = gf(),
28
+ gf1 = gf([1]),
29
+ _121665 = gf([0xdb41, 1]),
30
+ D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),
31
+ D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),
32
+ X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),
33
+ Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),
34
+ I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);
35
+
36
+ function ts64(x, i, h, l) {
37
+ x[i] = (h >> 24) & 0xff;
38
+ x[i+1] = (h >> 16) & 0xff;
39
+ x[i+2] = (h >> 8) & 0xff;
40
+ x[i+3] = h & 0xff;
41
+ x[i+4] = (l >> 24) & 0xff;
42
+ x[i+5] = (l >> 16) & 0xff;
43
+ x[i+6] = (l >> 8) & 0xff;
44
+ x[i+7] = l & 0xff;
45
+ }
46
+
47
+ function vn(x, xi, y, yi, n) {
48
+ var i,d = 0;
49
+ for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];
50
+ return (1 & ((d - 1) >>> 8)) - 1;
51
+ }
52
+
53
+ function crypto_verify_32(x, xi, y, yi) {
54
+ return vn(x,xi,y,yi,32);
55
+ }
56
+
57
+ function set25519(r, a) {
58
+ var i;
59
+ for (i = 0; i < 16; i++) r[i] = a[i]|0;
60
+ }
61
+
62
+ function car25519(o) {
63
+ var i, v, c = 1;
64
+ for (i = 0; i < 16; i++) {
65
+ v = o[i] + c + 65535;
66
+ c = Math.floor(v / 65536);
67
+ o[i] = v - c * 65536;
68
+ }
69
+ o[0] += c-1 + 37 * (c-1);
70
+ }
71
+
72
+ function sel25519(p, q, b) {
73
+ var t, c = ~(b-1);
74
+ for (var i = 0; i < 16; i++) {
75
+ t = c & (p[i] ^ q[i]);
76
+ p[i] ^= t;
77
+ q[i] ^= t;
78
+ }
79
+ }
80
+
81
+ function pack25519(o, n) {
82
+ var i, j, b;
83
+ var m = gf(), t = gf();
84
+ for (i = 0; i < 16; i++) t[i] = n[i];
85
+ car25519(t);
86
+ car25519(t);
87
+ car25519(t);
88
+ for (j = 0; j < 2; j++) {
89
+ m[0] = t[0] - 0xffed;
90
+ for (i = 1; i < 15; i++) {
91
+ m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);
92
+ m[i-1] &= 0xffff;
93
+ }
94
+ m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);
95
+ b = (m[15]>>16) & 1;
96
+ m[14] &= 0xffff;
97
+ sel25519(t, m, 1-b);
98
+ }
99
+ for (i = 0; i < 16; i++) {
100
+ o[2*i] = t[i] & 0xff;
101
+ o[2*i+1] = t[i]>>8;
102
+ }
103
+ }
104
+
105
+ function neq25519(a, b) {
106
+ var c = new Uint8Array(32), d = new Uint8Array(32);
107
+ pack25519(c, a);
108
+ pack25519(d, b);
109
+ return crypto_verify_32(c, 0, d, 0);
110
+ }
111
+
112
+ function par25519(a) {
113
+ var d = new Uint8Array(32);
114
+ pack25519(d, a);
115
+ return d[0] & 1;
116
+ }
117
+
118
+ function unpack25519(o, n) {
119
+ var i;
120
+ for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);
121
+ o[15] &= 0x7fff;
122
+ }
123
+
124
+ function A(o, a, b) {
125
+ for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];
126
+ }
127
+
128
+ function Z(o, a, b) {
129
+ for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];
130
+ }
131
+
132
+ function M(o, a, b) {
133
+ var v, c,
134
+ t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,
135
+ t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,
136
+ t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,
137
+ t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,
138
+ b0 = b[0],
139
+ b1 = b[1],
140
+ b2 = b[2],
141
+ b3 = b[3],
142
+ b4 = b[4],
143
+ b5 = b[5],
144
+ b6 = b[6],
145
+ b7 = b[7],
146
+ b8 = b[8],
147
+ b9 = b[9],
148
+ b10 = b[10],
149
+ b11 = b[11],
150
+ b12 = b[12],
151
+ b13 = b[13],
152
+ b14 = b[14],
153
+ b15 = b[15];
154
+
155
+ v = a[0];
156
+ t0 += v * b0;
157
+ t1 += v * b1;
158
+ t2 += v * b2;
159
+ t3 += v * b3;
160
+ t4 += v * b4;
161
+ t5 += v * b5;
162
+ t6 += v * b6;
163
+ t7 += v * b7;
164
+ t8 += v * b8;
165
+ t9 += v * b9;
166
+ t10 += v * b10;
167
+ t11 += v * b11;
168
+ t12 += v * b12;
169
+ t13 += v * b13;
170
+ t14 += v * b14;
171
+ t15 += v * b15;
172
+ v = a[1];
173
+ t1 += v * b0;
174
+ t2 += v * b1;
175
+ t3 += v * b2;
176
+ t4 += v * b3;
177
+ t5 += v * b4;
178
+ t6 += v * b5;
179
+ t7 += v * b6;
180
+ t8 += v * b7;
181
+ t9 += v * b8;
182
+ t10 += v * b9;
183
+ t11 += v * b10;
184
+ t12 += v * b11;
185
+ t13 += v * b12;
186
+ t14 += v * b13;
187
+ t15 += v * b14;
188
+ t16 += v * b15;
189
+ v = a[2];
190
+ t2 += v * b0;
191
+ t3 += v * b1;
192
+ t4 += v * b2;
193
+ t5 += v * b3;
194
+ t6 += v * b4;
195
+ t7 += v * b5;
196
+ t8 += v * b6;
197
+ t9 += v * b7;
198
+ t10 += v * b8;
199
+ t11 += v * b9;
200
+ t12 += v * b10;
201
+ t13 += v * b11;
202
+ t14 += v * b12;
203
+ t15 += v * b13;
204
+ t16 += v * b14;
205
+ t17 += v * b15;
206
+ v = a[3];
207
+ t3 += v * b0;
208
+ t4 += v * b1;
209
+ t5 += v * b2;
210
+ t6 += v * b3;
211
+ t7 += v * b4;
212
+ t8 += v * b5;
213
+ t9 += v * b6;
214
+ t10 += v * b7;
215
+ t11 += v * b8;
216
+ t12 += v * b9;
217
+ t13 += v * b10;
218
+ t14 += v * b11;
219
+ t15 += v * b12;
220
+ t16 += v * b13;
221
+ t17 += v * b14;
222
+ t18 += v * b15;
223
+ v = a[4];
224
+ t4 += v * b0;
225
+ t5 += v * b1;
226
+ t6 += v * b2;
227
+ t7 += v * b3;
228
+ t8 += v * b4;
229
+ t9 += v * b5;
230
+ t10 += v * b6;
231
+ t11 += v * b7;
232
+ t12 += v * b8;
233
+ t13 += v * b9;
234
+ t14 += v * b10;
235
+ t15 += v * b11;
236
+ t16 += v * b12;
237
+ t17 += v * b13;
238
+ t18 += v * b14;
239
+ t19 += v * b15;
240
+ v = a[5];
241
+ t5 += v * b0;
242
+ t6 += v * b1;
243
+ t7 += v * b2;
244
+ t8 += v * b3;
245
+ t9 += v * b4;
246
+ t10 += v * b5;
247
+ t11 += v * b6;
248
+ t12 += v * b7;
249
+ t13 += v * b8;
250
+ t14 += v * b9;
251
+ t15 += v * b10;
252
+ t16 += v * b11;
253
+ t17 += v * b12;
254
+ t18 += v * b13;
255
+ t19 += v * b14;
256
+ t20 += v * b15;
257
+ v = a[6];
258
+ t6 += v * b0;
259
+ t7 += v * b1;
260
+ t8 += v * b2;
261
+ t9 += v * b3;
262
+ t10 += v * b4;
263
+ t11 += v * b5;
264
+ t12 += v * b6;
265
+ t13 += v * b7;
266
+ t14 += v * b8;
267
+ t15 += v * b9;
268
+ t16 += v * b10;
269
+ t17 += v * b11;
270
+ t18 += v * b12;
271
+ t19 += v * b13;
272
+ t20 += v * b14;
273
+ t21 += v * b15;
274
+ v = a[7];
275
+ t7 += v * b0;
276
+ t8 += v * b1;
277
+ t9 += v * b2;
278
+ t10 += v * b3;
279
+ t11 += v * b4;
280
+ t12 += v * b5;
281
+ t13 += v * b6;
282
+ t14 += v * b7;
283
+ t15 += v * b8;
284
+ t16 += v * b9;
285
+ t17 += v * b10;
286
+ t18 += v * b11;
287
+ t19 += v * b12;
288
+ t20 += v * b13;
289
+ t21 += v * b14;
290
+ t22 += v * b15;
291
+ v = a[8];
292
+ t8 += v * b0;
293
+ t9 += v * b1;
294
+ t10 += v * b2;
295
+ t11 += v * b3;
296
+ t12 += v * b4;
297
+ t13 += v * b5;
298
+ t14 += v * b6;
299
+ t15 += v * b7;
300
+ t16 += v * b8;
301
+ t17 += v * b9;
302
+ t18 += v * b10;
303
+ t19 += v * b11;
304
+ t20 += v * b12;
305
+ t21 += v * b13;
306
+ t22 += v * b14;
307
+ t23 += v * b15;
308
+ v = a[9];
309
+ t9 += v * b0;
310
+ t10 += v * b1;
311
+ t11 += v * b2;
312
+ t12 += v * b3;
313
+ t13 += v * b4;
314
+ t14 += v * b5;
315
+ t15 += v * b6;
316
+ t16 += v * b7;
317
+ t17 += v * b8;
318
+ t18 += v * b9;
319
+ t19 += v * b10;
320
+ t20 += v * b11;
321
+ t21 += v * b12;
322
+ t22 += v * b13;
323
+ t23 += v * b14;
324
+ t24 += v * b15;
325
+ v = a[10];
326
+ t10 += v * b0;
327
+ t11 += v * b1;
328
+ t12 += v * b2;
329
+ t13 += v * b3;
330
+ t14 += v * b4;
331
+ t15 += v * b5;
332
+ t16 += v * b6;
333
+ t17 += v * b7;
334
+ t18 += v * b8;
335
+ t19 += v * b9;
336
+ t20 += v * b10;
337
+ t21 += v * b11;
338
+ t22 += v * b12;
339
+ t23 += v * b13;
340
+ t24 += v * b14;
341
+ t25 += v * b15;
342
+ v = a[11];
343
+ t11 += v * b0;
344
+ t12 += v * b1;
345
+ t13 += v * b2;
346
+ t14 += v * b3;
347
+ t15 += v * b4;
348
+ t16 += v * b5;
349
+ t17 += v * b6;
350
+ t18 += v * b7;
351
+ t19 += v * b8;
352
+ t20 += v * b9;
353
+ t21 += v * b10;
354
+ t22 += v * b11;
355
+ t23 += v * b12;
356
+ t24 += v * b13;
357
+ t25 += v * b14;
358
+ t26 += v * b15;
359
+ v = a[12];
360
+ t12 += v * b0;
361
+ t13 += v * b1;
362
+ t14 += v * b2;
363
+ t15 += v * b3;
364
+ t16 += v * b4;
365
+ t17 += v * b5;
366
+ t18 += v * b6;
367
+ t19 += v * b7;
368
+ t20 += v * b8;
369
+ t21 += v * b9;
370
+ t22 += v * b10;
371
+ t23 += v * b11;
372
+ t24 += v * b12;
373
+ t25 += v * b13;
374
+ t26 += v * b14;
375
+ t27 += v * b15;
376
+ v = a[13];
377
+ t13 += v * b0;
378
+ t14 += v * b1;
379
+ t15 += v * b2;
380
+ t16 += v * b3;
381
+ t17 += v * b4;
382
+ t18 += v * b5;
383
+ t19 += v * b6;
384
+ t20 += v * b7;
385
+ t21 += v * b8;
386
+ t22 += v * b9;
387
+ t23 += v * b10;
388
+ t24 += v * b11;
389
+ t25 += v * b12;
390
+ t26 += v * b13;
391
+ t27 += v * b14;
392
+ t28 += v * b15;
393
+ v = a[14];
394
+ t14 += v * b0;
395
+ t15 += v * b1;
396
+ t16 += v * b2;
397
+ t17 += v * b3;
398
+ t18 += v * b4;
399
+ t19 += v * b5;
400
+ t20 += v * b6;
401
+ t21 += v * b7;
402
+ t22 += v * b8;
403
+ t23 += v * b9;
404
+ t24 += v * b10;
405
+ t25 += v * b11;
406
+ t26 += v * b12;
407
+ t27 += v * b13;
408
+ t28 += v * b14;
409
+ t29 += v * b15;
410
+ v = a[15];
411
+ t15 += v * b0;
412
+ t16 += v * b1;
413
+ t17 += v * b2;
414
+ t18 += v * b3;
415
+ t19 += v * b4;
416
+ t20 += v * b5;
417
+ t21 += v * b6;
418
+ t22 += v * b7;
419
+ t23 += v * b8;
420
+ t24 += v * b9;
421
+ t25 += v * b10;
422
+ t26 += v * b11;
423
+ t27 += v * b12;
424
+ t28 += v * b13;
425
+ t29 += v * b14;
426
+ t30 += v * b15;
427
+
428
+ t0 += 38 * t16;
429
+ t1 += 38 * t17;
430
+ t2 += 38 * t18;
431
+ t3 += 38 * t19;
432
+ t4 += 38 * t20;
433
+ t5 += 38 * t21;
434
+ t6 += 38 * t22;
435
+ t7 += 38 * t23;
436
+ t8 += 38 * t24;
437
+ t9 += 38 * t25;
438
+ t10 += 38 * t26;
439
+ t11 += 38 * t27;
440
+ t12 += 38 * t28;
441
+ t13 += 38 * t29;
442
+ t14 += 38 * t30;
443
+ // t15 left as is
444
+
445
+ // first car
446
+ c = 1;
447
+ v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;
448
+ v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;
449
+ v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;
450
+ v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;
451
+ v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;
452
+ v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;
453
+ v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;
454
+ v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;
455
+ v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;
456
+ v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;
457
+ v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;
458
+ v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;
459
+ v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;
460
+ v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;
461
+ v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;
462
+ v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;
463
+ t0 += c-1 + 37 * (c-1);
464
+
465
+ // second car
466
+ c = 1;
467
+ v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;
468
+ v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;
469
+ v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;
470
+ v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;
471
+ v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;
472
+ v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;
473
+ v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;
474
+ v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;
475
+ v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;
476
+ v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;
477
+ v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;
478
+ v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;
479
+ v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;
480
+ v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;
481
+ v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;
482
+ v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;
483
+ t0 += c-1 + 37 * (c-1);
484
+
485
+ o[ 0] = t0;
486
+ o[ 1] = t1;
487
+ o[ 2] = t2;
488
+ o[ 3] = t3;
489
+ o[ 4] = t4;
490
+ o[ 5] = t5;
491
+ o[ 6] = t6;
492
+ o[ 7] = t7;
493
+ o[ 8] = t8;
494
+ o[ 9] = t9;
495
+ o[10] = t10;
496
+ o[11] = t11;
497
+ o[12] = t12;
498
+ o[13] = t13;
499
+ o[14] = t14;
500
+ o[15] = t15;
501
+ }
502
+
503
+ function S(o, a) {
504
+ M(o, a, a);
505
+ }
506
+
507
+ function inv25519(o, i) {
508
+ var c = gf();
509
+ var a;
510
+ for (a = 0; a < 16; a++) c[a] = i[a];
511
+ for (a = 253; a >= 0; a--) {
512
+ S(c, c);
513
+ if(a !== 2 && a !== 4) M(c, c, i);
514
+ }
515
+ for (a = 0; a < 16; a++) o[a] = c[a];
516
+ }
517
+
518
+ function pow2523(o, i) {
519
+ var c = gf();
520
+ var a;
521
+ for (a = 0; a < 16; a++) c[a] = i[a];
522
+ for (a = 250; a >= 0; a--) {
523
+ S(c, c);
524
+ if(a !== 1) M(c, c, i);
525
+ }
526
+ for (a = 0; a < 16; a++) o[a] = c[a];
527
+ }
528
+
529
+ function crypto_scalarmult(q, n, p) {
530
+ var z = new Uint8Array(32);
531
+ var x = new Float64Array(80), r, i;
532
+ var a = gf(), b = gf(), c = gf(),
533
+ d = gf(), e = gf(), f = gf();
534
+ for (i = 0; i < 31; i++) z[i] = n[i];
535
+ z[31]=(n[31]&127)|64;
536
+ z[0]&=248;
537
+ unpack25519(x,p);
538
+ for (i = 0; i < 16; i++) {
539
+ b[i]=x[i];
540
+ d[i]=a[i]=c[i]=0;
541
+ }
542
+ a[0]=d[0]=1;
543
+ for (i=254; i>=0; --i) {
544
+ r=(z[i>>>3]>>>(i&7))&1;
545
+ sel25519(a,b,r);
546
+ sel25519(c,d,r);
547
+ A(e,a,c);
548
+ Z(a,a,c);
549
+ A(c,b,d);
550
+ Z(b,b,d);
551
+ S(d,e);
552
+ S(f,a);
553
+ M(a,c,a);
554
+ M(c,b,e);
555
+ A(e,a,c);
556
+ Z(a,a,c);
557
+ S(b,a);
558
+ Z(c,d,f);
559
+ M(a,c,_121665);
560
+ A(a,a,d);
561
+ M(c,c,a);
562
+ M(a,d,f);
563
+ M(d,b,x);
564
+ S(b,e);
565
+ sel25519(a,b,r);
566
+ sel25519(c,d,r);
567
+ }
568
+ for (i = 0; i < 16; i++) {
569
+ x[i+16]=a[i];
570
+ x[i+32]=c[i];
571
+ x[i+48]=b[i];
572
+ x[i+64]=d[i];
573
+ }
574
+ var x32 = x.subarray(32);
575
+ var x16 = x.subarray(16);
576
+ inv25519(x32,x32);
577
+ M(x16,x16,x32);
578
+ pack25519(q,x16);
579
+ return 0;
580
+ }
581
+
582
+ function crypto_scalarmult_base(q, n) {
583
+ return crypto_scalarmult(q, n, _9);
584
+ }
585
+
586
+ function crypto_box_keypair(y, x) {
587
+ randombytes(x, 32);
588
+ return crypto_scalarmult_base(y, x);
589
+ }
590
+
591
+ var K = [
592
+ 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
593
+ 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
594
+ 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
595
+ 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
596
+ 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
597
+ 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
598
+ 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
599
+ 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
600
+ 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
601
+ 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
602
+ 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
603
+ 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
604
+ 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
605
+ 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
606
+ 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
607
+ 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
608
+ 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
609
+ 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
610
+ 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
611
+ 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
612
+ 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
613
+ 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
614
+ 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
615
+ 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
616
+ 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
617
+ 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
618
+ 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
619
+ 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
620
+ 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
621
+ 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
622
+ 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
623
+ 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
624
+ 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
625
+ 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
626
+ 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
627
+ 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
628
+ 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
629
+ 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
630
+ 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
631
+ 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
632
+ ];
633
+
634
+ function crypto_hashblocks_hl(hh, hl, m, n) {
635
+ var wh = new Int32Array(16), wl = new Int32Array(16),
636
+ bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,
637
+ bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,
638
+ th, tl, i, j, h, l, a, b, c, d;
639
+
640
+ var ah0 = hh[0],
641
+ ah1 = hh[1],
642
+ ah2 = hh[2],
643
+ ah3 = hh[3],
644
+ ah4 = hh[4],
645
+ ah5 = hh[5],
646
+ ah6 = hh[6],
647
+ ah7 = hh[7],
648
+
649
+ al0 = hl[0],
650
+ al1 = hl[1],
651
+ al2 = hl[2],
652
+ al3 = hl[3],
653
+ al4 = hl[4],
654
+ al5 = hl[5],
655
+ al6 = hl[6],
656
+ al7 = hl[7];
657
+
658
+ var pos = 0;
659
+ while (n >= 128) {
660
+ for (i = 0; i < 16; i++) {
661
+ j = 8 * i + pos;
662
+ wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];
663
+ wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];
664
+ }
665
+ for (i = 0; i < 80; i++) {
666
+ bh0 = ah0;
667
+ bh1 = ah1;
668
+ bh2 = ah2;
669
+ bh3 = ah3;
670
+ bh4 = ah4;
671
+ bh5 = ah5;
672
+ bh6 = ah6;
673
+ bh7 = ah7;
674
+
675
+ bl0 = al0;
676
+ bl1 = al1;
677
+ bl2 = al2;
678
+ bl3 = al3;
679
+ bl4 = al4;
680
+ bl5 = al5;
681
+ bl6 = al6;
682
+ bl7 = al7;
683
+
684
+ // add
685
+ h = ah7;
686
+ l = al7;
687
+
688
+ a = l & 0xffff; b = l >>> 16;
689
+ c = h & 0xffff; d = h >>> 16;
690
+
691
+ // Sigma1
692
+ h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));
693
+ l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));
694
+
695
+ a += l & 0xffff; b += l >>> 16;
696
+ c += h & 0xffff; d += h >>> 16;
697
+
698
+ // Ch
699
+ h = (ah4 & ah5) ^ (~ah4 & ah6);
700
+ l = (al4 & al5) ^ (~al4 & al6);
701
+
702
+ a += l & 0xffff; b += l >>> 16;
703
+ c += h & 0xffff; d += h >>> 16;
704
+
705
+ // K
706
+ h = K[i*2];
707
+ l = K[i*2+1];
708
+
709
+ a += l & 0xffff; b += l >>> 16;
710
+ c += h & 0xffff; d += h >>> 16;
711
+
712
+ // w
713
+ h = wh[i%16];
714
+ l = wl[i%16];
715
+
716
+ a += l & 0xffff; b += l >>> 16;
717
+ c += h & 0xffff; d += h >>> 16;
718
+
719
+ b += a >>> 16;
720
+ c += b >>> 16;
721
+ d += c >>> 16;
722
+
723
+ th = c & 0xffff | d << 16;
724
+ tl = a & 0xffff | b << 16;
725
+
726
+ // add
727
+ h = th;
728
+ l = tl;
729
+
730
+ a = l & 0xffff; b = l >>> 16;
731
+ c = h & 0xffff; d = h >>> 16;
732
+
733
+ // Sigma0
734
+ h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));
735
+ l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));
736
+
737
+ a += l & 0xffff; b += l >>> 16;
738
+ c += h & 0xffff; d += h >>> 16;
739
+
740
+ // Maj
741
+ h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);
742
+ l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);
743
+
744
+ a += l & 0xffff; b += l >>> 16;
745
+ c += h & 0xffff; d += h >>> 16;
746
+
747
+ b += a >>> 16;
748
+ c += b >>> 16;
749
+ d += c >>> 16;
750
+
751
+ bh7 = (c & 0xffff) | (d << 16);
752
+ bl7 = (a & 0xffff) | (b << 16);
753
+
754
+ // add
755
+ h = bh3;
756
+ l = bl3;
757
+
758
+ a = l & 0xffff; b = l >>> 16;
759
+ c = h & 0xffff; d = h >>> 16;
760
+
761
+ h = th;
762
+ l = tl;
763
+
764
+ a += l & 0xffff; b += l >>> 16;
765
+ c += h & 0xffff; d += h >>> 16;
766
+
767
+ b += a >>> 16;
768
+ c += b >>> 16;
769
+ d += c >>> 16;
770
+
771
+ bh3 = (c & 0xffff) | (d << 16);
772
+ bl3 = (a & 0xffff) | (b << 16);
773
+
774
+ ah1 = bh0;
775
+ ah2 = bh1;
776
+ ah3 = bh2;
777
+ ah4 = bh3;
778
+ ah5 = bh4;
779
+ ah6 = bh5;
780
+ ah7 = bh6;
781
+ ah0 = bh7;
782
+
783
+ al1 = bl0;
784
+ al2 = bl1;
785
+ al3 = bl2;
786
+ al4 = bl3;
787
+ al5 = bl4;
788
+ al6 = bl5;
789
+ al7 = bl6;
790
+ al0 = bl7;
791
+
792
+ if (i%16 === 15) {
793
+ for (j = 0; j < 16; j++) {
794
+ // add
795
+ h = wh[j];
796
+ l = wl[j];
797
+
798
+ a = l & 0xffff; b = l >>> 16;
799
+ c = h & 0xffff; d = h >>> 16;
800
+
801
+ h = wh[(j+9)%16];
802
+ l = wl[(j+9)%16];
803
+
804
+ a += l & 0xffff; b += l >>> 16;
805
+ c += h & 0xffff; d += h >>> 16;
806
+
807
+ // sigma0
808
+ th = wh[(j+1)%16];
809
+ tl = wl[(j+1)%16];
810
+ h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);
811
+ l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));
812
+
813
+ a += l & 0xffff; b += l >>> 16;
814
+ c += h & 0xffff; d += h >>> 16;
815
+
816
+ // sigma1
817
+ th = wh[(j+14)%16];
818
+ tl = wl[(j+14)%16];
819
+ h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);
820
+ l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));
821
+
822
+ a += l & 0xffff; b += l >>> 16;
823
+ c += h & 0xffff; d += h >>> 16;
824
+
825
+ b += a >>> 16;
826
+ c += b >>> 16;
827
+ d += c >>> 16;
828
+
829
+ wh[j] = (c & 0xffff) | (d << 16);
830
+ wl[j] = (a & 0xffff) | (b << 16);
831
+ }
832
+ }
833
+ }
834
+
835
+ // add
836
+ h = ah0;
837
+ l = al0;
838
+
839
+ a = l & 0xffff; b = l >>> 16;
840
+ c = h & 0xffff; d = h >>> 16;
841
+
842
+ h = hh[0];
843
+ l = hl[0];
844
+
845
+ a += l & 0xffff; b += l >>> 16;
846
+ c += h & 0xffff; d += h >>> 16;
847
+
848
+ b += a >>> 16;
849
+ c += b >>> 16;
850
+ d += c >>> 16;
851
+
852
+ hh[0] = ah0 = (c & 0xffff) | (d << 16);
853
+ hl[0] = al0 = (a & 0xffff) | (b << 16);
854
+
855
+ h = ah1;
856
+ l = al1;
857
+
858
+ a = l & 0xffff; b = l >>> 16;
859
+ c = h & 0xffff; d = h >>> 16;
860
+
861
+ h = hh[1];
862
+ l = hl[1];
863
+
864
+ a += l & 0xffff; b += l >>> 16;
865
+ c += h & 0xffff; d += h >>> 16;
866
+
867
+ b += a >>> 16;
868
+ c += b >>> 16;
869
+ d += c >>> 16;
870
+
871
+ hh[1] = ah1 = (c & 0xffff) | (d << 16);
872
+ hl[1] = al1 = (a & 0xffff) | (b << 16);
873
+
874
+ h = ah2;
875
+ l = al2;
876
+
877
+ a = l & 0xffff; b = l >>> 16;
878
+ c = h & 0xffff; d = h >>> 16;
879
+
880
+ h = hh[2];
881
+ l = hl[2];
882
+
883
+ a += l & 0xffff; b += l >>> 16;
884
+ c += h & 0xffff; d += h >>> 16;
885
+
886
+ b += a >>> 16;
887
+ c += b >>> 16;
888
+ d += c >>> 16;
889
+
890
+ hh[2] = ah2 = (c & 0xffff) | (d << 16);
891
+ hl[2] = al2 = (a & 0xffff) | (b << 16);
892
+
893
+ h = ah3;
894
+ l = al3;
895
+
896
+ a = l & 0xffff; b = l >>> 16;
897
+ c = h & 0xffff; d = h >>> 16;
898
+
899
+ h = hh[3];
900
+ l = hl[3];
901
+
902
+ a += l & 0xffff; b += l >>> 16;
903
+ c += h & 0xffff; d += h >>> 16;
904
+
905
+ b += a >>> 16;
906
+ c += b >>> 16;
907
+ d += c >>> 16;
908
+
909
+ hh[3] = ah3 = (c & 0xffff) | (d << 16);
910
+ hl[3] = al3 = (a & 0xffff) | (b << 16);
911
+
912
+ h = ah4;
913
+ l = al4;
914
+
915
+ a = l & 0xffff; b = l >>> 16;
916
+ c = h & 0xffff; d = h >>> 16;
917
+
918
+ h = hh[4];
919
+ l = hl[4];
920
+
921
+ a += l & 0xffff; b += l >>> 16;
922
+ c += h & 0xffff; d += h >>> 16;
923
+
924
+ b += a >>> 16;
925
+ c += b >>> 16;
926
+ d += c >>> 16;
927
+
928
+ hh[4] = ah4 = (c & 0xffff) | (d << 16);
929
+ hl[4] = al4 = (a & 0xffff) | (b << 16);
930
+
931
+ h = ah5;
932
+ l = al5;
933
+
934
+ a = l & 0xffff; b = l >>> 16;
935
+ c = h & 0xffff; d = h >>> 16;
936
+
937
+ h = hh[5];
938
+ l = hl[5];
939
+
940
+ a += l & 0xffff; b += l >>> 16;
941
+ c += h & 0xffff; d += h >>> 16;
942
+
943
+ b += a >>> 16;
944
+ c += b >>> 16;
945
+ d += c >>> 16;
946
+
947
+ hh[5] = ah5 = (c & 0xffff) | (d << 16);
948
+ hl[5] = al5 = (a & 0xffff) | (b << 16);
949
+
950
+ h = ah6;
951
+ l = al6;
952
+
953
+ a = l & 0xffff; b = l >>> 16;
954
+ c = h & 0xffff; d = h >>> 16;
955
+
956
+ h = hh[6];
957
+ l = hl[6];
958
+
959
+ a += l & 0xffff; b += l >>> 16;
960
+ c += h & 0xffff; d += h >>> 16;
961
+
962
+ b += a >>> 16;
963
+ c += b >>> 16;
964
+ d += c >>> 16;
965
+
966
+ hh[6] = ah6 = (c & 0xffff) | (d << 16);
967
+ hl[6] = al6 = (a & 0xffff) | (b << 16);
968
+
969
+ h = ah7;
970
+ l = al7;
971
+
972
+ a = l & 0xffff; b = l >>> 16;
973
+ c = h & 0xffff; d = h >>> 16;
974
+
975
+ h = hh[7];
976
+ l = hl[7];
977
+
978
+ a += l & 0xffff; b += l >>> 16;
979
+ c += h & 0xffff; d += h >>> 16;
980
+
981
+ b += a >>> 16;
982
+ c += b >>> 16;
983
+ d += c >>> 16;
984
+
985
+ hh[7] = ah7 = (c & 0xffff) | (d << 16);
986
+ hl[7] = al7 = (a & 0xffff) | (b << 16);
987
+
988
+ pos += 128;
989
+ n -= 128;
990
+ }
991
+
992
+ return n;
993
+ }
994
+
995
+ function crypto_hash(out, m, n) {
996
+ var hh = new Int32Array(8),
997
+ hl = new Int32Array(8),
998
+ x = new Uint8Array(256),
999
+ i, b = n;
1000
+
1001
+ hh[0] = 0x6a09e667;
1002
+ hh[1] = 0xbb67ae85;
1003
+ hh[2] = 0x3c6ef372;
1004
+ hh[3] = 0xa54ff53a;
1005
+ hh[4] = 0x510e527f;
1006
+ hh[5] = 0x9b05688c;
1007
+ hh[6] = 0x1f83d9ab;
1008
+ hh[7] = 0x5be0cd19;
1009
+
1010
+ hl[0] = 0xf3bcc908;
1011
+ hl[1] = 0x84caa73b;
1012
+ hl[2] = 0xfe94f82b;
1013
+ hl[3] = 0x5f1d36f1;
1014
+ hl[4] = 0xade682d1;
1015
+ hl[5] = 0x2b3e6c1f;
1016
+ hl[6] = 0xfb41bd6b;
1017
+ hl[7] = 0x137e2179;
1018
+
1019
+ crypto_hashblocks_hl(hh, hl, m, n);
1020
+ n %= 128;
1021
+
1022
+ for (i = 0; i < n; i++) x[i] = m[b-n+i];
1023
+ x[n] = 128;
1024
+
1025
+ n = 256-128*(n<112?1:0);
1026
+ x[n-9] = 0;
1027
+ ts64(x, n-8, (b / 0x20000000) | 0, b << 3);
1028
+ crypto_hashblocks_hl(hh, hl, x, n);
1029
+
1030
+ for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);
1031
+
1032
+ return 0;
1033
+ }
1034
+
1035
+ function add(p, q) {
1036
+ var a = gf(), b = gf(), c = gf(),
1037
+ d = gf(), e = gf(), f = gf(),
1038
+ g = gf(), h = gf(), t = gf();
1039
+
1040
+ Z(a, p[1], p[0]);
1041
+ Z(t, q[1], q[0]);
1042
+ M(a, a, t);
1043
+ A(b, p[0], p[1]);
1044
+ A(t, q[0], q[1]);
1045
+ M(b, b, t);
1046
+ M(c, p[3], q[3]);
1047
+ M(c, c, D2);
1048
+ M(d, p[2], q[2]);
1049
+ A(d, d, d);
1050
+ Z(e, b, a);
1051
+ Z(f, d, c);
1052
+ A(g, d, c);
1053
+ A(h, b, a);
1054
+
1055
+ M(p[0], e, f);
1056
+ M(p[1], h, g);
1057
+ M(p[2], g, f);
1058
+ M(p[3], e, h);
1059
+ }
1060
+
1061
+ function cswap(p, q, b) {
1062
+ var i;
1063
+ for (i = 0; i < 4; i++) {
1064
+ sel25519(p[i], q[i], b);
1065
+ }
1066
+ }
1067
+
1068
+ function pack(r, p) {
1069
+ var tx = gf(), ty = gf(), zi = gf();
1070
+ inv25519(zi, p[2]);
1071
+ M(tx, p[0], zi);
1072
+ M(ty, p[1], zi);
1073
+ pack25519(r, ty);
1074
+ r[31] ^= par25519(tx) << 7;
1075
+ }
1076
+
1077
+ function scalarmult(p, q, s) {
1078
+ var b, i;
1079
+ set25519(p[0], gf0);
1080
+ set25519(p[1], gf1);
1081
+ set25519(p[2], gf1);
1082
+ set25519(p[3], gf0);
1083
+ for (i = 255; i >= 0; --i) {
1084
+ b = (s[(i/8)|0] >> (i&7)) & 1;
1085
+ cswap(p, q, b);
1086
+ add(q, p);
1087
+ add(p, p);
1088
+ cswap(p, q, b);
1089
+ }
1090
+ }
1091
+
1092
+ function scalarbase(p, s) {
1093
+ var q = [gf(), gf(), gf(), gf()];
1094
+ set25519(q[0], X);
1095
+ set25519(q[1], Y);
1096
+ set25519(q[2], gf1);
1097
+ M(q[3], X, Y);
1098
+ scalarmult(p, q, s);
1099
+ }
1100
+
1101
+ function crypto_sign_keypair(pk, sk, seeded) {
1102
+ var d = new Uint8Array(64);
1103
+ var p = [gf(), gf(), gf(), gf()];
1104
+ var i;
1105
+
1106
+ if (!seeded) randombytes(sk, 32);
1107
+ crypto_hash(d, sk, 32);
1108
+ d[0] &= 248;
1109
+ d[31] &= 127;
1110
+ d[31] |= 64;
1111
+
1112
+ scalarbase(p, d);
1113
+ pack(pk, p);
1114
+
1115
+ for (i = 0; i < 32; i++) sk[i+32] = pk[i];
1116
+ return 0;
1117
+ }
1118
+
1119
+ var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);
1120
+
1121
+ function modL(r, x) {
1122
+ var carry, i, j, k;
1123
+ for (i = 63; i >= 32; --i) {
1124
+ carry = 0;
1125
+ for (j = i - 32, k = i - 12; j < k; ++j) {
1126
+ x[j] += carry - 16 * x[i] * L[j - (i - 32)];
1127
+ carry = Math.floor((x[j] + 128) / 256);
1128
+ x[j] -= carry * 256;
1129
+ }
1130
+ x[j] += carry;
1131
+ x[i] = 0;
1132
+ }
1133
+ carry = 0;
1134
+ for (j = 0; j < 32; j++) {
1135
+ x[j] += carry - (x[31] >> 4) * L[j];
1136
+ carry = x[j] >> 8;
1137
+ x[j] &= 255;
1138
+ }
1139
+ for (j = 0; j < 32; j++) x[j] -= carry * L[j];
1140
+ for (i = 0; i < 32; i++) {
1141
+ x[i+1] += x[i] >> 8;
1142
+ r[i] = x[i] & 255;
1143
+ }
1144
+ }
1145
+
1146
+ function reduce(r) {
1147
+ var x = new Float64Array(64), i;
1148
+ for (i = 0; i < 64; i++) x[i] = r[i];
1149
+ for (i = 0; i < 64; i++) r[i] = 0;
1150
+ modL(r, x);
1151
+ }
1152
+
1153
+ // Note: difference from C - smlen returned, not passed as argument.
1154
+ function crypto_sign(sm, m, n, sk) {
1155
+ var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);
1156
+ var i, j, x = new Float64Array(64);
1157
+ var p = [gf(), gf(), gf(), gf()];
1158
+
1159
+ crypto_hash(d, sk, 32);
1160
+ d[0] &= 248;
1161
+ d[31] &= 127;
1162
+ d[31] |= 64;
1163
+
1164
+ var smlen = n + 64;
1165
+ for (i = 0; i < n; i++) sm[64 + i] = m[i];
1166
+ for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];
1167
+
1168
+ crypto_hash(r, sm.subarray(32), n+32);
1169
+ reduce(r);
1170
+ scalarbase(p, r);
1171
+ pack(sm, p);
1172
+
1173
+ for (i = 32; i < 64; i++) sm[i] = sk[i];
1174
+ crypto_hash(h, sm, n + 64);
1175
+ reduce(h);
1176
+
1177
+ for (i = 0; i < 64; i++) x[i] = 0;
1178
+ for (i = 0; i < 32; i++) x[i] = r[i];
1179
+ for (i = 0; i < 32; i++) {
1180
+ for (j = 0; j < 32; j++) {
1181
+ x[i+j] += h[i] * d[j];
1182
+ }
1183
+ }
1184
+
1185
+ modL(sm.subarray(32), x);
1186
+ return smlen;
1187
+ }
1188
+
1189
+ function unpackneg(r, p) {
1190
+ var t = gf(), chk = gf(), num = gf(),
1191
+ den = gf(), den2 = gf(), den4 = gf(),
1192
+ den6 = gf();
1193
+
1194
+ set25519(r[2], gf1);
1195
+ unpack25519(r[1], p);
1196
+ S(num, r[1]);
1197
+ M(den, num, D);
1198
+ Z(num, num, r[2]);
1199
+ A(den, r[2], den);
1200
+
1201
+ S(den2, den);
1202
+ S(den4, den2);
1203
+ M(den6, den4, den2);
1204
+ M(t, den6, num);
1205
+ M(t, t, den);
1206
+
1207
+ pow2523(t, t);
1208
+ M(t, t, num);
1209
+ M(t, t, den);
1210
+ M(t, t, den);
1211
+ M(r[0], t, den);
1212
+
1213
+ S(chk, r[0]);
1214
+ M(chk, chk, den);
1215
+ if (neq25519(chk, num)) M(r[0], r[0], I);
1216
+
1217
+ S(chk, r[0]);
1218
+ M(chk, chk, den);
1219
+ if (neq25519(chk, num)) return -1;
1220
+
1221
+ if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);
1222
+
1223
+ M(r[3], r[0], r[1]);
1224
+ return 0;
1225
+ }
1226
+
1227
+ function crypto_sign_open(m, sm, n, pk) {
1228
+ var i;
1229
+ var t = new Uint8Array(32), h = new Uint8Array(64);
1230
+ var p = [gf(), gf(), gf(), gf()],
1231
+ q = [gf(), gf(), gf(), gf()];
1232
+
1233
+ if (n < 64) return -1;
1234
+
1235
+ if (unpackneg(q, pk)) return -1;
1236
+
1237
+ for (i = 0; i < n; i++) m[i] = sm[i];
1238
+ for (i = 0; i < 32; i++) m[i+32] = pk[i];
1239
+ crypto_hash(h, m, n);
1240
+ reduce(h);
1241
+ scalarmult(p, q, h);
1242
+
1243
+ scalarbase(q, sm.subarray(32));
1244
+ add(p, q);
1245
+ pack(t, p);
1246
+
1247
+ n -= 64;
1248
+ if (crypto_verify_32(sm, 0, t, 0)) {
1249
+ for (i = 0; i < n; i++) m[i] = 0;
1250
+ return -1;
1251
+ }
1252
+
1253
+ for (i = 0; i < n; i++) m[i] = sm[i + 64];
1254
+ return n;
1255
+ }
1256
+
1257
+ var crypto_scalarmult_BYTES = 32,
1258
+ crypto_scalarmult_SCALARBYTES = 32,
1259
+ crypto_box_PUBLICKEYBYTES = 32,
1260
+ crypto_box_SECRETKEYBYTES = 32,
1261
+ crypto_sign_BYTES = 64,
1262
+ crypto_sign_PUBLICKEYBYTES = 32,
1263
+ crypto_sign_SECRETKEYBYTES = 64,
1264
+ crypto_sign_SEEDBYTES = 32;
1265
+
1266
+ function checkArrayTypes() {
1267
+ for (var i = 0; i < arguments.length; i++) {
1268
+ if (!(arguments[i] instanceof Uint8Array))
1269
+ throw new TypeError('unexpected type, use Uint8Array');
1270
+ }
1271
+ }
1272
+
1273
+ function cleanup(arr) {
1274
+ for (var i = 0; i < arr.length; i++) arr[i] = 0;
1275
+ }
1276
+
1277
+ nacl.scalarMult = function(n, p) {
1278
+ checkArrayTypes(n, p);
1279
+ if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');
1280
+ if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');
1281
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
1282
+ crypto_scalarmult(q, n, p);
1283
+ return q;
1284
+ };
1285
+
1286
+ nacl.box = {};
1287
+
1288
+ nacl.box.keyPair = function() {
1289
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
1290
+ var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);
1291
+ crypto_box_keypair(pk, sk);
1292
+ return {publicKey: pk, secretKey: sk};
1293
+ };
1294
+
1295
+ nacl.box.keyPair.fromSecretKey = function(secretKey) {
1296
+ checkArrayTypes(secretKey);
1297
+ if (secretKey.length !== crypto_box_SECRETKEYBYTES)
1298
+ throw new Error('bad secret key size');
1299
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
1300
+ crypto_scalarmult_base(pk, secretKey);
1301
+ return {publicKey: pk, secretKey: new Uint8Array(secretKey)};
1302
+ };
1303
+
1304
+ nacl.sign = function(msg, secretKey) {
1305
+ checkArrayTypes(msg, secretKey);
1306
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
1307
+ throw new Error('bad secret key size');
1308
+ var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);
1309
+ crypto_sign(signedMsg, msg, msg.length, secretKey);
1310
+ return signedMsg;
1311
+ };
1312
+
1313
+ nacl.sign.detached = function(msg, secretKey) {
1314
+ var signedMsg = nacl.sign(msg, secretKey);
1315
+ var sig = new Uint8Array(crypto_sign_BYTES);
1316
+ for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];
1317
+ return sig;
1318
+ };
1319
+
1320
+ nacl.sign.detached.verify = function(msg, sig, publicKey) {
1321
+ checkArrayTypes(msg, sig, publicKey);
1322
+ if (sig.length !== crypto_sign_BYTES)
1323
+ throw new Error('bad signature size');
1324
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
1325
+ throw new Error('bad public key size');
1326
+ var sm = new Uint8Array(crypto_sign_BYTES + msg.length);
1327
+ var m = new Uint8Array(crypto_sign_BYTES + msg.length);
1328
+ var i;
1329
+ for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];
1330
+ for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];
1331
+ return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);
1332
+ };
1333
+
1334
+ nacl.sign.keyPair = function() {
1335
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
1336
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
1337
+ crypto_sign_keypair(pk, sk);
1338
+ return {publicKey: pk, secretKey: sk};
1339
+ };
1340
+
1341
+ nacl.sign.keyPair.fromSecretKey = function(secretKey) {
1342
+ checkArrayTypes(secretKey);
1343
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
1344
+ throw new Error('bad secret key size');
1345
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
1346
+ for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];
1347
+ return {publicKey: pk, secretKey: new Uint8Array(secretKey)};
1348
+ };
1349
+
1350
+ nacl.sign.keyPair.fromSeed = function(seed) {
1351
+ checkArrayTypes(seed);
1352
+ if (seed.length !== crypto_sign_SEEDBYTES)
1353
+ throw new Error('bad seed size');
1354
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
1355
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
1356
+ for (var i = 0; i < 32; i++) sk[i] = seed[i];
1357
+ crypto_sign_keypair(pk, sk, true);
1358
+ return {publicKey: pk, secretKey: sk};
1359
+ };
1360
+
1361
+ nacl.setPRNG = function(fn) {
1362
+ randombytes = fn;
1363
+ };
1364
+
1365
+ (function() {
1366
+ // Initialize PRNG if environment provides CSPRNG.
1367
+ // If not, methods calling randombytes will throw.
1368
+ if (crypto && crypto.getRandomValues) {
1369
+ // Browsers and Node v16+
1370
+ var QUOTA = 65536;
1371
+ nacl.setPRNG(function(x, n) {
1372
+ var i, v = new Uint8Array(n);
1373
+ for (i = 0; i < n; i += QUOTA) {
1374
+ crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
1375
+ }
1376
+ for (i = 0; i < n; i++) x[i] = v[i];
1377
+ cleanup(v);
1378
+ });
1379
+ }
1380
+ })();
1381
+
1382
+ export { nacl as default };