@basmilius/apple-encryption 0.5.4

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.
package/dist/index.js ADDED
@@ -0,0 +1,3145 @@
1
+ import { createRequire } from "node:module";
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
18
+ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
29
+
30
+ // ../../node_modules/tweetnacl/nacl-fast.js
31
+ var require_nacl_fast = __commonJS((exports, module) => {
32
+ (function(nacl) {
33
+ var gf = function(init) {
34
+ var i, r = new Float64Array(16);
35
+ if (init)
36
+ for (i = 0;i < init.length; i++)
37
+ r[i] = init[i];
38
+ return r;
39
+ };
40
+ var randombytes = function() {
41
+ throw new Error("no PRNG");
42
+ };
43
+ var _0 = new Uint8Array(16);
44
+ var _9 = new Uint8Array(32);
45
+ _9[0] = 9;
46
+ var gf0 = gf(), gf1 = gf([1]), _121665 = gf([56129, 1]), D = gf([30883, 4953, 19914, 30187, 55467, 16705, 2637, 112, 59544, 30585, 16505, 36039, 65139, 11119, 27886, 20995]), D2 = gf([61785, 9906, 39828, 60374, 45398, 33411, 5274, 224, 53552, 61171, 33010, 6542, 64743, 22239, 55772, 9222]), X = gf([54554, 36645, 11616, 51542, 42930, 38181, 51040, 26924, 56412, 64982, 57905, 49316, 21502, 52590, 14035, 8553]), Y = gf([26200, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214]), I = gf([41136, 18958, 6951, 50414, 58488, 44335, 6150, 12099, 55207, 15867, 153, 11085, 57099, 20417, 9344, 11139]);
47
+ function ts64(x, i, h, l) {
48
+ x[i] = h >> 24 & 255;
49
+ x[i + 1] = h >> 16 & 255;
50
+ x[i + 2] = h >> 8 & 255;
51
+ x[i + 3] = h & 255;
52
+ x[i + 4] = l >> 24 & 255;
53
+ x[i + 5] = l >> 16 & 255;
54
+ x[i + 6] = l >> 8 & 255;
55
+ x[i + 7] = l & 255;
56
+ }
57
+ function vn(x, xi, y, yi, n) {
58
+ var i, d = 0;
59
+ for (i = 0;i < n; i++)
60
+ d |= x[xi + i] ^ y[yi + i];
61
+ return (1 & d - 1 >>> 8) - 1;
62
+ }
63
+ function crypto_verify_16(x, xi, y, yi) {
64
+ return vn(x, xi, y, yi, 16);
65
+ }
66
+ function crypto_verify_32(x, xi, y, yi) {
67
+ return vn(x, xi, y, yi, 32);
68
+ }
69
+ function core_salsa20(o, p, k, c) {
70
+ var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p[0] & 255 | (p[1] & 255) << 8 | (p[2] & 255) << 16 | (p[3] & 255) << 24, j7 = p[4] & 255 | (p[5] & 255) << 8 | (p[6] & 255) << 16 | (p[7] & 255) << 24, j8 = p[8] & 255 | (p[9] & 255) << 8 | (p[10] & 255) << 16 | (p[11] & 255) << 24, j9 = p[12] & 255 | (p[13] & 255) << 8 | (p[14] & 255) << 16 | (p[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
71
+ var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
72
+ for (var i = 0;i < 20; i += 2) {
73
+ u = x0 + x12 | 0;
74
+ x4 ^= u << 7 | u >>> 32 - 7;
75
+ u = x4 + x0 | 0;
76
+ x8 ^= u << 9 | u >>> 32 - 9;
77
+ u = x8 + x4 | 0;
78
+ x12 ^= u << 13 | u >>> 32 - 13;
79
+ u = x12 + x8 | 0;
80
+ x0 ^= u << 18 | u >>> 32 - 18;
81
+ u = x5 + x1 | 0;
82
+ x9 ^= u << 7 | u >>> 32 - 7;
83
+ u = x9 + x5 | 0;
84
+ x13 ^= u << 9 | u >>> 32 - 9;
85
+ u = x13 + x9 | 0;
86
+ x1 ^= u << 13 | u >>> 32 - 13;
87
+ u = x1 + x13 | 0;
88
+ x5 ^= u << 18 | u >>> 32 - 18;
89
+ u = x10 + x6 | 0;
90
+ x14 ^= u << 7 | u >>> 32 - 7;
91
+ u = x14 + x10 | 0;
92
+ x2 ^= u << 9 | u >>> 32 - 9;
93
+ u = x2 + x14 | 0;
94
+ x6 ^= u << 13 | u >>> 32 - 13;
95
+ u = x6 + x2 | 0;
96
+ x10 ^= u << 18 | u >>> 32 - 18;
97
+ u = x15 + x11 | 0;
98
+ x3 ^= u << 7 | u >>> 32 - 7;
99
+ u = x3 + x15 | 0;
100
+ x7 ^= u << 9 | u >>> 32 - 9;
101
+ u = x7 + x3 | 0;
102
+ x11 ^= u << 13 | u >>> 32 - 13;
103
+ u = x11 + x7 | 0;
104
+ x15 ^= u << 18 | u >>> 32 - 18;
105
+ u = x0 + x3 | 0;
106
+ x1 ^= u << 7 | u >>> 32 - 7;
107
+ u = x1 + x0 | 0;
108
+ x2 ^= u << 9 | u >>> 32 - 9;
109
+ u = x2 + x1 | 0;
110
+ x3 ^= u << 13 | u >>> 32 - 13;
111
+ u = x3 + x2 | 0;
112
+ x0 ^= u << 18 | u >>> 32 - 18;
113
+ u = x5 + x4 | 0;
114
+ x6 ^= u << 7 | u >>> 32 - 7;
115
+ u = x6 + x5 | 0;
116
+ x7 ^= u << 9 | u >>> 32 - 9;
117
+ u = x7 + x6 | 0;
118
+ x4 ^= u << 13 | u >>> 32 - 13;
119
+ u = x4 + x7 | 0;
120
+ x5 ^= u << 18 | u >>> 32 - 18;
121
+ u = x10 + x9 | 0;
122
+ x11 ^= u << 7 | u >>> 32 - 7;
123
+ u = x11 + x10 | 0;
124
+ x8 ^= u << 9 | u >>> 32 - 9;
125
+ u = x8 + x11 | 0;
126
+ x9 ^= u << 13 | u >>> 32 - 13;
127
+ u = x9 + x8 | 0;
128
+ x10 ^= u << 18 | u >>> 32 - 18;
129
+ u = x15 + x14 | 0;
130
+ x12 ^= u << 7 | u >>> 32 - 7;
131
+ u = x12 + x15 | 0;
132
+ x13 ^= u << 9 | u >>> 32 - 9;
133
+ u = x13 + x12 | 0;
134
+ x14 ^= u << 13 | u >>> 32 - 13;
135
+ u = x14 + x13 | 0;
136
+ x15 ^= u << 18 | u >>> 32 - 18;
137
+ }
138
+ x0 = x0 + j0 | 0;
139
+ x1 = x1 + j1 | 0;
140
+ x2 = x2 + j2 | 0;
141
+ x3 = x3 + j3 | 0;
142
+ x4 = x4 + j4 | 0;
143
+ x5 = x5 + j5 | 0;
144
+ x6 = x6 + j6 | 0;
145
+ x7 = x7 + j7 | 0;
146
+ x8 = x8 + j8 | 0;
147
+ x9 = x9 + j9 | 0;
148
+ x10 = x10 + j10 | 0;
149
+ x11 = x11 + j11 | 0;
150
+ x12 = x12 + j12 | 0;
151
+ x13 = x13 + j13 | 0;
152
+ x14 = x14 + j14 | 0;
153
+ x15 = x15 + j15 | 0;
154
+ o[0] = x0 >>> 0 & 255;
155
+ o[1] = x0 >>> 8 & 255;
156
+ o[2] = x0 >>> 16 & 255;
157
+ o[3] = x0 >>> 24 & 255;
158
+ o[4] = x1 >>> 0 & 255;
159
+ o[5] = x1 >>> 8 & 255;
160
+ o[6] = x1 >>> 16 & 255;
161
+ o[7] = x1 >>> 24 & 255;
162
+ o[8] = x2 >>> 0 & 255;
163
+ o[9] = x2 >>> 8 & 255;
164
+ o[10] = x2 >>> 16 & 255;
165
+ o[11] = x2 >>> 24 & 255;
166
+ o[12] = x3 >>> 0 & 255;
167
+ o[13] = x3 >>> 8 & 255;
168
+ o[14] = x3 >>> 16 & 255;
169
+ o[15] = x3 >>> 24 & 255;
170
+ o[16] = x4 >>> 0 & 255;
171
+ o[17] = x4 >>> 8 & 255;
172
+ o[18] = x4 >>> 16 & 255;
173
+ o[19] = x4 >>> 24 & 255;
174
+ o[20] = x5 >>> 0 & 255;
175
+ o[21] = x5 >>> 8 & 255;
176
+ o[22] = x5 >>> 16 & 255;
177
+ o[23] = x5 >>> 24 & 255;
178
+ o[24] = x6 >>> 0 & 255;
179
+ o[25] = x6 >>> 8 & 255;
180
+ o[26] = x6 >>> 16 & 255;
181
+ o[27] = x6 >>> 24 & 255;
182
+ o[28] = x7 >>> 0 & 255;
183
+ o[29] = x7 >>> 8 & 255;
184
+ o[30] = x7 >>> 16 & 255;
185
+ o[31] = x7 >>> 24 & 255;
186
+ o[32] = x8 >>> 0 & 255;
187
+ o[33] = x8 >>> 8 & 255;
188
+ o[34] = x8 >>> 16 & 255;
189
+ o[35] = x8 >>> 24 & 255;
190
+ o[36] = x9 >>> 0 & 255;
191
+ o[37] = x9 >>> 8 & 255;
192
+ o[38] = x9 >>> 16 & 255;
193
+ o[39] = x9 >>> 24 & 255;
194
+ o[40] = x10 >>> 0 & 255;
195
+ o[41] = x10 >>> 8 & 255;
196
+ o[42] = x10 >>> 16 & 255;
197
+ o[43] = x10 >>> 24 & 255;
198
+ o[44] = x11 >>> 0 & 255;
199
+ o[45] = x11 >>> 8 & 255;
200
+ o[46] = x11 >>> 16 & 255;
201
+ o[47] = x11 >>> 24 & 255;
202
+ o[48] = x12 >>> 0 & 255;
203
+ o[49] = x12 >>> 8 & 255;
204
+ o[50] = x12 >>> 16 & 255;
205
+ o[51] = x12 >>> 24 & 255;
206
+ o[52] = x13 >>> 0 & 255;
207
+ o[53] = x13 >>> 8 & 255;
208
+ o[54] = x13 >>> 16 & 255;
209
+ o[55] = x13 >>> 24 & 255;
210
+ o[56] = x14 >>> 0 & 255;
211
+ o[57] = x14 >>> 8 & 255;
212
+ o[58] = x14 >>> 16 & 255;
213
+ o[59] = x14 >>> 24 & 255;
214
+ o[60] = x15 >>> 0 & 255;
215
+ o[61] = x15 >>> 8 & 255;
216
+ o[62] = x15 >>> 16 & 255;
217
+ o[63] = x15 >>> 24 & 255;
218
+ }
219
+ function core_hsalsa20(o, p, k, c) {
220
+ var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p[0] & 255 | (p[1] & 255) << 8 | (p[2] & 255) << 16 | (p[3] & 255) << 24, j7 = p[4] & 255 | (p[5] & 255) << 8 | (p[6] & 255) << 16 | (p[7] & 255) << 24, j8 = p[8] & 255 | (p[9] & 255) << 8 | (p[10] & 255) << 16 | (p[11] & 255) << 24, j9 = p[12] & 255 | (p[13] & 255) << 8 | (p[14] & 255) << 16 | (p[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
221
+ var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
222
+ for (var i = 0;i < 20; i += 2) {
223
+ u = x0 + x12 | 0;
224
+ x4 ^= u << 7 | u >>> 32 - 7;
225
+ u = x4 + x0 | 0;
226
+ x8 ^= u << 9 | u >>> 32 - 9;
227
+ u = x8 + x4 | 0;
228
+ x12 ^= u << 13 | u >>> 32 - 13;
229
+ u = x12 + x8 | 0;
230
+ x0 ^= u << 18 | u >>> 32 - 18;
231
+ u = x5 + x1 | 0;
232
+ x9 ^= u << 7 | u >>> 32 - 7;
233
+ u = x9 + x5 | 0;
234
+ x13 ^= u << 9 | u >>> 32 - 9;
235
+ u = x13 + x9 | 0;
236
+ x1 ^= u << 13 | u >>> 32 - 13;
237
+ u = x1 + x13 | 0;
238
+ x5 ^= u << 18 | u >>> 32 - 18;
239
+ u = x10 + x6 | 0;
240
+ x14 ^= u << 7 | u >>> 32 - 7;
241
+ u = x14 + x10 | 0;
242
+ x2 ^= u << 9 | u >>> 32 - 9;
243
+ u = x2 + x14 | 0;
244
+ x6 ^= u << 13 | u >>> 32 - 13;
245
+ u = x6 + x2 | 0;
246
+ x10 ^= u << 18 | u >>> 32 - 18;
247
+ u = x15 + x11 | 0;
248
+ x3 ^= u << 7 | u >>> 32 - 7;
249
+ u = x3 + x15 | 0;
250
+ x7 ^= u << 9 | u >>> 32 - 9;
251
+ u = x7 + x3 | 0;
252
+ x11 ^= u << 13 | u >>> 32 - 13;
253
+ u = x11 + x7 | 0;
254
+ x15 ^= u << 18 | u >>> 32 - 18;
255
+ u = x0 + x3 | 0;
256
+ x1 ^= u << 7 | u >>> 32 - 7;
257
+ u = x1 + x0 | 0;
258
+ x2 ^= u << 9 | u >>> 32 - 9;
259
+ u = x2 + x1 | 0;
260
+ x3 ^= u << 13 | u >>> 32 - 13;
261
+ u = x3 + x2 | 0;
262
+ x0 ^= u << 18 | u >>> 32 - 18;
263
+ u = x5 + x4 | 0;
264
+ x6 ^= u << 7 | u >>> 32 - 7;
265
+ u = x6 + x5 | 0;
266
+ x7 ^= u << 9 | u >>> 32 - 9;
267
+ u = x7 + x6 | 0;
268
+ x4 ^= u << 13 | u >>> 32 - 13;
269
+ u = x4 + x7 | 0;
270
+ x5 ^= u << 18 | u >>> 32 - 18;
271
+ u = x10 + x9 | 0;
272
+ x11 ^= u << 7 | u >>> 32 - 7;
273
+ u = x11 + x10 | 0;
274
+ x8 ^= u << 9 | u >>> 32 - 9;
275
+ u = x8 + x11 | 0;
276
+ x9 ^= u << 13 | u >>> 32 - 13;
277
+ u = x9 + x8 | 0;
278
+ x10 ^= u << 18 | u >>> 32 - 18;
279
+ u = x15 + x14 | 0;
280
+ x12 ^= u << 7 | u >>> 32 - 7;
281
+ u = x12 + x15 | 0;
282
+ x13 ^= u << 9 | u >>> 32 - 9;
283
+ u = x13 + x12 | 0;
284
+ x14 ^= u << 13 | u >>> 32 - 13;
285
+ u = x14 + x13 | 0;
286
+ x15 ^= u << 18 | u >>> 32 - 18;
287
+ }
288
+ o[0] = x0 >>> 0 & 255;
289
+ o[1] = x0 >>> 8 & 255;
290
+ o[2] = x0 >>> 16 & 255;
291
+ o[3] = x0 >>> 24 & 255;
292
+ o[4] = x5 >>> 0 & 255;
293
+ o[5] = x5 >>> 8 & 255;
294
+ o[6] = x5 >>> 16 & 255;
295
+ o[7] = x5 >>> 24 & 255;
296
+ o[8] = x10 >>> 0 & 255;
297
+ o[9] = x10 >>> 8 & 255;
298
+ o[10] = x10 >>> 16 & 255;
299
+ o[11] = x10 >>> 24 & 255;
300
+ o[12] = x15 >>> 0 & 255;
301
+ o[13] = x15 >>> 8 & 255;
302
+ o[14] = x15 >>> 16 & 255;
303
+ o[15] = x15 >>> 24 & 255;
304
+ o[16] = x6 >>> 0 & 255;
305
+ o[17] = x6 >>> 8 & 255;
306
+ o[18] = x6 >>> 16 & 255;
307
+ o[19] = x6 >>> 24 & 255;
308
+ o[20] = x7 >>> 0 & 255;
309
+ o[21] = x7 >>> 8 & 255;
310
+ o[22] = x7 >>> 16 & 255;
311
+ o[23] = x7 >>> 24 & 255;
312
+ o[24] = x8 >>> 0 & 255;
313
+ o[25] = x8 >>> 8 & 255;
314
+ o[26] = x8 >>> 16 & 255;
315
+ o[27] = x8 >>> 24 & 255;
316
+ o[28] = x9 >>> 0 & 255;
317
+ o[29] = x9 >>> 8 & 255;
318
+ o[30] = x9 >>> 16 & 255;
319
+ o[31] = x9 >>> 24 & 255;
320
+ }
321
+ function crypto_core_salsa20(out, inp, k, c) {
322
+ core_salsa20(out, inp, k, c);
323
+ }
324
+ function crypto_core_hsalsa20(out, inp, k, c) {
325
+ core_hsalsa20(out, inp, k, c);
326
+ }
327
+ var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
328
+ function crypto_stream_salsa20_xor(c, cpos, m, mpos, b, n, k) {
329
+ var z = new Uint8Array(16), x = new Uint8Array(64);
330
+ var u, i;
331
+ for (i = 0;i < 16; i++)
332
+ z[i] = 0;
333
+ for (i = 0;i < 8; i++)
334
+ z[i] = n[i];
335
+ while (b >= 64) {
336
+ crypto_core_salsa20(x, z, k, sigma);
337
+ for (i = 0;i < 64; i++)
338
+ c[cpos + i] = m[mpos + i] ^ x[i];
339
+ u = 1;
340
+ for (i = 8;i < 16; i++) {
341
+ u = u + (z[i] & 255) | 0;
342
+ z[i] = u & 255;
343
+ u >>>= 8;
344
+ }
345
+ b -= 64;
346
+ cpos += 64;
347
+ mpos += 64;
348
+ }
349
+ if (b > 0) {
350
+ crypto_core_salsa20(x, z, k, sigma);
351
+ for (i = 0;i < b; i++)
352
+ c[cpos + i] = m[mpos + i] ^ x[i];
353
+ }
354
+ return 0;
355
+ }
356
+ function crypto_stream_salsa20(c, cpos, b, n, k) {
357
+ var z = new Uint8Array(16), x = new Uint8Array(64);
358
+ var u, i;
359
+ for (i = 0;i < 16; i++)
360
+ z[i] = 0;
361
+ for (i = 0;i < 8; i++)
362
+ z[i] = n[i];
363
+ while (b >= 64) {
364
+ crypto_core_salsa20(x, z, k, sigma);
365
+ for (i = 0;i < 64; i++)
366
+ c[cpos + i] = x[i];
367
+ u = 1;
368
+ for (i = 8;i < 16; i++) {
369
+ u = u + (z[i] & 255) | 0;
370
+ z[i] = u & 255;
371
+ u >>>= 8;
372
+ }
373
+ b -= 64;
374
+ cpos += 64;
375
+ }
376
+ if (b > 0) {
377
+ crypto_core_salsa20(x, z, k, sigma);
378
+ for (i = 0;i < b; i++)
379
+ c[cpos + i] = x[i];
380
+ }
381
+ return 0;
382
+ }
383
+ function crypto_stream(c, cpos, d, n, k) {
384
+ var s = new Uint8Array(32);
385
+ crypto_core_hsalsa20(s, n, k, sigma);
386
+ var sn = new Uint8Array(8);
387
+ for (var i = 0;i < 8; i++)
388
+ sn[i] = n[i + 16];
389
+ return crypto_stream_salsa20(c, cpos, d, sn, s);
390
+ }
391
+ function crypto_stream_xor(c, cpos, m, mpos, d, n, k) {
392
+ var s = new Uint8Array(32);
393
+ crypto_core_hsalsa20(s, n, k, sigma);
394
+ var sn = new Uint8Array(8);
395
+ for (var i = 0;i < 8; i++)
396
+ sn[i] = n[i + 16];
397
+ return crypto_stream_salsa20_xor(c, cpos, m, mpos, d, sn, s);
398
+ }
399
+ var poly1305 = function(key) {
400
+ this.buffer = new Uint8Array(16);
401
+ this.r = new Uint16Array(10);
402
+ this.h = new Uint16Array(10);
403
+ this.pad = new Uint16Array(8);
404
+ this.leftover = 0;
405
+ this.fin = 0;
406
+ var t0, t1, t2, t3, t4, t5, t6, t7;
407
+ t0 = key[0] & 255 | (key[1] & 255) << 8;
408
+ this.r[0] = t0 & 8191;
409
+ t1 = key[2] & 255 | (key[3] & 255) << 8;
410
+ this.r[1] = (t0 >>> 13 | t1 << 3) & 8191;
411
+ t2 = key[4] & 255 | (key[5] & 255) << 8;
412
+ this.r[2] = (t1 >>> 10 | t2 << 6) & 7939;
413
+ t3 = key[6] & 255 | (key[7] & 255) << 8;
414
+ this.r[3] = (t2 >>> 7 | t3 << 9) & 8191;
415
+ t4 = key[8] & 255 | (key[9] & 255) << 8;
416
+ this.r[4] = (t3 >>> 4 | t4 << 12) & 255;
417
+ this.r[5] = t4 >>> 1 & 8190;
418
+ t5 = key[10] & 255 | (key[11] & 255) << 8;
419
+ this.r[6] = (t4 >>> 14 | t5 << 2) & 8191;
420
+ t6 = key[12] & 255 | (key[13] & 255) << 8;
421
+ this.r[7] = (t5 >>> 11 | t6 << 5) & 8065;
422
+ t7 = key[14] & 255 | (key[15] & 255) << 8;
423
+ this.r[8] = (t6 >>> 8 | t7 << 8) & 8191;
424
+ this.r[9] = t7 >>> 5 & 127;
425
+ this.pad[0] = key[16] & 255 | (key[17] & 255) << 8;
426
+ this.pad[1] = key[18] & 255 | (key[19] & 255) << 8;
427
+ this.pad[2] = key[20] & 255 | (key[21] & 255) << 8;
428
+ this.pad[3] = key[22] & 255 | (key[23] & 255) << 8;
429
+ this.pad[4] = key[24] & 255 | (key[25] & 255) << 8;
430
+ this.pad[5] = key[26] & 255 | (key[27] & 255) << 8;
431
+ this.pad[6] = key[28] & 255 | (key[29] & 255) << 8;
432
+ this.pad[7] = key[30] & 255 | (key[31] & 255) << 8;
433
+ };
434
+ poly1305.prototype.blocks = function(m, mpos, bytes) {
435
+ var hibit = this.fin ? 0 : 1 << 11;
436
+ var t0, t1, t2, t3, t4, t5, t6, t7, c;
437
+ var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;
438
+ var h0 = this.h[0], h1 = this.h[1], h2 = this.h[2], h3 = this.h[3], h4 = this.h[4], h5 = this.h[5], h6 = this.h[6], h7 = this.h[7], h8 = this.h[8], h9 = this.h[9];
439
+ var r0 = this.r[0], r1 = this.r[1], r2 = this.r[2], r3 = this.r[3], r4 = this.r[4], r5 = this.r[5], r6 = this.r[6], r7 = this.r[7], r8 = this.r[8], r9 = this.r[9];
440
+ while (bytes >= 16) {
441
+ t0 = m[mpos + 0] & 255 | (m[mpos + 1] & 255) << 8;
442
+ h0 += t0 & 8191;
443
+ t1 = m[mpos + 2] & 255 | (m[mpos + 3] & 255) << 8;
444
+ h1 += (t0 >>> 13 | t1 << 3) & 8191;
445
+ t2 = m[mpos + 4] & 255 | (m[mpos + 5] & 255) << 8;
446
+ h2 += (t1 >>> 10 | t2 << 6) & 8191;
447
+ t3 = m[mpos + 6] & 255 | (m[mpos + 7] & 255) << 8;
448
+ h3 += (t2 >>> 7 | t3 << 9) & 8191;
449
+ t4 = m[mpos + 8] & 255 | (m[mpos + 9] & 255) << 8;
450
+ h4 += (t3 >>> 4 | t4 << 12) & 8191;
451
+ h5 += t4 >>> 1 & 8191;
452
+ t5 = m[mpos + 10] & 255 | (m[mpos + 11] & 255) << 8;
453
+ h6 += (t4 >>> 14 | t5 << 2) & 8191;
454
+ t6 = m[mpos + 12] & 255 | (m[mpos + 13] & 255) << 8;
455
+ h7 += (t5 >>> 11 | t6 << 5) & 8191;
456
+ t7 = m[mpos + 14] & 255 | (m[mpos + 15] & 255) << 8;
457
+ h8 += (t6 >>> 8 | t7 << 8) & 8191;
458
+ h9 += t7 >>> 5 | hibit;
459
+ c = 0;
460
+ d0 = c;
461
+ d0 += h0 * r0;
462
+ d0 += h1 * (5 * r9);
463
+ d0 += h2 * (5 * r8);
464
+ d0 += h3 * (5 * r7);
465
+ d0 += h4 * (5 * r6);
466
+ c = d0 >>> 13;
467
+ d0 &= 8191;
468
+ d0 += h5 * (5 * r5);
469
+ d0 += h6 * (5 * r4);
470
+ d0 += h7 * (5 * r3);
471
+ d0 += h8 * (5 * r2);
472
+ d0 += h9 * (5 * r1);
473
+ c += d0 >>> 13;
474
+ d0 &= 8191;
475
+ d1 = c;
476
+ d1 += h0 * r1;
477
+ d1 += h1 * r0;
478
+ d1 += h2 * (5 * r9);
479
+ d1 += h3 * (5 * r8);
480
+ d1 += h4 * (5 * r7);
481
+ c = d1 >>> 13;
482
+ d1 &= 8191;
483
+ d1 += h5 * (5 * r6);
484
+ d1 += h6 * (5 * r5);
485
+ d1 += h7 * (5 * r4);
486
+ d1 += h8 * (5 * r3);
487
+ d1 += h9 * (5 * r2);
488
+ c += d1 >>> 13;
489
+ d1 &= 8191;
490
+ d2 = c;
491
+ d2 += h0 * r2;
492
+ d2 += h1 * r1;
493
+ d2 += h2 * r0;
494
+ d2 += h3 * (5 * r9);
495
+ d2 += h4 * (5 * r8);
496
+ c = d2 >>> 13;
497
+ d2 &= 8191;
498
+ d2 += h5 * (5 * r7);
499
+ d2 += h6 * (5 * r6);
500
+ d2 += h7 * (5 * r5);
501
+ d2 += h8 * (5 * r4);
502
+ d2 += h9 * (5 * r3);
503
+ c += d2 >>> 13;
504
+ d2 &= 8191;
505
+ d3 = c;
506
+ d3 += h0 * r3;
507
+ d3 += h1 * r2;
508
+ d3 += h2 * r1;
509
+ d3 += h3 * r0;
510
+ d3 += h4 * (5 * r9);
511
+ c = d3 >>> 13;
512
+ d3 &= 8191;
513
+ d3 += h5 * (5 * r8);
514
+ d3 += h6 * (5 * r7);
515
+ d3 += h7 * (5 * r6);
516
+ d3 += h8 * (5 * r5);
517
+ d3 += h9 * (5 * r4);
518
+ c += d3 >>> 13;
519
+ d3 &= 8191;
520
+ d4 = c;
521
+ d4 += h0 * r4;
522
+ d4 += h1 * r3;
523
+ d4 += h2 * r2;
524
+ d4 += h3 * r1;
525
+ d4 += h4 * r0;
526
+ c = d4 >>> 13;
527
+ d4 &= 8191;
528
+ d4 += h5 * (5 * r9);
529
+ d4 += h6 * (5 * r8);
530
+ d4 += h7 * (5 * r7);
531
+ d4 += h8 * (5 * r6);
532
+ d4 += h9 * (5 * r5);
533
+ c += d4 >>> 13;
534
+ d4 &= 8191;
535
+ d5 = c;
536
+ d5 += h0 * r5;
537
+ d5 += h1 * r4;
538
+ d5 += h2 * r3;
539
+ d5 += h3 * r2;
540
+ d5 += h4 * r1;
541
+ c = d5 >>> 13;
542
+ d5 &= 8191;
543
+ d5 += h5 * r0;
544
+ d5 += h6 * (5 * r9);
545
+ d5 += h7 * (5 * r8);
546
+ d5 += h8 * (5 * r7);
547
+ d5 += h9 * (5 * r6);
548
+ c += d5 >>> 13;
549
+ d5 &= 8191;
550
+ d6 = c;
551
+ d6 += h0 * r6;
552
+ d6 += h1 * r5;
553
+ d6 += h2 * r4;
554
+ d6 += h3 * r3;
555
+ d6 += h4 * r2;
556
+ c = d6 >>> 13;
557
+ d6 &= 8191;
558
+ d6 += h5 * r1;
559
+ d6 += h6 * r0;
560
+ d6 += h7 * (5 * r9);
561
+ d6 += h8 * (5 * r8);
562
+ d6 += h9 * (5 * r7);
563
+ c += d6 >>> 13;
564
+ d6 &= 8191;
565
+ d7 = c;
566
+ d7 += h0 * r7;
567
+ d7 += h1 * r6;
568
+ d7 += h2 * r5;
569
+ d7 += h3 * r4;
570
+ d7 += h4 * r3;
571
+ c = d7 >>> 13;
572
+ d7 &= 8191;
573
+ d7 += h5 * r2;
574
+ d7 += h6 * r1;
575
+ d7 += h7 * r0;
576
+ d7 += h8 * (5 * r9);
577
+ d7 += h9 * (5 * r8);
578
+ c += d7 >>> 13;
579
+ d7 &= 8191;
580
+ d8 = c;
581
+ d8 += h0 * r8;
582
+ d8 += h1 * r7;
583
+ d8 += h2 * r6;
584
+ d8 += h3 * r5;
585
+ d8 += h4 * r4;
586
+ c = d8 >>> 13;
587
+ d8 &= 8191;
588
+ d8 += h5 * r3;
589
+ d8 += h6 * r2;
590
+ d8 += h7 * r1;
591
+ d8 += h8 * r0;
592
+ d8 += h9 * (5 * r9);
593
+ c += d8 >>> 13;
594
+ d8 &= 8191;
595
+ d9 = c;
596
+ d9 += h0 * r9;
597
+ d9 += h1 * r8;
598
+ d9 += h2 * r7;
599
+ d9 += h3 * r6;
600
+ d9 += h4 * r5;
601
+ c = d9 >>> 13;
602
+ d9 &= 8191;
603
+ d9 += h5 * r4;
604
+ d9 += h6 * r3;
605
+ d9 += h7 * r2;
606
+ d9 += h8 * r1;
607
+ d9 += h9 * r0;
608
+ c += d9 >>> 13;
609
+ d9 &= 8191;
610
+ c = (c << 2) + c | 0;
611
+ c = c + d0 | 0;
612
+ d0 = c & 8191;
613
+ c = c >>> 13;
614
+ d1 += c;
615
+ h0 = d0;
616
+ h1 = d1;
617
+ h2 = d2;
618
+ h3 = d3;
619
+ h4 = d4;
620
+ h5 = d5;
621
+ h6 = d6;
622
+ h7 = d7;
623
+ h8 = d8;
624
+ h9 = d9;
625
+ mpos += 16;
626
+ bytes -= 16;
627
+ }
628
+ this.h[0] = h0;
629
+ this.h[1] = h1;
630
+ this.h[2] = h2;
631
+ this.h[3] = h3;
632
+ this.h[4] = h4;
633
+ this.h[5] = h5;
634
+ this.h[6] = h6;
635
+ this.h[7] = h7;
636
+ this.h[8] = h8;
637
+ this.h[9] = h9;
638
+ };
639
+ poly1305.prototype.finish = function(mac, macpos) {
640
+ var g = new Uint16Array(10);
641
+ var c, mask, f, i;
642
+ if (this.leftover) {
643
+ i = this.leftover;
644
+ this.buffer[i++] = 1;
645
+ for (;i < 16; i++)
646
+ this.buffer[i] = 0;
647
+ this.fin = 1;
648
+ this.blocks(this.buffer, 0, 16);
649
+ }
650
+ c = this.h[1] >>> 13;
651
+ this.h[1] &= 8191;
652
+ for (i = 2;i < 10; i++) {
653
+ this.h[i] += c;
654
+ c = this.h[i] >>> 13;
655
+ this.h[i] &= 8191;
656
+ }
657
+ this.h[0] += c * 5;
658
+ c = this.h[0] >>> 13;
659
+ this.h[0] &= 8191;
660
+ this.h[1] += c;
661
+ c = this.h[1] >>> 13;
662
+ this.h[1] &= 8191;
663
+ this.h[2] += c;
664
+ g[0] = this.h[0] + 5;
665
+ c = g[0] >>> 13;
666
+ g[0] &= 8191;
667
+ for (i = 1;i < 10; i++) {
668
+ g[i] = this.h[i] + c;
669
+ c = g[i] >>> 13;
670
+ g[i] &= 8191;
671
+ }
672
+ g[9] -= 1 << 13;
673
+ mask = (c ^ 1) - 1;
674
+ for (i = 0;i < 10; i++)
675
+ g[i] &= mask;
676
+ mask = ~mask;
677
+ for (i = 0;i < 10; i++)
678
+ this.h[i] = this.h[i] & mask | g[i];
679
+ this.h[0] = (this.h[0] | this.h[1] << 13) & 65535;
680
+ this.h[1] = (this.h[1] >>> 3 | this.h[2] << 10) & 65535;
681
+ this.h[2] = (this.h[2] >>> 6 | this.h[3] << 7) & 65535;
682
+ this.h[3] = (this.h[3] >>> 9 | this.h[4] << 4) & 65535;
683
+ this.h[4] = (this.h[4] >>> 12 | this.h[5] << 1 | this.h[6] << 14) & 65535;
684
+ this.h[5] = (this.h[6] >>> 2 | this.h[7] << 11) & 65535;
685
+ this.h[6] = (this.h[7] >>> 5 | this.h[8] << 8) & 65535;
686
+ this.h[7] = (this.h[8] >>> 8 | this.h[9] << 5) & 65535;
687
+ f = this.h[0] + this.pad[0];
688
+ this.h[0] = f & 65535;
689
+ for (i = 1;i < 8; i++) {
690
+ f = (this.h[i] + this.pad[i] | 0) + (f >>> 16) | 0;
691
+ this.h[i] = f & 65535;
692
+ }
693
+ mac[macpos + 0] = this.h[0] >>> 0 & 255;
694
+ mac[macpos + 1] = this.h[0] >>> 8 & 255;
695
+ mac[macpos + 2] = this.h[1] >>> 0 & 255;
696
+ mac[macpos + 3] = this.h[1] >>> 8 & 255;
697
+ mac[macpos + 4] = this.h[2] >>> 0 & 255;
698
+ mac[macpos + 5] = this.h[2] >>> 8 & 255;
699
+ mac[macpos + 6] = this.h[3] >>> 0 & 255;
700
+ mac[macpos + 7] = this.h[3] >>> 8 & 255;
701
+ mac[macpos + 8] = this.h[4] >>> 0 & 255;
702
+ mac[macpos + 9] = this.h[4] >>> 8 & 255;
703
+ mac[macpos + 10] = this.h[5] >>> 0 & 255;
704
+ mac[macpos + 11] = this.h[5] >>> 8 & 255;
705
+ mac[macpos + 12] = this.h[6] >>> 0 & 255;
706
+ mac[macpos + 13] = this.h[6] >>> 8 & 255;
707
+ mac[macpos + 14] = this.h[7] >>> 0 & 255;
708
+ mac[macpos + 15] = this.h[7] >>> 8 & 255;
709
+ };
710
+ poly1305.prototype.update = function(m, mpos, bytes) {
711
+ var i, want;
712
+ if (this.leftover) {
713
+ want = 16 - this.leftover;
714
+ if (want > bytes)
715
+ want = bytes;
716
+ for (i = 0;i < want; i++)
717
+ this.buffer[this.leftover + i] = m[mpos + i];
718
+ bytes -= want;
719
+ mpos += want;
720
+ this.leftover += want;
721
+ if (this.leftover < 16)
722
+ return;
723
+ this.blocks(this.buffer, 0, 16);
724
+ this.leftover = 0;
725
+ }
726
+ if (bytes >= 16) {
727
+ want = bytes - bytes % 16;
728
+ this.blocks(m, mpos, want);
729
+ mpos += want;
730
+ bytes -= want;
731
+ }
732
+ if (bytes) {
733
+ for (i = 0;i < bytes; i++)
734
+ this.buffer[this.leftover + i] = m[mpos + i];
735
+ this.leftover += bytes;
736
+ }
737
+ };
738
+ function crypto_onetimeauth(out, outpos, m, mpos, n, k) {
739
+ var s = new poly1305(k);
740
+ s.update(m, mpos, n);
741
+ s.finish(out, outpos);
742
+ return 0;
743
+ }
744
+ function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {
745
+ var x = new Uint8Array(16);
746
+ crypto_onetimeauth(x, 0, m, mpos, n, k);
747
+ return crypto_verify_16(h, hpos, x, 0);
748
+ }
749
+ function crypto_secretbox(c, m, d, n, k) {
750
+ var i;
751
+ if (d < 32)
752
+ return -1;
753
+ crypto_stream_xor(c, 0, m, 0, d, n, k);
754
+ crypto_onetimeauth(c, 16, c, 32, d - 32, c);
755
+ for (i = 0;i < 16; i++)
756
+ c[i] = 0;
757
+ return 0;
758
+ }
759
+ function crypto_secretbox_open(m, c, d, n, k) {
760
+ var i;
761
+ var x = new Uint8Array(32);
762
+ if (d < 32)
763
+ return -1;
764
+ crypto_stream(x, 0, 32, n, k);
765
+ if (crypto_onetimeauth_verify(c, 16, c, 32, d - 32, x) !== 0)
766
+ return -1;
767
+ crypto_stream_xor(m, 0, c, 0, d, n, k);
768
+ for (i = 0;i < 32; i++)
769
+ m[i] = 0;
770
+ return 0;
771
+ }
772
+ function set25519(r, a) {
773
+ var i;
774
+ for (i = 0;i < 16; i++)
775
+ r[i] = a[i] | 0;
776
+ }
777
+ function car25519(o) {
778
+ var i, v, c = 1;
779
+ for (i = 0;i < 16; i++) {
780
+ v = o[i] + c + 65535;
781
+ c = Math.floor(v / 65536);
782
+ o[i] = v - c * 65536;
783
+ }
784
+ o[0] += c - 1 + 37 * (c - 1);
785
+ }
786
+ function sel25519(p, q, b) {
787
+ var t, c = ~(b - 1);
788
+ for (var i = 0;i < 16; i++) {
789
+ t = c & (p[i] ^ q[i]);
790
+ p[i] ^= t;
791
+ q[i] ^= t;
792
+ }
793
+ }
794
+ function pack25519(o, n) {
795
+ var i, j, b;
796
+ var m = gf(), t = gf();
797
+ for (i = 0;i < 16; i++)
798
+ t[i] = n[i];
799
+ car25519(t);
800
+ car25519(t);
801
+ car25519(t);
802
+ for (j = 0;j < 2; j++) {
803
+ m[0] = t[0] - 65517;
804
+ for (i = 1;i < 15; i++) {
805
+ m[i] = t[i] - 65535 - (m[i - 1] >> 16 & 1);
806
+ m[i - 1] &= 65535;
807
+ }
808
+ m[15] = t[15] - 32767 - (m[14] >> 16 & 1);
809
+ b = m[15] >> 16 & 1;
810
+ m[14] &= 65535;
811
+ sel25519(t, m, 1 - b);
812
+ }
813
+ for (i = 0;i < 16; i++) {
814
+ o[2 * i] = t[i] & 255;
815
+ o[2 * i + 1] = t[i] >> 8;
816
+ }
817
+ }
818
+ function neq25519(a, b) {
819
+ var c = new Uint8Array(32), d = new Uint8Array(32);
820
+ pack25519(c, a);
821
+ pack25519(d, b);
822
+ return crypto_verify_32(c, 0, d, 0);
823
+ }
824
+ function par25519(a) {
825
+ var d = new Uint8Array(32);
826
+ pack25519(d, a);
827
+ return d[0] & 1;
828
+ }
829
+ function unpack25519(o, n) {
830
+ var i;
831
+ for (i = 0;i < 16; i++)
832
+ o[i] = n[2 * i] + (n[2 * i + 1] << 8);
833
+ o[15] &= 32767;
834
+ }
835
+ function A(o, a, b) {
836
+ for (var i = 0;i < 16; i++)
837
+ o[i] = a[i] + b[i];
838
+ }
839
+ function Z(o, a, b) {
840
+ for (var i = 0;i < 16; i++)
841
+ o[i] = a[i] - b[i];
842
+ }
843
+ function M(o, a, b) {
844
+ var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
845
+ v = a[0];
846
+ t0 += v * b0;
847
+ t1 += v * b1;
848
+ t2 += v * b2;
849
+ t3 += v * b3;
850
+ t4 += v * b4;
851
+ t5 += v * b5;
852
+ t6 += v * b6;
853
+ t7 += v * b7;
854
+ t8 += v * b8;
855
+ t9 += v * b9;
856
+ t10 += v * b10;
857
+ t11 += v * b11;
858
+ t12 += v * b12;
859
+ t13 += v * b13;
860
+ t14 += v * b14;
861
+ t15 += v * b15;
862
+ v = a[1];
863
+ t1 += v * b0;
864
+ t2 += v * b1;
865
+ t3 += v * b2;
866
+ t4 += v * b3;
867
+ t5 += v * b4;
868
+ t6 += v * b5;
869
+ t7 += v * b6;
870
+ t8 += v * b7;
871
+ t9 += v * b8;
872
+ t10 += v * b9;
873
+ t11 += v * b10;
874
+ t12 += v * b11;
875
+ t13 += v * b12;
876
+ t14 += v * b13;
877
+ t15 += v * b14;
878
+ t16 += v * b15;
879
+ v = a[2];
880
+ t2 += v * b0;
881
+ t3 += v * b1;
882
+ t4 += v * b2;
883
+ t5 += v * b3;
884
+ t6 += v * b4;
885
+ t7 += v * b5;
886
+ t8 += v * b6;
887
+ t9 += v * b7;
888
+ t10 += v * b8;
889
+ t11 += v * b9;
890
+ t12 += v * b10;
891
+ t13 += v * b11;
892
+ t14 += v * b12;
893
+ t15 += v * b13;
894
+ t16 += v * b14;
895
+ t17 += v * b15;
896
+ v = a[3];
897
+ t3 += v * b0;
898
+ t4 += v * b1;
899
+ t5 += v * b2;
900
+ t6 += v * b3;
901
+ t7 += v * b4;
902
+ t8 += v * b5;
903
+ t9 += v * b6;
904
+ t10 += v * b7;
905
+ t11 += v * b8;
906
+ t12 += v * b9;
907
+ t13 += v * b10;
908
+ t14 += v * b11;
909
+ t15 += v * b12;
910
+ t16 += v * b13;
911
+ t17 += v * b14;
912
+ t18 += v * b15;
913
+ v = a[4];
914
+ t4 += v * b0;
915
+ t5 += v * b1;
916
+ t6 += v * b2;
917
+ t7 += v * b3;
918
+ t8 += v * b4;
919
+ t9 += v * b5;
920
+ t10 += v * b6;
921
+ t11 += v * b7;
922
+ t12 += v * b8;
923
+ t13 += v * b9;
924
+ t14 += v * b10;
925
+ t15 += v * b11;
926
+ t16 += v * b12;
927
+ t17 += v * b13;
928
+ t18 += v * b14;
929
+ t19 += v * b15;
930
+ v = a[5];
931
+ t5 += v * b0;
932
+ t6 += v * b1;
933
+ t7 += v * b2;
934
+ t8 += v * b3;
935
+ t9 += v * b4;
936
+ t10 += v * b5;
937
+ t11 += v * b6;
938
+ t12 += v * b7;
939
+ t13 += v * b8;
940
+ t14 += v * b9;
941
+ t15 += v * b10;
942
+ t16 += v * b11;
943
+ t17 += v * b12;
944
+ t18 += v * b13;
945
+ t19 += v * b14;
946
+ t20 += v * b15;
947
+ v = a[6];
948
+ t6 += v * b0;
949
+ t7 += v * b1;
950
+ t8 += v * b2;
951
+ t9 += v * b3;
952
+ t10 += v * b4;
953
+ t11 += v * b5;
954
+ t12 += v * b6;
955
+ t13 += v * b7;
956
+ t14 += v * b8;
957
+ t15 += v * b9;
958
+ t16 += v * b10;
959
+ t17 += v * b11;
960
+ t18 += v * b12;
961
+ t19 += v * b13;
962
+ t20 += v * b14;
963
+ t21 += v * b15;
964
+ v = a[7];
965
+ t7 += v * b0;
966
+ t8 += v * b1;
967
+ t9 += v * b2;
968
+ t10 += v * b3;
969
+ t11 += v * b4;
970
+ t12 += v * b5;
971
+ t13 += v * b6;
972
+ t14 += v * b7;
973
+ t15 += v * b8;
974
+ t16 += v * b9;
975
+ t17 += v * b10;
976
+ t18 += v * b11;
977
+ t19 += v * b12;
978
+ t20 += v * b13;
979
+ t21 += v * b14;
980
+ t22 += v * b15;
981
+ v = a[8];
982
+ t8 += v * b0;
983
+ t9 += v * b1;
984
+ t10 += v * b2;
985
+ t11 += v * b3;
986
+ t12 += v * b4;
987
+ t13 += v * b5;
988
+ t14 += v * b6;
989
+ t15 += v * b7;
990
+ t16 += v * b8;
991
+ t17 += v * b9;
992
+ t18 += v * b10;
993
+ t19 += v * b11;
994
+ t20 += v * b12;
995
+ t21 += v * b13;
996
+ t22 += v * b14;
997
+ t23 += v * b15;
998
+ v = a[9];
999
+ t9 += v * b0;
1000
+ t10 += v * b1;
1001
+ t11 += v * b2;
1002
+ t12 += v * b3;
1003
+ t13 += v * b4;
1004
+ t14 += v * b5;
1005
+ t15 += v * b6;
1006
+ t16 += v * b7;
1007
+ t17 += v * b8;
1008
+ t18 += v * b9;
1009
+ t19 += v * b10;
1010
+ t20 += v * b11;
1011
+ t21 += v * b12;
1012
+ t22 += v * b13;
1013
+ t23 += v * b14;
1014
+ t24 += v * b15;
1015
+ v = a[10];
1016
+ t10 += v * b0;
1017
+ t11 += v * b1;
1018
+ t12 += v * b2;
1019
+ t13 += v * b3;
1020
+ t14 += v * b4;
1021
+ t15 += v * b5;
1022
+ t16 += v * b6;
1023
+ t17 += v * b7;
1024
+ t18 += v * b8;
1025
+ t19 += v * b9;
1026
+ t20 += v * b10;
1027
+ t21 += v * b11;
1028
+ t22 += v * b12;
1029
+ t23 += v * b13;
1030
+ t24 += v * b14;
1031
+ t25 += v * b15;
1032
+ v = a[11];
1033
+ t11 += v * b0;
1034
+ t12 += v * b1;
1035
+ t13 += v * b2;
1036
+ t14 += v * b3;
1037
+ t15 += v * b4;
1038
+ t16 += v * b5;
1039
+ t17 += v * b6;
1040
+ t18 += v * b7;
1041
+ t19 += v * b8;
1042
+ t20 += v * b9;
1043
+ t21 += v * b10;
1044
+ t22 += v * b11;
1045
+ t23 += v * b12;
1046
+ t24 += v * b13;
1047
+ t25 += v * b14;
1048
+ t26 += v * b15;
1049
+ v = a[12];
1050
+ t12 += v * b0;
1051
+ t13 += v * b1;
1052
+ t14 += v * b2;
1053
+ t15 += v * b3;
1054
+ t16 += v * b4;
1055
+ t17 += v * b5;
1056
+ t18 += v * b6;
1057
+ t19 += v * b7;
1058
+ t20 += v * b8;
1059
+ t21 += v * b9;
1060
+ t22 += v * b10;
1061
+ t23 += v * b11;
1062
+ t24 += v * b12;
1063
+ t25 += v * b13;
1064
+ t26 += v * b14;
1065
+ t27 += v * b15;
1066
+ v = a[13];
1067
+ t13 += v * b0;
1068
+ t14 += v * b1;
1069
+ t15 += v * b2;
1070
+ t16 += v * b3;
1071
+ t17 += v * b4;
1072
+ t18 += v * b5;
1073
+ t19 += v * b6;
1074
+ t20 += v * b7;
1075
+ t21 += v * b8;
1076
+ t22 += v * b9;
1077
+ t23 += v * b10;
1078
+ t24 += v * b11;
1079
+ t25 += v * b12;
1080
+ t26 += v * b13;
1081
+ t27 += v * b14;
1082
+ t28 += v * b15;
1083
+ v = a[14];
1084
+ t14 += v * b0;
1085
+ t15 += v * b1;
1086
+ t16 += v * b2;
1087
+ t17 += v * b3;
1088
+ t18 += v * b4;
1089
+ t19 += v * b5;
1090
+ t20 += v * b6;
1091
+ t21 += v * b7;
1092
+ t22 += v * b8;
1093
+ t23 += v * b9;
1094
+ t24 += v * b10;
1095
+ t25 += v * b11;
1096
+ t26 += v * b12;
1097
+ t27 += v * b13;
1098
+ t28 += v * b14;
1099
+ t29 += v * b15;
1100
+ v = a[15];
1101
+ t15 += v * b0;
1102
+ t16 += v * b1;
1103
+ t17 += v * b2;
1104
+ t18 += v * b3;
1105
+ t19 += v * b4;
1106
+ t20 += v * b5;
1107
+ t21 += v * b6;
1108
+ t22 += v * b7;
1109
+ t23 += v * b8;
1110
+ t24 += v * b9;
1111
+ t25 += v * b10;
1112
+ t26 += v * b11;
1113
+ t27 += v * b12;
1114
+ t28 += v * b13;
1115
+ t29 += v * b14;
1116
+ t30 += v * b15;
1117
+ t0 += 38 * t16;
1118
+ t1 += 38 * t17;
1119
+ t2 += 38 * t18;
1120
+ t3 += 38 * t19;
1121
+ t4 += 38 * t20;
1122
+ t5 += 38 * t21;
1123
+ t6 += 38 * t22;
1124
+ t7 += 38 * t23;
1125
+ t8 += 38 * t24;
1126
+ t9 += 38 * t25;
1127
+ t10 += 38 * t26;
1128
+ t11 += 38 * t27;
1129
+ t12 += 38 * t28;
1130
+ t13 += 38 * t29;
1131
+ t14 += 38 * t30;
1132
+ c = 1;
1133
+ v = t0 + c + 65535;
1134
+ c = Math.floor(v / 65536);
1135
+ t0 = v - c * 65536;
1136
+ v = t1 + c + 65535;
1137
+ c = Math.floor(v / 65536);
1138
+ t1 = v - c * 65536;
1139
+ v = t2 + c + 65535;
1140
+ c = Math.floor(v / 65536);
1141
+ t2 = v - c * 65536;
1142
+ v = t3 + c + 65535;
1143
+ c = Math.floor(v / 65536);
1144
+ t3 = v - c * 65536;
1145
+ v = t4 + c + 65535;
1146
+ c = Math.floor(v / 65536);
1147
+ t4 = v - c * 65536;
1148
+ v = t5 + c + 65535;
1149
+ c = Math.floor(v / 65536);
1150
+ t5 = v - c * 65536;
1151
+ v = t6 + c + 65535;
1152
+ c = Math.floor(v / 65536);
1153
+ t6 = v - c * 65536;
1154
+ v = t7 + c + 65535;
1155
+ c = Math.floor(v / 65536);
1156
+ t7 = v - c * 65536;
1157
+ v = t8 + c + 65535;
1158
+ c = Math.floor(v / 65536);
1159
+ t8 = v - c * 65536;
1160
+ v = t9 + c + 65535;
1161
+ c = Math.floor(v / 65536);
1162
+ t9 = v - c * 65536;
1163
+ v = t10 + c + 65535;
1164
+ c = Math.floor(v / 65536);
1165
+ t10 = v - c * 65536;
1166
+ v = t11 + c + 65535;
1167
+ c = Math.floor(v / 65536);
1168
+ t11 = v - c * 65536;
1169
+ v = t12 + c + 65535;
1170
+ c = Math.floor(v / 65536);
1171
+ t12 = v - c * 65536;
1172
+ v = t13 + c + 65535;
1173
+ c = Math.floor(v / 65536);
1174
+ t13 = v - c * 65536;
1175
+ v = t14 + c + 65535;
1176
+ c = Math.floor(v / 65536);
1177
+ t14 = v - c * 65536;
1178
+ v = t15 + c + 65535;
1179
+ c = Math.floor(v / 65536);
1180
+ t15 = v - c * 65536;
1181
+ t0 += c - 1 + 37 * (c - 1);
1182
+ c = 1;
1183
+ v = t0 + c + 65535;
1184
+ c = Math.floor(v / 65536);
1185
+ t0 = v - c * 65536;
1186
+ v = t1 + c + 65535;
1187
+ c = Math.floor(v / 65536);
1188
+ t1 = v - c * 65536;
1189
+ v = t2 + c + 65535;
1190
+ c = Math.floor(v / 65536);
1191
+ t2 = v - c * 65536;
1192
+ v = t3 + c + 65535;
1193
+ c = Math.floor(v / 65536);
1194
+ t3 = v - c * 65536;
1195
+ v = t4 + c + 65535;
1196
+ c = Math.floor(v / 65536);
1197
+ t4 = v - c * 65536;
1198
+ v = t5 + c + 65535;
1199
+ c = Math.floor(v / 65536);
1200
+ t5 = v - c * 65536;
1201
+ v = t6 + c + 65535;
1202
+ c = Math.floor(v / 65536);
1203
+ t6 = v - c * 65536;
1204
+ v = t7 + c + 65535;
1205
+ c = Math.floor(v / 65536);
1206
+ t7 = v - c * 65536;
1207
+ v = t8 + c + 65535;
1208
+ c = Math.floor(v / 65536);
1209
+ t8 = v - c * 65536;
1210
+ v = t9 + c + 65535;
1211
+ c = Math.floor(v / 65536);
1212
+ t9 = v - c * 65536;
1213
+ v = t10 + c + 65535;
1214
+ c = Math.floor(v / 65536);
1215
+ t10 = v - c * 65536;
1216
+ v = t11 + c + 65535;
1217
+ c = Math.floor(v / 65536);
1218
+ t11 = v - c * 65536;
1219
+ v = t12 + c + 65535;
1220
+ c = Math.floor(v / 65536);
1221
+ t12 = v - c * 65536;
1222
+ v = t13 + c + 65535;
1223
+ c = Math.floor(v / 65536);
1224
+ t13 = v - c * 65536;
1225
+ v = t14 + c + 65535;
1226
+ c = Math.floor(v / 65536);
1227
+ t14 = v - c * 65536;
1228
+ v = t15 + c + 65535;
1229
+ c = Math.floor(v / 65536);
1230
+ t15 = v - c * 65536;
1231
+ t0 += c - 1 + 37 * (c - 1);
1232
+ o[0] = t0;
1233
+ o[1] = t1;
1234
+ o[2] = t2;
1235
+ o[3] = t3;
1236
+ o[4] = t4;
1237
+ o[5] = t5;
1238
+ o[6] = t6;
1239
+ o[7] = t7;
1240
+ o[8] = t8;
1241
+ o[9] = t9;
1242
+ o[10] = t10;
1243
+ o[11] = t11;
1244
+ o[12] = t12;
1245
+ o[13] = t13;
1246
+ o[14] = t14;
1247
+ o[15] = t15;
1248
+ }
1249
+ function S(o, a) {
1250
+ M(o, a, a);
1251
+ }
1252
+ function inv25519(o, i) {
1253
+ var c = gf();
1254
+ var a;
1255
+ for (a = 0;a < 16; a++)
1256
+ c[a] = i[a];
1257
+ for (a = 253;a >= 0; a--) {
1258
+ S(c, c);
1259
+ if (a !== 2 && a !== 4)
1260
+ M(c, c, i);
1261
+ }
1262
+ for (a = 0;a < 16; a++)
1263
+ o[a] = c[a];
1264
+ }
1265
+ function pow2523(o, i) {
1266
+ var c = gf();
1267
+ var a;
1268
+ for (a = 0;a < 16; a++)
1269
+ c[a] = i[a];
1270
+ for (a = 250;a >= 0; a--) {
1271
+ S(c, c);
1272
+ if (a !== 1)
1273
+ M(c, c, i);
1274
+ }
1275
+ for (a = 0;a < 16; a++)
1276
+ o[a] = c[a];
1277
+ }
1278
+ function crypto_scalarmult(q, n, p) {
1279
+ var z = new Uint8Array(32);
1280
+ var x = new Float64Array(80), r, i;
1281
+ var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();
1282
+ for (i = 0;i < 31; i++)
1283
+ z[i] = n[i];
1284
+ z[31] = n[31] & 127 | 64;
1285
+ z[0] &= 248;
1286
+ unpack25519(x, p);
1287
+ for (i = 0;i < 16; i++) {
1288
+ b[i] = x[i];
1289
+ d[i] = a[i] = c[i] = 0;
1290
+ }
1291
+ a[0] = d[0] = 1;
1292
+ for (i = 254;i >= 0; --i) {
1293
+ r = z[i >>> 3] >>> (i & 7) & 1;
1294
+ sel25519(a, b, r);
1295
+ sel25519(c, d, r);
1296
+ A(e, a, c);
1297
+ Z(a, a, c);
1298
+ A(c, b, d);
1299
+ Z(b, b, d);
1300
+ S(d, e);
1301
+ S(f, a);
1302
+ M(a, c, a);
1303
+ M(c, b, e);
1304
+ A(e, a, c);
1305
+ Z(a, a, c);
1306
+ S(b, a);
1307
+ Z(c, d, f);
1308
+ M(a, c, _121665);
1309
+ A(a, a, d);
1310
+ M(c, c, a);
1311
+ M(a, d, f);
1312
+ M(d, b, x);
1313
+ S(b, e);
1314
+ sel25519(a, b, r);
1315
+ sel25519(c, d, r);
1316
+ }
1317
+ for (i = 0;i < 16; i++) {
1318
+ x[i + 16] = a[i];
1319
+ x[i + 32] = c[i];
1320
+ x[i + 48] = b[i];
1321
+ x[i + 64] = d[i];
1322
+ }
1323
+ var x32 = x.subarray(32);
1324
+ var x16 = x.subarray(16);
1325
+ inv25519(x32, x32);
1326
+ M(x16, x16, x32);
1327
+ pack25519(q, x16);
1328
+ return 0;
1329
+ }
1330
+ function crypto_scalarmult_base(q, n) {
1331
+ return crypto_scalarmult(q, n, _9);
1332
+ }
1333
+ function crypto_box_keypair(y, x) {
1334
+ randombytes(x, 32);
1335
+ return crypto_scalarmult_base(y, x);
1336
+ }
1337
+ function crypto_box_beforenm(k, y, x) {
1338
+ var s = new Uint8Array(32);
1339
+ crypto_scalarmult(s, x, y);
1340
+ return crypto_core_hsalsa20(k, _0, s, sigma);
1341
+ }
1342
+ var crypto_box_afternm = crypto_secretbox;
1343
+ var crypto_box_open_afternm = crypto_secretbox_open;
1344
+ function crypto_box(c, m, d, n, y, x) {
1345
+ var k = new Uint8Array(32);
1346
+ crypto_box_beforenm(k, y, x);
1347
+ return crypto_box_afternm(c, m, d, n, k);
1348
+ }
1349
+ function crypto_box_open(m, c, d, n, y, x) {
1350
+ var k = new Uint8Array(32);
1351
+ crypto_box_beforenm(k, y, x);
1352
+ return crypto_box_open_afternm(m, c, d, n, k);
1353
+ }
1354
+ var K = [
1355
+ 1116352408,
1356
+ 3609767458,
1357
+ 1899447441,
1358
+ 602891725,
1359
+ 3049323471,
1360
+ 3964484399,
1361
+ 3921009573,
1362
+ 2173295548,
1363
+ 961987163,
1364
+ 4081628472,
1365
+ 1508970993,
1366
+ 3053834265,
1367
+ 2453635748,
1368
+ 2937671579,
1369
+ 2870763221,
1370
+ 3664609560,
1371
+ 3624381080,
1372
+ 2734883394,
1373
+ 310598401,
1374
+ 1164996542,
1375
+ 607225278,
1376
+ 1323610764,
1377
+ 1426881987,
1378
+ 3590304994,
1379
+ 1925078388,
1380
+ 4068182383,
1381
+ 2162078206,
1382
+ 991336113,
1383
+ 2614888103,
1384
+ 633803317,
1385
+ 3248222580,
1386
+ 3479774868,
1387
+ 3835390401,
1388
+ 2666613458,
1389
+ 4022224774,
1390
+ 944711139,
1391
+ 264347078,
1392
+ 2341262773,
1393
+ 604807628,
1394
+ 2007800933,
1395
+ 770255983,
1396
+ 1495990901,
1397
+ 1249150122,
1398
+ 1856431235,
1399
+ 1555081692,
1400
+ 3175218132,
1401
+ 1996064986,
1402
+ 2198950837,
1403
+ 2554220882,
1404
+ 3999719339,
1405
+ 2821834349,
1406
+ 766784016,
1407
+ 2952996808,
1408
+ 2566594879,
1409
+ 3210313671,
1410
+ 3203337956,
1411
+ 3336571891,
1412
+ 1034457026,
1413
+ 3584528711,
1414
+ 2466948901,
1415
+ 113926993,
1416
+ 3758326383,
1417
+ 338241895,
1418
+ 168717936,
1419
+ 666307205,
1420
+ 1188179964,
1421
+ 773529912,
1422
+ 1546045734,
1423
+ 1294757372,
1424
+ 1522805485,
1425
+ 1396182291,
1426
+ 2643833823,
1427
+ 1695183700,
1428
+ 2343527390,
1429
+ 1986661051,
1430
+ 1014477480,
1431
+ 2177026350,
1432
+ 1206759142,
1433
+ 2456956037,
1434
+ 344077627,
1435
+ 2730485921,
1436
+ 1290863460,
1437
+ 2820302411,
1438
+ 3158454273,
1439
+ 3259730800,
1440
+ 3505952657,
1441
+ 3345764771,
1442
+ 106217008,
1443
+ 3516065817,
1444
+ 3606008344,
1445
+ 3600352804,
1446
+ 1432725776,
1447
+ 4094571909,
1448
+ 1467031594,
1449
+ 275423344,
1450
+ 851169720,
1451
+ 430227734,
1452
+ 3100823752,
1453
+ 506948616,
1454
+ 1363258195,
1455
+ 659060556,
1456
+ 3750685593,
1457
+ 883997877,
1458
+ 3785050280,
1459
+ 958139571,
1460
+ 3318307427,
1461
+ 1322822218,
1462
+ 3812723403,
1463
+ 1537002063,
1464
+ 2003034995,
1465
+ 1747873779,
1466
+ 3602036899,
1467
+ 1955562222,
1468
+ 1575990012,
1469
+ 2024104815,
1470
+ 1125592928,
1471
+ 2227730452,
1472
+ 2716904306,
1473
+ 2361852424,
1474
+ 442776044,
1475
+ 2428436474,
1476
+ 593698344,
1477
+ 2756734187,
1478
+ 3733110249,
1479
+ 3204031479,
1480
+ 2999351573,
1481
+ 3329325298,
1482
+ 3815920427,
1483
+ 3391569614,
1484
+ 3928383900,
1485
+ 3515267271,
1486
+ 566280711,
1487
+ 3940187606,
1488
+ 3454069534,
1489
+ 4118630271,
1490
+ 4000239992,
1491
+ 116418474,
1492
+ 1914138554,
1493
+ 174292421,
1494
+ 2731055270,
1495
+ 289380356,
1496
+ 3203993006,
1497
+ 460393269,
1498
+ 320620315,
1499
+ 685471733,
1500
+ 587496836,
1501
+ 852142971,
1502
+ 1086792851,
1503
+ 1017036298,
1504
+ 365543100,
1505
+ 1126000580,
1506
+ 2618297676,
1507
+ 1288033470,
1508
+ 3409855158,
1509
+ 1501505948,
1510
+ 4234509866,
1511
+ 1607167915,
1512
+ 987167468,
1513
+ 1816402316,
1514
+ 1246189591
1515
+ ];
1516
+ function crypto_hashblocks_hl(hh, hl, m, n) {
1517
+ var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;
1518
+ var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];
1519
+ var pos = 0;
1520
+ while (n >= 128) {
1521
+ for (i = 0;i < 16; i++) {
1522
+ j = 8 * i + pos;
1523
+ wh[i] = m[j + 0] << 24 | m[j + 1] << 16 | m[j + 2] << 8 | m[j + 3];
1524
+ wl[i] = m[j + 4] << 24 | m[j + 5] << 16 | m[j + 6] << 8 | m[j + 7];
1525
+ }
1526
+ for (i = 0;i < 80; i++) {
1527
+ bh0 = ah0;
1528
+ bh1 = ah1;
1529
+ bh2 = ah2;
1530
+ bh3 = ah3;
1531
+ bh4 = ah4;
1532
+ bh5 = ah5;
1533
+ bh6 = ah6;
1534
+ bh7 = ah7;
1535
+ bl0 = al0;
1536
+ bl1 = al1;
1537
+ bl2 = al2;
1538
+ bl3 = al3;
1539
+ bl4 = al4;
1540
+ bl5 = al5;
1541
+ bl6 = al6;
1542
+ bl7 = al7;
1543
+ h = ah7;
1544
+ l = al7;
1545
+ a = l & 65535;
1546
+ b = l >>> 16;
1547
+ c = h & 65535;
1548
+ d = h >>> 16;
1549
+ h = (ah4 >>> 14 | al4 << 32 - 14) ^ (ah4 >>> 18 | al4 << 32 - 18) ^ (al4 >>> 41 - 32 | ah4 << 32 - (41 - 32));
1550
+ l = (al4 >>> 14 | ah4 << 32 - 14) ^ (al4 >>> 18 | ah4 << 32 - 18) ^ (ah4 >>> 41 - 32 | al4 << 32 - (41 - 32));
1551
+ a += l & 65535;
1552
+ b += l >>> 16;
1553
+ c += h & 65535;
1554
+ d += h >>> 16;
1555
+ h = ah4 & ah5 ^ ~ah4 & ah6;
1556
+ l = al4 & al5 ^ ~al4 & al6;
1557
+ a += l & 65535;
1558
+ b += l >>> 16;
1559
+ c += h & 65535;
1560
+ d += h >>> 16;
1561
+ h = K[i * 2];
1562
+ l = K[i * 2 + 1];
1563
+ a += l & 65535;
1564
+ b += l >>> 16;
1565
+ c += h & 65535;
1566
+ d += h >>> 16;
1567
+ h = wh[i % 16];
1568
+ l = wl[i % 16];
1569
+ a += l & 65535;
1570
+ b += l >>> 16;
1571
+ c += h & 65535;
1572
+ d += h >>> 16;
1573
+ b += a >>> 16;
1574
+ c += b >>> 16;
1575
+ d += c >>> 16;
1576
+ th = c & 65535 | d << 16;
1577
+ tl = a & 65535 | b << 16;
1578
+ h = th;
1579
+ l = tl;
1580
+ a = l & 65535;
1581
+ b = l >>> 16;
1582
+ c = h & 65535;
1583
+ d = h >>> 16;
1584
+ h = (ah0 >>> 28 | al0 << 32 - 28) ^ (al0 >>> 34 - 32 | ah0 << 32 - (34 - 32)) ^ (al0 >>> 39 - 32 | ah0 << 32 - (39 - 32));
1585
+ l = (al0 >>> 28 | ah0 << 32 - 28) ^ (ah0 >>> 34 - 32 | al0 << 32 - (34 - 32)) ^ (ah0 >>> 39 - 32 | al0 << 32 - (39 - 32));
1586
+ a += l & 65535;
1587
+ b += l >>> 16;
1588
+ c += h & 65535;
1589
+ d += h >>> 16;
1590
+ h = ah0 & ah1 ^ ah0 & ah2 ^ ah1 & ah2;
1591
+ l = al0 & al1 ^ al0 & al2 ^ al1 & al2;
1592
+ a += l & 65535;
1593
+ b += l >>> 16;
1594
+ c += h & 65535;
1595
+ d += h >>> 16;
1596
+ b += a >>> 16;
1597
+ c += b >>> 16;
1598
+ d += c >>> 16;
1599
+ bh7 = c & 65535 | d << 16;
1600
+ bl7 = a & 65535 | b << 16;
1601
+ h = bh3;
1602
+ l = bl3;
1603
+ a = l & 65535;
1604
+ b = l >>> 16;
1605
+ c = h & 65535;
1606
+ d = h >>> 16;
1607
+ h = th;
1608
+ l = tl;
1609
+ a += l & 65535;
1610
+ b += l >>> 16;
1611
+ c += h & 65535;
1612
+ d += h >>> 16;
1613
+ b += a >>> 16;
1614
+ c += b >>> 16;
1615
+ d += c >>> 16;
1616
+ bh3 = c & 65535 | d << 16;
1617
+ bl3 = a & 65535 | b << 16;
1618
+ ah1 = bh0;
1619
+ ah2 = bh1;
1620
+ ah3 = bh2;
1621
+ ah4 = bh3;
1622
+ ah5 = bh4;
1623
+ ah6 = bh5;
1624
+ ah7 = bh6;
1625
+ ah0 = bh7;
1626
+ al1 = bl0;
1627
+ al2 = bl1;
1628
+ al3 = bl2;
1629
+ al4 = bl3;
1630
+ al5 = bl4;
1631
+ al6 = bl5;
1632
+ al7 = bl6;
1633
+ al0 = bl7;
1634
+ if (i % 16 === 15) {
1635
+ for (j = 0;j < 16; j++) {
1636
+ h = wh[j];
1637
+ l = wl[j];
1638
+ a = l & 65535;
1639
+ b = l >>> 16;
1640
+ c = h & 65535;
1641
+ d = h >>> 16;
1642
+ h = wh[(j + 9) % 16];
1643
+ l = wl[(j + 9) % 16];
1644
+ a += l & 65535;
1645
+ b += l >>> 16;
1646
+ c += h & 65535;
1647
+ d += h >>> 16;
1648
+ th = wh[(j + 1) % 16];
1649
+ tl = wl[(j + 1) % 16];
1650
+ h = (th >>> 1 | tl << 32 - 1) ^ (th >>> 8 | tl << 32 - 8) ^ th >>> 7;
1651
+ l = (tl >>> 1 | th << 32 - 1) ^ (tl >>> 8 | th << 32 - 8) ^ (tl >>> 7 | th << 32 - 7);
1652
+ a += l & 65535;
1653
+ b += l >>> 16;
1654
+ c += h & 65535;
1655
+ d += h >>> 16;
1656
+ th = wh[(j + 14) % 16];
1657
+ tl = wl[(j + 14) % 16];
1658
+ h = (th >>> 19 | tl << 32 - 19) ^ (tl >>> 61 - 32 | th << 32 - (61 - 32)) ^ th >>> 6;
1659
+ l = (tl >>> 19 | th << 32 - 19) ^ (th >>> 61 - 32 | tl << 32 - (61 - 32)) ^ (tl >>> 6 | th << 32 - 6);
1660
+ a += l & 65535;
1661
+ b += l >>> 16;
1662
+ c += h & 65535;
1663
+ d += h >>> 16;
1664
+ b += a >>> 16;
1665
+ c += b >>> 16;
1666
+ d += c >>> 16;
1667
+ wh[j] = c & 65535 | d << 16;
1668
+ wl[j] = a & 65535 | b << 16;
1669
+ }
1670
+ }
1671
+ }
1672
+ h = ah0;
1673
+ l = al0;
1674
+ a = l & 65535;
1675
+ b = l >>> 16;
1676
+ c = h & 65535;
1677
+ d = h >>> 16;
1678
+ h = hh[0];
1679
+ l = hl[0];
1680
+ a += l & 65535;
1681
+ b += l >>> 16;
1682
+ c += h & 65535;
1683
+ d += h >>> 16;
1684
+ b += a >>> 16;
1685
+ c += b >>> 16;
1686
+ d += c >>> 16;
1687
+ hh[0] = ah0 = c & 65535 | d << 16;
1688
+ hl[0] = al0 = a & 65535 | b << 16;
1689
+ h = ah1;
1690
+ l = al1;
1691
+ a = l & 65535;
1692
+ b = l >>> 16;
1693
+ c = h & 65535;
1694
+ d = h >>> 16;
1695
+ h = hh[1];
1696
+ l = hl[1];
1697
+ a += l & 65535;
1698
+ b += l >>> 16;
1699
+ c += h & 65535;
1700
+ d += h >>> 16;
1701
+ b += a >>> 16;
1702
+ c += b >>> 16;
1703
+ d += c >>> 16;
1704
+ hh[1] = ah1 = c & 65535 | d << 16;
1705
+ hl[1] = al1 = a & 65535 | b << 16;
1706
+ h = ah2;
1707
+ l = al2;
1708
+ a = l & 65535;
1709
+ b = l >>> 16;
1710
+ c = h & 65535;
1711
+ d = h >>> 16;
1712
+ h = hh[2];
1713
+ l = hl[2];
1714
+ a += l & 65535;
1715
+ b += l >>> 16;
1716
+ c += h & 65535;
1717
+ d += h >>> 16;
1718
+ b += a >>> 16;
1719
+ c += b >>> 16;
1720
+ d += c >>> 16;
1721
+ hh[2] = ah2 = c & 65535 | d << 16;
1722
+ hl[2] = al2 = a & 65535 | b << 16;
1723
+ h = ah3;
1724
+ l = al3;
1725
+ a = l & 65535;
1726
+ b = l >>> 16;
1727
+ c = h & 65535;
1728
+ d = h >>> 16;
1729
+ h = hh[3];
1730
+ l = hl[3];
1731
+ a += l & 65535;
1732
+ b += l >>> 16;
1733
+ c += h & 65535;
1734
+ d += h >>> 16;
1735
+ b += a >>> 16;
1736
+ c += b >>> 16;
1737
+ d += c >>> 16;
1738
+ hh[3] = ah3 = c & 65535 | d << 16;
1739
+ hl[3] = al3 = a & 65535 | b << 16;
1740
+ h = ah4;
1741
+ l = al4;
1742
+ a = l & 65535;
1743
+ b = l >>> 16;
1744
+ c = h & 65535;
1745
+ d = h >>> 16;
1746
+ h = hh[4];
1747
+ l = hl[4];
1748
+ a += l & 65535;
1749
+ b += l >>> 16;
1750
+ c += h & 65535;
1751
+ d += h >>> 16;
1752
+ b += a >>> 16;
1753
+ c += b >>> 16;
1754
+ d += c >>> 16;
1755
+ hh[4] = ah4 = c & 65535 | d << 16;
1756
+ hl[4] = al4 = a & 65535 | b << 16;
1757
+ h = ah5;
1758
+ l = al5;
1759
+ a = l & 65535;
1760
+ b = l >>> 16;
1761
+ c = h & 65535;
1762
+ d = h >>> 16;
1763
+ h = hh[5];
1764
+ l = hl[5];
1765
+ a += l & 65535;
1766
+ b += l >>> 16;
1767
+ c += h & 65535;
1768
+ d += h >>> 16;
1769
+ b += a >>> 16;
1770
+ c += b >>> 16;
1771
+ d += c >>> 16;
1772
+ hh[5] = ah5 = c & 65535 | d << 16;
1773
+ hl[5] = al5 = a & 65535 | b << 16;
1774
+ h = ah6;
1775
+ l = al6;
1776
+ a = l & 65535;
1777
+ b = l >>> 16;
1778
+ c = h & 65535;
1779
+ d = h >>> 16;
1780
+ h = hh[6];
1781
+ l = hl[6];
1782
+ a += l & 65535;
1783
+ b += l >>> 16;
1784
+ c += h & 65535;
1785
+ d += h >>> 16;
1786
+ b += a >>> 16;
1787
+ c += b >>> 16;
1788
+ d += c >>> 16;
1789
+ hh[6] = ah6 = c & 65535 | d << 16;
1790
+ hl[6] = al6 = a & 65535 | b << 16;
1791
+ h = ah7;
1792
+ l = al7;
1793
+ a = l & 65535;
1794
+ b = l >>> 16;
1795
+ c = h & 65535;
1796
+ d = h >>> 16;
1797
+ h = hh[7];
1798
+ l = hl[7];
1799
+ a += l & 65535;
1800
+ b += l >>> 16;
1801
+ c += h & 65535;
1802
+ d += h >>> 16;
1803
+ b += a >>> 16;
1804
+ c += b >>> 16;
1805
+ d += c >>> 16;
1806
+ hh[7] = ah7 = c & 65535 | d << 16;
1807
+ hl[7] = al7 = a & 65535 | b << 16;
1808
+ pos += 128;
1809
+ n -= 128;
1810
+ }
1811
+ return n;
1812
+ }
1813
+ function crypto_hash(out, m, n) {
1814
+ var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;
1815
+ hh[0] = 1779033703;
1816
+ hh[1] = 3144134277;
1817
+ hh[2] = 1013904242;
1818
+ hh[3] = 2773480762;
1819
+ hh[4] = 1359893119;
1820
+ hh[5] = 2600822924;
1821
+ hh[6] = 528734635;
1822
+ hh[7] = 1541459225;
1823
+ hl[0] = 4089235720;
1824
+ hl[1] = 2227873595;
1825
+ hl[2] = 4271175723;
1826
+ hl[3] = 1595750129;
1827
+ hl[4] = 2917565137;
1828
+ hl[5] = 725511199;
1829
+ hl[6] = 4215389547;
1830
+ hl[7] = 327033209;
1831
+ crypto_hashblocks_hl(hh, hl, m, n);
1832
+ n %= 128;
1833
+ for (i = 0;i < n; i++)
1834
+ x[i] = m[b - n + i];
1835
+ x[n] = 128;
1836
+ n = 256 - 128 * (n < 112 ? 1 : 0);
1837
+ x[n - 9] = 0;
1838
+ ts64(x, n - 8, b / 536870912 | 0, b << 3);
1839
+ crypto_hashblocks_hl(hh, hl, x, n);
1840
+ for (i = 0;i < 8; i++)
1841
+ ts64(out, 8 * i, hh[i], hl[i]);
1842
+ return 0;
1843
+ }
1844
+ function add(p, q) {
1845
+ var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();
1846
+ Z(a, p[1], p[0]);
1847
+ Z(t, q[1], q[0]);
1848
+ M(a, a, t);
1849
+ A(b, p[0], p[1]);
1850
+ A(t, q[0], q[1]);
1851
+ M(b, b, t);
1852
+ M(c, p[3], q[3]);
1853
+ M(c, c, D2);
1854
+ M(d, p[2], q[2]);
1855
+ A(d, d, d);
1856
+ Z(e, b, a);
1857
+ Z(f, d, c);
1858
+ A(g, d, c);
1859
+ A(h, b, a);
1860
+ M(p[0], e, f);
1861
+ M(p[1], h, g);
1862
+ M(p[2], g, f);
1863
+ M(p[3], e, h);
1864
+ }
1865
+ function cswap(p, q, b) {
1866
+ var i;
1867
+ for (i = 0;i < 4; i++) {
1868
+ sel25519(p[i], q[i], b);
1869
+ }
1870
+ }
1871
+ function pack(r, p) {
1872
+ var tx = gf(), ty = gf(), zi = gf();
1873
+ inv25519(zi, p[2]);
1874
+ M(tx, p[0], zi);
1875
+ M(ty, p[1], zi);
1876
+ pack25519(r, ty);
1877
+ r[31] ^= par25519(tx) << 7;
1878
+ }
1879
+ function scalarmult(p, q, s) {
1880
+ var b, i;
1881
+ set25519(p[0], gf0);
1882
+ set25519(p[1], gf1);
1883
+ set25519(p[2], gf1);
1884
+ set25519(p[3], gf0);
1885
+ for (i = 255;i >= 0; --i) {
1886
+ b = s[i / 8 | 0] >> (i & 7) & 1;
1887
+ cswap(p, q, b);
1888
+ add(q, p);
1889
+ add(p, p);
1890
+ cswap(p, q, b);
1891
+ }
1892
+ }
1893
+ function scalarbase(p, s) {
1894
+ var q = [gf(), gf(), gf(), gf()];
1895
+ set25519(q[0], X);
1896
+ set25519(q[1], Y);
1897
+ set25519(q[2], gf1);
1898
+ M(q[3], X, Y);
1899
+ scalarmult(p, q, s);
1900
+ }
1901
+ function crypto_sign_keypair(pk, sk, seeded) {
1902
+ var d = new Uint8Array(64);
1903
+ var p = [gf(), gf(), gf(), gf()];
1904
+ var i;
1905
+ if (!seeded)
1906
+ randombytes(sk, 32);
1907
+ crypto_hash(d, sk, 32);
1908
+ d[0] &= 248;
1909
+ d[31] &= 127;
1910
+ d[31] |= 64;
1911
+ scalarbase(p, d);
1912
+ pack(pk, p);
1913
+ for (i = 0;i < 32; i++)
1914
+ sk[i + 32] = pk[i];
1915
+ return 0;
1916
+ }
1917
+ var L = new Float64Array([237, 211, 245, 92, 26, 99, 18, 88, 214, 156, 247, 162, 222, 249, 222, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16]);
1918
+ function modL(r, x) {
1919
+ var carry, i, j, k;
1920
+ for (i = 63;i >= 32; --i) {
1921
+ carry = 0;
1922
+ for (j = i - 32, k = i - 12;j < k; ++j) {
1923
+ x[j] += carry - 16 * x[i] * L[j - (i - 32)];
1924
+ carry = Math.floor((x[j] + 128) / 256);
1925
+ x[j] -= carry * 256;
1926
+ }
1927
+ x[j] += carry;
1928
+ x[i] = 0;
1929
+ }
1930
+ carry = 0;
1931
+ for (j = 0;j < 32; j++) {
1932
+ x[j] += carry - (x[31] >> 4) * L[j];
1933
+ carry = x[j] >> 8;
1934
+ x[j] &= 255;
1935
+ }
1936
+ for (j = 0;j < 32; j++)
1937
+ x[j] -= carry * L[j];
1938
+ for (i = 0;i < 32; i++) {
1939
+ x[i + 1] += x[i] >> 8;
1940
+ r[i] = x[i] & 255;
1941
+ }
1942
+ }
1943
+ function reduce(r) {
1944
+ var x = new Float64Array(64), i;
1945
+ for (i = 0;i < 64; i++)
1946
+ x[i] = r[i];
1947
+ for (i = 0;i < 64; i++)
1948
+ r[i] = 0;
1949
+ modL(r, x);
1950
+ }
1951
+ function crypto_sign(sm, m, n, sk) {
1952
+ var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);
1953
+ var i, j, x = new Float64Array(64);
1954
+ var p = [gf(), gf(), gf(), gf()];
1955
+ crypto_hash(d, sk, 32);
1956
+ d[0] &= 248;
1957
+ d[31] &= 127;
1958
+ d[31] |= 64;
1959
+ var smlen = n + 64;
1960
+ for (i = 0;i < n; i++)
1961
+ sm[64 + i] = m[i];
1962
+ for (i = 0;i < 32; i++)
1963
+ sm[32 + i] = d[32 + i];
1964
+ crypto_hash(r, sm.subarray(32), n + 32);
1965
+ reduce(r);
1966
+ scalarbase(p, r);
1967
+ pack(sm, p);
1968
+ for (i = 32;i < 64; i++)
1969
+ sm[i] = sk[i];
1970
+ crypto_hash(h, sm, n + 64);
1971
+ reduce(h);
1972
+ for (i = 0;i < 64; i++)
1973
+ x[i] = 0;
1974
+ for (i = 0;i < 32; i++)
1975
+ x[i] = r[i];
1976
+ for (i = 0;i < 32; i++) {
1977
+ for (j = 0;j < 32; j++) {
1978
+ x[i + j] += h[i] * d[j];
1979
+ }
1980
+ }
1981
+ modL(sm.subarray(32), x);
1982
+ return smlen;
1983
+ }
1984
+ function unpackneg(r, p) {
1985
+ var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
1986
+ set25519(r[2], gf1);
1987
+ unpack25519(r[1], p);
1988
+ S(num, r[1]);
1989
+ M(den, num, D);
1990
+ Z(num, num, r[2]);
1991
+ A(den, r[2], den);
1992
+ S(den2, den);
1993
+ S(den4, den2);
1994
+ M(den6, den4, den2);
1995
+ M(t, den6, num);
1996
+ M(t, t, den);
1997
+ pow2523(t, t);
1998
+ M(t, t, num);
1999
+ M(t, t, den);
2000
+ M(t, t, den);
2001
+ M(r[0], t, den);
2002
+ S(chk, r[0]);
2003
+ M(chk, chk, den);
2004
+ if (neq25519(chk, num))
2005
+ M(r[0], r[0], I);
2006
+ S(chk, r[0]);
2007
+ M(chk, chk, den);
2008
+ if (neq25519(chk, num))
2009
+ return -1;
2010
+ if (par25519(r[0]) === p[31] >> 7)
2011
+ Z(r[0], gf0, r[0]);
2012
+ M(r[3], r[0], r[1]);
2013
+ return 0;
2014
+ }
2015
+ function crypto_sign_open(m, sm, n, pk) {
2016
+ var i;
2017
+ var t = new Uint8Array(32), h = new Uint8Array(64);
2018
+ var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];
2019
+ if (n < 64)
2020
+ return -1;
2021
+ if (unpackneg(q, pk))
2022
+ return -1;
2023
+ for (i = 0;i < n; i++)
2024
+ m[i] = sm[i];
2025
+ for (i = 0;i < 32; i++)
2026
+ m[i + 32] = pk[i];
2027
+ crypto_hash(h, m, n);
2028
+ reduce(h);
2029
+ scalarmult(p, q, h);
2030
+ scalarbase(q, sm.subarray(32));
2031
+ add(p, q);
2032
+ pack(t, p);
2033
+ n -= 64;
2034
+ if (crypto_verify_32(sm, 0, t, 0)) {
2035
+ for (i = 0;i < n; i++)
2036
+ m[i] = 0;
2037
+ return -1;
2038
+ }
2039
+ for (i = 0;i < n; i++)
2040
+ m[i] = sm[i + 64];
2041
+ return n;
2042
+ }
2043
+ var crypto_secretbox_KEYBYTES = 32, crypto_secretbox_NONCEBYTES = 24, crypto_secretbox_ZEROBYTES = 32, crypto_secretbox_BOXZEROBYTES = 16, crypto_scalarmult_BYTES = 32, crypto_scalarmult_SCALARBYTES = 32, crypto_box_PUBLICKEYBYTES = 32, crypto_box_SECRETKEYBYTES = 32, crypto_box_BEFORENMBYTES = 32, crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, crypto_sign_BYTES = 64, crypto_sign_PUBLICKEYBYTES = 32, crypto_sign_SECRETKEYBYTES = 64, crypto_sign_SEEDBYTES = 32, crypto_hash_BYTES = 64;
2044
+ nacl.lowlevel = {
2045
+ crypto_core_hsalsa20,
2046
+ crypto_stream_xor,
2047
+ crypto_stream,
2048
+ crypto_stream_salsa20_xor,
2049
+ crypto_stream_salsa20,
2050
+ crypto_onetimeauth,
2051
+ crypto_onetimeauth_verify,
2052
+ crypto_verify_16,
2053
+ crypto_verify_32,
2054
+ crypto_secretbox,
2055
+ crypto_secretbox_open,
2056
+ crypto_scalarmult,
2057
+ crypto_scalarmult_base,
2058
+ crypto_box_beforenm,
2059
+ crypto_box_afternm,
2060
+ crypto_box,
2061
+ crypto_box_open,
2062
+ crypto_box_keypair,
2063
+ crypto_hash,
2064
+ crypto_sign,
2065
+ crypto_sign_keypair,
2066
+ crypto_sign_open,
2067
+ crypto_secretbox_KEYBYTES,
2068
+ crypto_secretbox_NONCEBYTES,
2069
+ crypto_secretbox_ZEROBYTES,
2070
+ crypto_secretbox_BOXZEROBYTES,
2071
+ crypto_scalarmult_BYTES,
2072
+ crypto_scalarmult_SCALARBYTES,
2073
+ crypto_box_PUBLICKEYBYTES,
2074
+ crypto_box_SECRETKEYBYTES,
2075
+ crypto_box_BEFORENMBYTES,
2076
+ crypto_box_NONCEBYTES,
2077
+ crypto_box_ZEROBYTES,
2078
+ crypto_box_BOXZEROBYTES,
2079
+ crypto_sign_BYTES,
2080
+ crypto_sign_PUBLICKEYBYTES,
2081
+ crypto_sign_SECRETKEYBYTES,
2082
+ crypto_sign_SEEDBYTES,
2083
+ crypto_hash_BYTES,
2084
+ gf,
2085
+ D,
2086
+ L,
2087
+ pack25519,
2088
+ unpack25519,
2089
+ M,
2090
+ A,
2091
+ S,
2092
+ Z,
2093
+ pow2523,
2094
+ add,
2095
+ set25519,
2096
+ modL,
2097
+ scalarmult,
2098
+ scalarbase
2099
+ };
2100
+ function checkLengths(k, n) {
2101
+ if (k.length !== crypto_secretbox_KEYBYTES)
2102
+ throw new Error("bad key size");
2103
+ if (n.length !== crypto_secretbox_NONCEBYTES)
2104
+ throw new Error("bad nonce size");
2105
+ }
2106
+ function checkBoxLengths(pk, sk) {
2107
+ if (pk.length !== crypto_box_PUBLICKEYBYTES)
2108
+ throw new Error("bad public key size");
2109
+ if (sk.length !== crypto_box_SECRETKEYBYTES)
2110
+ throw new Error("bad secret key size");
2111
+ }
2112
+ function checkArrayTypes() {
2113
+ for (var i = 0;i < arguments.length; i++) {
2114
+ if (!(arguments[i] instanceof Uint8Array))
2115
+ throw new TypeError("unexpected type, use Uint8Array");
2116
+ }
2117
+ }
2118
+ function cleanup(arr) {
2119
+ for (var i = 0;i < arr.length; i++)
2120
+ arr[i] = 0;
2121
+ }
2122
+ nacl.randomBytes = function(n) {
2123
+ var b = new Uint8Array(n);
2124
+ randombytes(b, n);
2125
+ return b;
2126
+ };
2127
+ nacl.secretbox = function(msg, nonce, key) {
2128
+ checkArrayTypes(msg, nonce, key);
2129
+ checkLengths(key, nonce);
2130
+ var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);
2131
+ var c = new Uint8Array(m.length);
2132
+ for (var i = 0;i < msg.length; i++)
2133
+ m[i + crypto_secretbox_ZEROBYTES] = msg[i];
2134
+ crypto_secretbox(c, m, m.length, nonce, key);
2135
+ return c.subarray(crypto_secretbox_BOXZEROBYTES);
2136
+ };
2137
+ nacl.secretbox.open = function(box, nonce, key) {
2138
+ checkArrayTypes(box, nonce, key);
2139
+ checkLengths(key, nonce);
2140
+ var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);
2141
+ var m = new Uint8Array(c.length);
2142
+ for (var i = 0;i < box.length; i++)
2143
+ c[i + crypto_secretbox_BOXZEROBYTES] = box[i];
2144
+ if (c.length < 32)
2145
+ return null;
2146
+ if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0)
2147
+ return null;
2148
+ return m.subarray(crypto_secretbox_ZEROBYTES);
2149
+ };
2150
+ nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;
2151
+ nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;
2152
+ nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;
2153
+ nacl.scalarMult = function(n, p) {
2154
+ checkArrayTypes(n, p);
2155
+ if (n.length !== crypto_scalarmult_SCALARBYTES)
2156
+ throw new Error("bad n size");
2157
+ if (p.length !== crypto_scalarmult_BYTES)
2158
+ throw new Error("bad p size");
2159
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
2160
+ crypto_scalarmult(q, n, p);
2161
+ return q;
2162
+ };
2163
+ nacl.scalarMult.base = function(n) {
2164
+ checkArrayTypes(n);
2165
+ if (n.length !== crypto_scalarmult_SCALARBYTES)
2166
+ throw new Error("bad n size");
2167
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
2168
+ crypto_scalarmult_base(q, n);
2169
+ return q;
2170
+ };
2171
+ nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;
2172
+ nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;
2173
+ nacl.box = function(msg, nonce, publicKey, secretKey) {
2174
+ var k = nacl.box.before(publicKey, secretKey);
2175
+ return nacl.secretbox(msg, nonce, k);
2176
+ };
2177
+ nacl.box.before = function(publicKey, secretKey) {
2178
+ checkArrayTypes(publicKey, secretKey);
2179
+ checkBoxLengths(publicKey, secretKey);
2180
+ var k = new Uint8Array(crypto_box_BEFORENMBYTES);
2181
+ crypto_box_beforenm(k, publicKey, secretKey);
2182
+ return k;
2183
+ };
2184
+ nacl.box.after = nacl.secretbox;
2185
+ nacl.box.open = function(msg, nonce, publicKey, secretKey) {
2186
+ var k = nacl.box.before(publicKey, secretKey);
2187
+ return nacl.secretbox.open(msg, nonce, k);
2188
+ };
2189
+ nacl.box.open.after = nacl.secretbox.open;
2190
+ nacl.box.keyPair = function() {
2191
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
2192
+ var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);
2193
+ crypto_box_keypair(pk, sk);
2194
+ return { publicKey: pk, secretKey: sk };
2195
+ };
2196
+ nacl.box.keyPair.fromSecretKey = function(secretKey) {
2197
+ checkArrayTypes(secretKey);
2198
+ if (secretKey.length !== crypto_box_SECRETKEYBYTES)
2199
+ throw new Error("bad secret key size");
2200
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
2201
+ crypto_scalarmult_base(pk, secretKey);
2202
+ return { publicKey: pk, secretKey: new Uint8Array(secretKey) };
2203
+ };
2204
+ nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;
2205
+ nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;
2206
+ nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;
2207
+ nacl.box.nonceLength = crypto_box_NONCEBYTES;
2208
+ nacl.box.overheadLength = nacl.secretbox.overheadLength;
2209
+ nacl.sign = function(msg, secretKey) {
2210
+ checkArrayTypes(msg, secretKey);
2211
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
2212
+ throw new Error("bad secret key size");
2213
+ var signedMsg = new Uint8Array(crypto_sign_BYTES + msg.length);
2214
+ crypto_sign(signedMsg, msg, msg.length, secretKey);
2215
+ return signedMsg;
2216
+ };
2217
+ nacl.sign.open = function(signedMsg, publicKey) {
2218
+ checkArrayTypes(signedMsg, publicKey);
2219
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
2220
+ throw new Error("bad public key size");
2221
+ var tmp = new Uint8Array(signedMsg.length);
2222
+ var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);
2223
+ if (mlen < 0)
2224
+ return null;
2225
+ var m = new Uint8Array(mlen);
2226
+ for (var i = 0;i < m.length; i++)
2227
+ m[i] = tmp[i];
2228
+ return m;
2229
+ };
2230
+ nacl.sign.detached = function(msg, secretKey) {
2231
+ var signedMsg = nacl.sign(msg, secretKey);
2232
+ var sig = new Uint8Array(crypto_sign_BYTES);
2233
+ for (var i = 0;i < sig.length; i++)
2234
+ sig[i] = signedMsg[i];
2235
+ return sig;
2236
+ };
2237
+ nacl.sign.detached.verify = function(msg, sig, publicKey) {
2238
+ checkArrayTypes(msg, sig, publicKey);
2239
+ if (sig.length !== crypto_sign_BYTES)
2240
+ throw new Error("bad signature size");
2241
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
2242
+ throw new Error("bad public key size");
2243
+ var sm = new Uint8Array(crypto_sign_BYTES + msg.length);
2244
+ var m = new Uint8Array(crypto_sign_BYTES + msg.length);
2245
+ var i;
2246
+ for (i = 0;i < crypto_sign_BYTES; i++)
2247
+ sm[i] = sig[i];
2248
+ for (i = 0;i < msg.length; i++)
2249
+ sm[i + crypto_sign_BYTES] = msg[i];
2250
+ return crypto_sign_open(m, sm, sm.length, publicKey) >= 0;
2251
+ };
2252
+ nacl.sign.keyPair = function() {
2253
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
2254
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
2255
+ crypto_sign_keypair(pk, sk);
2256
+ return { publicKey: pk, secretKey: sk };
2257
+ };
2258
+ nacl.sign.keyPair.fromSecretKey = function(secretKey) {
2259
+ checkArrayTypes(secretKey);
2260
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
2261
+ throw new Error("bad secret key size");
2262
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
2263
+ for (var i = 0;i < pk.length; i++)
2264
+ pk[i] = secretKey[32 + i];
2265
+ return { publicKey: pk, secretKey: new Uint8Array(secretKey) };
2266
+ };
2267
+ nacl.sign.keyPair.fromSeed = function(seed) {
2268
+ checkArrayTypes(seed);
2269
+ if (seed.length !== crypto_sign_SEEDBYTES)
2270
+ throw new Error("bad seed size");
2271
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
2272
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
2273
+ for (var i = 0;i < 32; i++)
2274
+ sk[i] = seed[i];
2275
+ crypto_sign_keypair(pk, sk, true);
2276
+ return { publicKey: pk, secretKey: sk };
2277
+ };
2278
+ nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;
2279
+ nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;
2280
+ nacl.sign.seedLength = crypto_sign_SEEDBYTES;
2281
+ nacl.sign.signatureLength = crypto_sign_BYTES;
2282
+ nacl.hash = function(msg) {
2283
+ checkArrayTypes(msg);
2284
+ var h = new Uint8Array(crypto_hash_BYTES);
2285
+ crypto_hash(h, msg, msg.length);
2286
+ return h;
2287
+ };
2288
+ nacl.hash.hashLength = crypto_hash_BYTES;
2289
+ nacl.verify = function(x, y) {
2290
+ checkArrayTypes(x, y);
2291
+ if (x.length === 0 || y.length === 0)
2292
+ return false;
2293
+ if (x.length !== y.length)
2294
+ return false;
2295
+ return vn(x, 0, y, 0, x.length) === 0 ? true : false;
2296
+ };
2297
+ nacl.setPRNG = function(fn) {
2298
+ randombytes = fn;
2299
+ };
2300
+ (function() {
2301
+ var crypto = typeof self !== "undefined" ? self.crypto || self.msCrypto : null;
2302
+ if (crypto && crypto.getRandomValues) {
2303
+ var QUOTA = 65536;
2304
+ nacl.setPRNG(function(x, n) {
2305
+ var i, v = new Uint8Array(n);
2306
+ for (i = 0;i < n; i += QUOTA) {
2307
+ crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
2308
+ }
2309
+ for (i = 0;i < n; i++)
2310
+ x[i] = v[i];
2311
+ cleanup(v);
2312
+ });
2313
+ } else if (true) {
2314
+ crypto = __require("crypto");
2315
+ if (crypto && crypto.randomBytes) {
2316
+ nacl.setPRNG(function(x, n) {
2317
+ var i, v = crypto.randomBytes(n);
2318
+ for (i = 0;i < n; i++)
2319
+ x[i] = v[i];
2320
+ cleanup(v);
2321
+ });
2322
+ }
2323
+ }
2324
+ })();
2325
+ })(typeof module !== "undefined" && exports ? exports : self.nacl = self.nacl || {});
2326
+ });
2327
+
2328
+ // src/chacha20.ts
2329
+ var exports_chacha20 = {};
2330
+ __export(exports_chacha20, {
2331
+ padNonce: () => padNonce,
2332
+ encrypt: () => encrypt,
2333
+ decrypt: () => decrypt,
2334
+ CHACHA20_NONCE_LENGTH: () => CHACHA20_NONCE_LENGTH,
2335
+ CHACHA20_AUTH_TAG_LENGTH: () => CHACHA20_AUTH_TAG_LENGTH
2336
+ });
2337
+
2338
+ // ../../node_modules/@stablelib/int/lib/int.js
2339
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;
2340
+
2341
+ // ../../node_modules/@stablelib/binary/lib/binary.js
2342
+ function writeUint32LE(value, out = new Uint8Array(4), offset = 0) {
2343
+ out[offset + 0] = value >>> 0;
2344
+ out[offset + 1] = value >>> 8;
2345
+ out[offset + 2] = value >>> 16;
2346
+ out[offset + 3] = value >>> 24;
2347
+ return out;
2348
+ }
2349
+ function writeUint64LE(value, out = new Uint8Array(8), offset = 0) {
2350
+ writeUint32LE(value >>> 0, out, offset);
2351
+ writeUint32LE(value / 4294967296 >>> 0, out, offset + 4);
2352
+ return out;
2353
+ }
2354
+
2355
+ // ../../node_modules/@stablelib/wipe/lib/wipe.js
2356
+ function wipe(array) {
2357
+ for (let i = 0;i < array.length; i++) {
2358
+ array[i] = 0;
2359
+ }
2360
+ return array;
2361
+ }
2362
+
2363
+ // ../../node_modules/@stablelib/chacha/lib/chacha.js
2364
+ var ROUNDS = 20;
2365
+ function core(out, input, key) {
2366
+ let j0 = 1634760805;
2367
+ let j1 = 857760878;
2368
+ let j2 = 2036477234;
2369
+ let j3 = 1797285236;
2370
+ let j4 = key[3] << 24 | key[2] << 16 | key[1] << 8 | key[0];
2371
+ let j5 = key[7] << 24 | key[6] << 16 | key[5] << 8 | key[4];
2372
+ let j6 = key[11] << 24 | key[10] << 16 | key[9] << 8 | key[8];
2373
+ let j7 = key[15] << 24 | key[14] << 16 | key[13] << 8 | key[12];
2374
+ let j8 = key[19] << 24 | key[18] << 16 | key[17] << 8 | key[16];
2375
+ let j9 = key[23] << 24 | key[22] << 16 | key[21] << 8 | key[20];
2376
+ let j10 = key[27] << 24 | key[26] << 16 | key[25] << 8 | key[24];
2377
+ let j11 = key[31] << 24 | key[30] << 16 | key[29] << 8 | key[28];
2378
+ let j12 = input[3] << 24 | input[2] << 16 | input[1] << 8 | input[0];
2379
+ let j13 = input[7] << 24 | input[6] << 16 | input[5] << 8 | input[4];
2380
+ let j14 = input[11] << 24 | input[10] << 16 | input[9] << 8 | input[8];
2381
+ let j15 = input[15] << 24 | input[14] << 16 | input[13] << 8 | input[12];
2382
+ let x0 = j0;
2383
+ let x1 = j1;
2384
+ let x2 = j2;
2385
+ let x3 = j3;
2386
+ let x4 = j4;
2387
+ let x5 = j5;
2388
+ let x6 = j6;
2389
+ let x7 = j7;
2390
+ let x8 = j8;
2391
+ let x9 = j9;
2392
+ let x10 = j10;
2393
+ let x11 = j11;
2394
+ let x12 = j12;
2395
+ let x13 = j13;
2396
+ let x14 = j14;
2397
+ let x15 = j15;
2398
+ for (let i = 0;i < ROUNDS; i += 2) {
2399
+ x0 = x0 + x4 | 0;
2400
+ x12 ^= x0;
2401
+ x12 = x12 >>> 32 - 16 | x12 << 16;
2402
+ x8 = x8 + x12 | 0;
2403
+ x4 ^= x8;
2404
+ x4 = x4 >>> 32 - 12 | x4 << 12;
2405
+ x1 = x1 + x5 | 0;
2406
+ x13 ^= x1;
2407
+ x13 = x13 >>> 32 - 16 | x13 << 16;
2408
+ x9 = x9 + x13 | 0;
2409
+ x5 ^= x9;
2410
+ x5 = x5 >>> 32 - 12 | x5 << 12;
2411
+ x2 = x2 + x6 | 0;
2412
+ x14 ^= x2;
2413
+ x14 = x14 >>> 32 - 16 | x14 << 16;
2414
+ x10 = x10 + x14 | 0;
2415
+ x6 ^= x10;
2416
+ x6 = x6 >>> 32 - 12 | x6 << 12;
2417
+ x3 = x3 + x7 | 0;
2418
+ x15 ^= x3;
2419
+ x15 = x15 >>> 32 - 16 | x15 << 16;
2420
+ x11 = x11 + x15 | 0;
2421
+ x7 ^= x11;
2422
+ x7 = x7 >>> 32 - 12 | x7 << 12;
2423
+ x2 = x2 + x6 | 0;
2424
+ x14 ^= x2;
2425
+ x14 = x14 >>> 32 - 8 | x14 << 8;
2426
+ x10 = x10 + x14 | 0;
2427
+ x6 ^= x10;
2428
+ x6 = x6 >>> 32 - 7 | x6 << 7;
2429
+ x3 = x3 + x7 | 0;
2430
+ x15 ^= x3;
2431
+ x15 = x15 >>> 32 - 8 | x15 << 8;
2432
+ x11 = x11 + x15 | 0;
2433
+ x7 ^= x11;
2434
+ x7 = x7 >>> 32 - 7 | x7 << 7;
2435
+ x1 = x1 + x5 | 0;
2436
+ x13 ^= x1;
2437
+ x13 = x13 >>> 32 - 8 | x13 << 8;
2438
+ x9 = x9 + x13 | 0;
2439
+ x5 ^= x9;
2440
+ x5 = x5 >>> 32 - 7 | x5 << 7;
2441
+ x0 = x0 + x4 | 0;
2442
+ x12 ^= x0;
2443
+ x12 = x12 >>> 32 - 8 | x12 << 8;
2444
+ x8 = x8 + x12 | 0;
2445
+ x4 ^= x8;
2446
+ x4 = x4 >>> 32 - 7 | x4 << 7;
2447
+ x0 = x0 + x5 | 0;
2448
+ x15 ^= x0;
2449
+ x15 = x15 >>> 32 - 16 | x15 << 16;
2450
+ x10 = x10 + x15 | 0;
2451
+ x5 ^= x10;
2452
+ x5 = x5 >>> 32 - 12 | x5 << 12;
2453
+ x1 = x1 + x6 | 0;
2454
+ x12 ^= x1;
2455
+ x12 = x12 >>> 32 - 16 | x12 << 16;
2456
+ x11 = x11 + x12 | 0;
2457
+ x6 ^= x11;
2458
+ x6 = x6 >>> 32 - 12 | x6 << 12;
2459
+ x2 = x2 + x7 | 0;
2460
+ x13 ^= x2;
2461
+ x13 = x13 >>> 32 - 16 | x13 << 16;
2462
+ x8 = x8 + x13 | 0;
2463
+ x7 ^= x8;
2464
+ x7 = x7 >>> 32 - 12 | x7 << 12;
2465
+ x3 = x3 + x4 | 0;
2466
+ x14 ^= x3;
2467
+ x14 = x14 >>> 32 - 16 | x14 << 16;
2468
+ x9 = x9 + x14 | 0;
2469
+ x4 ^= x9;
2470
+ x4 = x4 >>> 32 - 12 | x4 << 12;
2471
+ x2 = x2 + x7 | 0;
2472
+ x13 ^= x2;
2473
+ x13 = x13 >>> 32 - 8 | x13 << 8;
2474
+ x8 = x8 + x13 | 0;
2475
+ x7 ^= x8;
2476
+ x7 = x7 >>> 32 - 7 | x7 << 7;
2477
+ x3 = x3 + x4 | 0;
2478
+ x14 ^= x3;
2479
+ x14 = x14 >>> 32 - 8 | x14 << 8;
2480
+ x9 = x9 + x14 | 0;
2481
+ x4 ^= x9;
2482
+ x4 = x4 >>> 32 - 7 | x4 << 7;
2483
+ x1 = x1 + x6 | 0;
2484
+ x12 ^= x1;
2485
+ x12 = x12 >>> 32 - 8 | x12 << 8;
2486
+ x11 = x11 + x12 | 0;
2487
+ x6 ^= x11;
2488
+ x6 = x6 >>> 32 - 7 | x6 << 7;
2489
+ x0 = x0 + x5 | 0;
2490
+ x15 ^= x0;
2491
+ x15 = x15 >>> 32 - 8 | x15 << 8;
2492
+ x10 = x10 + x15 | 0;
2493
+ x5 ^= x10;
2494
+ x5 = x5 >>> 32 - 7 | x5 << 7;
2495
+ }
2496
+ writeUint32LE(x0 + j0 | 0, out, 0);
2497
+ writeUint32LE(x1 + j1 | 0, out, 4);
2498
+ writeUint32LE(x2 + j2 | 0, out, 8);
2499
+ writeUint32LE(x3 + j3 | 0, out, 12);
2500
+ writeUint32LE(x4 + j4 | 0, out, 16);
2501
+ writeUint32LE(x5 + j5 | 0, out, 20);
2502
+ writeUint32LE(x6 + j6 | 0, out, 24);
2503
+ writeUint32LE(x7 + j7 | 0, out, 28);
2504
+ writeUint32LE(x8 + j8 | 0, out, 32);
2505
+ writeUint32LE(x9 + j9 | 0, out, 36);
2506
+ writeUint32LE(x10 + j10 | 0, out, 40);
2507
+ writeUint32LE(x11 + j11 | 0, out, 44);
2508
+ writeUint32LE(x12 + j12 | 0, out, 48);
2509
+ writeUint32LE(x13 + j13 | 0, out, 52);
2510
+ writeUint32LE(x14 + j14 | 0, out, 56);
2511
+ writeUint32LE(x15 + j15 | 0, out, 60);
2512
+ }
2513
+ function streamXOR(key, nonce, src, dst, nonceInplaceCounterLength = 0) {
2514
+ if (key.length !== 32) {
2515
+ throw new Error("ChaCha: key size must be 32 bytes");
2516
+ }
2517
+ if (dst.length < src.length) {
2518
+ throw new Error("ChaCha: destination is shorter than source");
2519
+ }
2520
+ let nc;
2521
+ let counterLength;
2522
+ if (nonceInplaceCounterLength === 0) {
2523
+ if (nonce.length !== 8 && nonce.length !== 12) {
2524
+ throw new Error("ChaCha nonce must be 8 or 12 bytes");
2525
+ }
2526
+ nc = new Uint8Array(16);
2527
+ counterLength = nc.length - nonce.length;
2528
+ nc.set(nonce, counterLength);
2529
+ } else {
2530
+ if (nonce.length !== 16) {
2531
+ throw new Error("ChaCha nonce with counter must be 16 bytes");
2532
+ }
2533
+ nc = nonce;
2534
+ counterLength = nonceInplaceCounterLength;
2535
+ }
2536
+ const block = new Uint8Array(64);
2537
+ for (let i = 0;i < src.length; i += 64) {
2538
+ core(block, nc, key);
2539
+ for (let j = i;j < i + 64 && j < src.length; j++) {
2540
+ dst[j] = src[j] ^ block[j - i];
2541
+ }
2542
+ incrementCounter(nc, 0, counterLength);
2543
+ }
2544
+ wipe(block);
2545
+ if (nonceInplaceCounterLength === 0) {
2546
+ wipe(nc);
2547
+ }
2548
+ return dst;
2549
+ }
2550
+ function stream(key, nonce, dst, nonceInplaceCounterLength = 0) {
2551
+ wipe(dst);
2552
+ return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);
2553
+ }
2554
+ function incrementCounter(counter, pos, len) {
2555
+ let carry = 1;
2556
+ while (len--) {
2557
+ carry = carry + (counter[pos] & 255) | 0;
2558
+ counter[pos] = carry & 255;
2559
+ carry >>>= 8;
2560
+ pos++;
2561
+ }
2562
+ if (carry > 0) {
2563
+ throw new Error("ChaCha: counter overflow");
2564
+ }
2565
+ }
2566
+
2567
+ // ../../node_modules/@stablelib/constant-time/lib/constant-time.js
2568
+ function compare(a, b) {
2569
+ if (a.length !== b.length) {
2570
+ return 0;
2571
+ }
2572
+ let result = 0;
2573
+ for (let i = 0;i < a.length; i++) {
2574
+ result |= a[i] ^ b[i];
2575
+ }
2576
+ return 1 & result - 1 >>> 8;
2577
+ }
2578
+ function equal(a, b) {
2579
+ if (a.length === 0 || b.length === 0) {
2580
+ return false;
2581
+ }
2582
+ return compare(a, b) !== 0;
2583
+ }
2584
+
2585
+ // ../../node_modules/@stablelib/poly1305/lib/poly1305.js
2586
+ var DIGEST_LENGTH = 16;
2587
+
2588
+ class Poly1305 {
2589
+ digestLength = DIGEST_LENGTH;
2590
+ _buffer = new Uint8Array(16);
2591
+ _r = new Uint16Array(10);
2592
+ _h = new Uint16Array(10);
2593
+ _pad = new Uint16Array(8);
2594
+ _leftover = 0;
2595
+ _fin = 0;
2596
+ _finished = false;
2597
+ constructor(key) {
2598
+ let t0 = key[0] | key[1] << 8;
2599
+ this._r[0] = t0 & 8191;
2600
+ let t1 = key[2] | key[3] << 8;
2601
+ this._r[1] = (t0 >>> 13 | t1 << 3) & 8191;
2602
+ let t2 = key[4] | key[5] << 8;
2603
+ this._r[2] = (t1 >>> 10 | t2 << 6) & 7939;
2604
+ let t3 = key[6] | key[7] << 8;
2605
+ this._r[3] = (t2 >>> 7 | t3 << 9) & 8191;
2606
+ let t4 = key[8] | key[9] << 8;
2607
+ this._r[4] = (t3 >>> 4 | t4 << 12) & 255;
2608
+ this._r[5] = t4 >>> 1 & 8190;
2609
+ let t5 = key[10] | key[11] << 8;
2610
+ this._r[6] = (t4 >>> 14 | t5 << 2) & 8191;
2611
+ let t6 = key[12] | key[13] << 8;
2612
+ this._r[7] = (t5 >>> 11 | t6 << 5) & 8065;
2613
+ let t7 = key[14] | key[15] << 8;
2614
+ this._r[8] = (t6 >>> 8 | t7 << 8) & 8191;
2615
+ this._r[9] = t7 >>> 5 & 127;
2616
+ this._pad[0] = key[16] | key[17] << 8;
2617
+ this._pad[1] = key[18] | key[19] << 8;
2618
+ this._pad[2] = key[20] | key[21] << 8;
2619
+ this._pad[3] = key[22] | key[23] << 8;
2620
+ this._pad[4] = key[24] | key[25] << 8;
2621
+ this._pad[5] = key[26] | key[27] << 8;
2622
+ this._pad[6] = key[28] | key[29] << 8;
2623
+ this._pad[7] = key[30] | key[31] << 8;
2624
+ }
2625
+ _blocks(m, mpos, bytes) {
2626
+ let hibit = this._fin ? 0 : 1 << 11;
2627
+ let h0 = this._h[0], h1 = this._h[1], h2 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];
2628
+ let r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];
2629
+ while (bytes >= 16) {
2630
+ let t0 = m[mpos + 0] | m[mpos + 1] << 8;
2631
+ h0 += t0 & 8191;
2632
+ let t1 = m[mpos + 2] | m[mpos + 3] << 8;
2633
+ h1 += (t0 >>> 13 | t1 << 3) & 8191;
2634
+ let t2 = m[mpos + 4] | m[mpos + 5] << 8;
2635
+ h2 += (t1 >>> 10 | t2 << 6) & 8191;
2636
+ let t3 = m[mpos + 6] | m[mpos + 7] << 8;
2637
+ h3 += (t2 >>> 7 | t3 << 9) & 8191;
2638
+ let t4 = m[mpos + 8] | m[mpos + 9] << 8;
2639
+ h4 += (t3 >>> 4 | t4 << 12) & 8191;
2640
+ h5 += t4 >>> 1 & 8191;
2641
+ let t5 = m[mpos + 10] | m[mpos + 11] << 8;
2642
+ h6 += (t4 >>> 14 | t5 << 2) & 8191;
2643
+ let t6 = m[mpos + 12] | m[mpos + 13] << 8;
2644
+ h7 += (t5 >>> 11 | t6 << 5) & 8191;
2645
+ let t7 = m[mpos + 14] | m[mpos + 15] << 8;
2646
+ h8 += (t6 >>> 8 | t7 << 8) & 8191;
2647
+ h9 += t7 >>> 5 | hibit;
2648
+ let c = 0;
2649
+ let d0 = c;
2650
+ d0 += h0 * r0;
2651
+ d0 += h1 * (5 * r9);
2652
+ d0 += h2 * (5 * r8);
2653
+ d0 += h3 * (5 * r7);
2654
+ d0 += h4 * (5 * r6);
2655
+ c = d0 >>> 13;
2656
+ d0 &= 8191;
2657
+ d0 += h5 * (5 * r5);
2658
+ d0 += h6 * (5 * r4);
2659
+ d0 += h7 * (5 * r3);
2660
+ d0 += h8 * (5 * r2);
2661
+ d0 += h9 * (5 * r1);
2662
+ c += d0 >>> 13;
2663
+ d0 &= 8191;
2664
+ let d1 = c;
2665
+ d1 += h0 * r1;
2666
+ d1 += h1 * r0;
2667
+ d1 += h2 * (5 * r9);
2668
+ d1 += h3 * (5 * r8);
2669
+ d1 += h4 * (5 * r7);
2670
+ c = d1 >>> 13;
2671
+ d1 &= 8191;
2672
+ d1 += h5 * (5 * r6);
2673
+ d1 += h6 * (5 * r5);
2674
+ d1 += h7 * (5 * r4);
2675
+ d1 += h8 * (5 * r3);
2676
+ d1 += h9 * (5 * r2);
2677
+ c += d1 >>> 13;
2678
+ d1 &= 8191;
2679
+ let d2 = c;
2680
+ d2 += h0 * r2;
2681
+ d2 += h1 * r1;
2682
+ d2 += h2 * r0;
2683
+ d2 += h3 * (5 * r9);
2684
+ d2 += h4 * (5 * r8);
2685
+ c = d2 >>> 13;
2686
+ d2 &= 8191;
2687
+ d2 += h5 * (5 * r7);
2688
+ d2 += h6 * (5 * r6);
2689
+ d2 += h7 * (5 * r5);
2690
+ d2 += h8 * (5 * r4);
2691
+ d2 += h9 * (5 * r3);
2692
+ c += d2 >>> 13;
2693
+ d2 &= 8191;
2694
+ let d3 = c;
2695
+ d3 += h0 * r3;
2696
+ d3 += h1 * r2;
2697
+ d3 += h2 * r1;
2698
+ d3 += h3 * r0;
2699
+ d3 += h4 * (5 * r9);
2700
+ c = d3 >>> 13;
2701
+ d3 &= 8191;
2702
+ d3 += h5 * (5 * r8);
2703
+ d3 += h6 * (5 * r7);
2704
+ d3 += h7 * (5 * r6);
2705
+ d3 += h8 * (5 * r5);
2706
+ d3 += h9 * (5 * r4);
2707
+ c += d3 >>> 13;
2708
+ d3 &= 8191;
2709
+ let d4 = c;
2710
+ d4 += h0 * r4;
2711
+ d4 += h1 * r3;
2712
+ d4 += h2 * r2;
2713
+ d4 += h3 * r1;
2714
+ d4 += h4 * r0;
2715
+ c = d4 >>> 13;
2716
+ d4 &= 8191;
2717
+ d4 += h5 * (5 * r9);
2718
+ d4 += h6 * (5 * r8);
2719
+ d4 += h7 * (5 * r7);
2720
+ d4 += h8 * (5 * r6);
2721
+ d4 += h9 * (5 * r5);
2722
+ c += d4 >>> 13;
2723
+ d4 &= 8191;
2724
+ let d5 = c;
2725
+ d5 += h0 * r5;
2726
+ d5 += h1 * r4;
2727
+ d5 += h2 * r3;
2728
+ d5 += h3 * r2;
2729
+ d5 += h4 * r1;
2730
+ c = d5 >>> 13;
2731
+ d5 &= 8191;
2732
+ d5 += h5 * r0;
2733
+ d5 += h6 * (5 * r9);
2734
+ d5 += h7 * (5 * r8);
2735
+ d5 += h8 * (5 * r7);
2736
+ d5 += h9 * (5 * r6);
2737
+ c += d5 >>> 13;
2738
+ d5 &= 8191;
2739
+ let d6 = c;
2740
+ d6 += h0 * r6;
2741
+ d6 += h1 * r5;
2742
+ d6 += h2 * r4;
2743
+ d6 += h3 * r3;
2744
+ d6 += h4 * r2;
2745
+ c = d6 >>> 13;
2746
+ d6 &= 8191;
2747
+ d6 += h5 * r1;
2748
+ d6 += h6 * r0;
2749
+ d6 += h7 * (5 * r9);
2750
+ d6 += h8 * (5 * r8);
2751
+ d6 += h9 * (5 * r7);
2752
+ c += d6 >>> 13;
2753
+ d6 &= 8191;
2754
+ let d7 = c;
2755
+ d7 += h0 * r7;
2756
+ d7 += h1 * r6;
2757
+ d7 += h2 * r5;
2758
+ d7 += h3 * r4;
2759
+ d7 += h4 * r3;
2760
+ c = d7 >>> 13;
2761
+ d7 &= 8191;
2762
+ d7 += h5 * r2;
2763
+ d7 += h6 * r1;
2764
+ d7 += h7 * r0;
2765
+ d7 += h8 * (5 * r9);
2766
+ d7 += h9 * (5 * r8);
2767
+ c += d7 >>> 13;
2768
+ d7 &= 8191;
2769
+ let d8 = c;
2770
+ d8 += h0 * r8;
2771
+ d8 += h1 * r7;
2772
+ d8 += h2 * r6;
2773
+ d8 += h3 * r5;
2774
+ d8 += h4 * r4;
2775
+ c = d8 >>> 13;
2776
+ d8 &= 8191;
2777
+ d8 += h5 * r3;
2778
+ d8 += h6 * r2;
2779
+ d8 += h7 * r1;
2780
+ d8 += h8 * r0;
2781
+ d8 += h9 * (5 * r9);
2782
+ c += d8 >>> 13;
2783
+ d8 &= 8191;
2784
+ let d9 = c;
2785
+ d9 += h0 * r9;
2786
+ d9 += h1 * r8;
2787
+ d9 += h2 * r7;
2788
+ d9 += h3 * r6;
2789
+ d9 += h4 * r5;
2790
+ c = d9 >>> 13;
2791
+ d9 &= 8191;
2792
+ d9 += h5 * r4;
2793
+ d9 += h6 * r3;
2794
+ d9 += h7 * r2;
2795
+ d9 += h8 * r1;
2796
+ d9 += h9 * r0;
2797
+ c += d9 >>> 13;
2798
+ d9 &= 8191;
2799
+ c = (c << 2) + c | 0;
2800
+ c = c + d0 | 0;
2801
+ d0 = c & 8191;
2802
+ c = c >>> 13;
2803
+ d1 += c;
2804
+ h0 = d0;
2805
+ h1 = d1;
2806
+ h2 = d2;
2807
+ h3 = d3;
2808
+ h4 = d4;
2809
+ h5 = d5;
2810
+ h6 = d6;
2811
+ h7 = d7;
2812
+ h8 = d8;
2813
+ h9 = d9;
2814
+ mpos += 16;
2815
+ bytes -= 16;
2816
+ }
2817
+ this._h[0] = h0;
2818
+ this._h[1] = h1;
2819
+ this._h[2] = h2;
2820
+ this._h[3] = h3;
2821
+ this._h[4] = h4;
2822
+ this._h[5] = h5;
2823
+ this._h[6] = h6;
2824
+ this._h[7] = h7;
2825
+ this._h[8] = h8;
2826
+ this._h[9] = h9;
2827
+ }
2828
+ finish(mac, macpos = 0) {
2829
+ const g = new Uint16Array(10);
2830
+ let c;
2831
+ let mask;
2832
+ let f;
2833
+ let i;
2834
+ if (this._leftover) {
2835
+ i = this._leftover;
2836
+ this._buffer[i++] = 1;
2837
+ for (;i < 16; i++) {
2838
+ this._buffer[i] = 0;
2839
+ }
2840
+ this._fin = 1;
2841
+ this._blocks(this._buffer, 0, 16);
2842
+ }
2843
+ c = this._h[1] >>> 13;
2844
+ this._h[1] &= 8191;
2845
+ for (i = 2;i < 10; i++) {
2846
+ this._h[i] += c;
2847
+ c = this._h[i] >>> 13;
2848
+ this._h[i] &= 8191;
2849
+ }
2850
+ this._h[0] += c * 5;
2851
+ c = this._h[0] >>> 13;
2852
+ this._h[0] &= 8191;
2853
+ this._h[1] += c;
2854
+ c = this._h[1] >>> 13;
2855
+ this._h[1] &= 8191;
2856
+ this._h[2] += c;
2857
+ g[0] = this._h[0] + 5;
2858
+ c = g[0] >>> 13;
2859
+ g[0] &= 8191;
2860
+ for (i = 1;i < 10; i++) {
2861
+ g[i] = this._h[i] + c;
2862
+ c = g[i] >>> 13;
2863
+ g[i] &= 8191;
2864
+ }
2865
+ g[9] -= 1 << 13;
2866
+ mask = (c ^ 1) - 1;
2867
+ for (i = 0;i < 10; i++) {
2868
+ g[i] &= mask;
2869
+ }
2870
+ mask = ~mask;
2871
+ for (i = 0;i < 10; i++) {
2872
+ this._h[i] = this._h[i] & mask | g[i];
2873
+ }
2874
+ this._h[0] = (this._h[0] | this._h[1] << 13) & 65535;
2875
+ this._h[1] = (this._h[1] >>> 3 | this._h[2] << 10) & 65535;
2876
+ this._h[2] = (this._h[2] >>> 6 | this._h[3] << 7) & 65535;
2877
+ this._h[3] = (this._h[3] >>> 9 | this._h[4] << 4) & 65535;
2878
+ this._h[4] = (this._h[4] >>> 12 | this._h[5] << 1 | this._h[6] << 14) & 65535;
2879
+ this._h[5] = (this._h[6] >>> 2 | this._h[7] << 11) & 65535;
2880
+ this._h[6] = (this._h[7] >>> 5 | this._h[8] << 8) & 65535;
2881
+ this._h[7] = (this._h[8] >>> 8 | this._h[9] << 5) & 65535;
2882
+ f = this._h[0] + this._pad[0];
2883
+ this._h[0] = f & 65535;
2884
+ for (i = 1;i < 8; i++) {
2885
+ f = (this._h[i] + this._pad[i] | 0) + (f >>> 16) | 0;
2886
+ this._h[i] = f & 65535;
2887
+ }
2888
+ mac[macpos + 0] = this._h[0] >>> 0;
2889
+ mac[macpos + 1] = this._h[0] >>> 8;
2890
+ mac[macpos + 2] = this._h[1] >>> 0;
2891
+ mac[macpos + 3] = this._h[1] >>> 8;
2892
+ mac[macpos + 4] = this._h[2] >>> 0;
2893
+ mac[macpos + 5] = this._h[2] >>> 8;
2894
+ mac[macpos + 6] = this._h[3] >>> 0;
2895
+ mac[macpos + 7] = this._h[3] >>> 8;
2896
+ mac[macpos + 8] = this._h[4] >>> 0;
2897
+ mac[macpos + 9] = this._h[4] >>> 8;
2898
+ mac[macpos + 10] = this._h[5] >>> 0;
2899
+ mac[macpos + 11] = this._h[5] >>> 8;
2900
+ mac[macpos + 12] = this._h[6] >>> 0;
2901
+ mac[macpos + 13] = this._h[6] >>> 8;
2902
+ mac[macpos + 14] = this._h[7] >>> 0;
2903
+ mac[macpos + 15] = this._h[7] >>> 8;
2904
+ this._finished = true;
2905
+ return this;
2906
+ }
2907
+ update(m) {
2908
+ let mpos = 0;
2909
+ let bytes = m.length;
2910
+ let want;
2911
+ if (this._leftover) {
2912
+ want = 16 - this._leftover;
2913
+ if (want > bytes) {
2914
+ want = bytes;
2915
+ }
2916
+ for (let i = 0;i < want; i++) {
2917
+ this._buffer[this._leftover + i] = m[mpos + i];
2918
+ }
2919
+ bytes -= want;
2920
+ mpos += want;
2921
+ this._leftover += want;
2922
+ if (this._leftover < 16) {
2923
+ return this;
2924
+ }
2925
+ this._blocks(this._buffer, 0, 16);
2926
+ this._leftover = 0;
2927
+ }
2928
+ if (bytes >= 16) {
2929
+ want = bytes - bytes % 16;
2930
+ this._blocks(m, mpos, want);
2931
+ mpos += want;
2932
+ bytes -= want;
2933
+ }
2934
+ if (bytes) {
2935
+ for (let i = 0;i < bytes; i++) {
2936
+ this._buffer[this._leftover + i] = m[mpos + i];
2937
+ }
2938
+ this._leftover += bytes;
2939
+ }
2940
+ return this;
2941
+ }
2942
+ digest() {
2943
+ if (this._finished) {
2944
+ throw new Error("Poly1305 was finished");
2945
+ }
2946
+ let mac = new Uint8Array(16);
2947
+ this.finish(mac);
2948
+ return mac;
2949
+ }
2950
+ clean() {
2951
+ wipe(this._buffer);
2952
+ wipe(this._r);
2953
+ wipe(this._h);
2954
+ wipe(this._pad);
2955
+ this._leftover = 0;
2956
+ this._fin = 0;
2957
+ this._finished = true;
2958
+ return this;
2959
+ }
2960
+ }
2961
+
2962
+ // ../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js
2963
+ var KEY_LENGTH = 32;
2964
+ var NONCE_LENGTH = 12;
2965
+ var TAG_LENGTH = 16;
2966
+ var ZEROS = new Uint8Array(16);
2967
+
2968
+ class ChaCha20Poly1305 {
2969
+ nonceLength = NONCE_LENGTH;
2970
+ tagLength = TAG_LENGTH;
2971
+ _key;
2972
+ constructor(key) {
2973
+ if (key.length !== KEY_LENGTH) {
2974
+ throw new Error("ChaCha20Poly1305 needs 32-byte key");
2975
+ }
2976
+ this._key = new Uint8Array(key);
2977
+ }
2978
+ seal(nonce, plaintext, associatedData, dst) {
2979
+ if (nonce.length > 16) {
2980
+ throw new Error("ChaCha20Poly1305: incorrect nonce length");
2981
+ }
2982
+ const counter = new Uint8Array(16);
2983
+ counter.set(nonce, counter.length - nonce.length);
2984
+ const authKey = new Uint8Array(32);
2985
+ stream(this._key, counter, authKey, 4);
2986
+ const resultLength = plaintext.length + this.tagLength;
2987
+ let result;
2988
+ if (dst) {
2989
+ if (dst.length !== resultLength) {
2990
+ throw new Error("ChaCha20Poly1305: incorrect destination length");
2991
+ }
2992
+ result = dst;
2993
+ } else {
2994
+ result = new Uint8Array(resultLength);
2995
+ }
2996
+ streamXOR(this._key, counter, plaintext, result, 4);
2997
+ this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);
2998
+ wipe(counter);
2999
+ return result;
3000
+ }
3001
+ open(nonce, sealed, associatedData, dst) {
3002
+ if (nonce.length > 16) {
3003
+ throw new Error("ChaCha20Poly1305: incorrect nonce length");
3004
+ }
3005
+ if (sealed.length < this.tagLength) {
3006
+ return null;
3007
+ }
3008
+ const counter = new Uint8Array(16);
3009
+ counter.set(nonce, counter.length - nonce.length);
3010
+ const authKey = new Uint8Array(32);
3011
+ stream(this._key, counter, authKey, 4);
3012
+ const calculatedTag = new Uint8Array(this.tagLength);
3013
+ this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);
3014
+ if (!equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {
3015
+ return null;
3016
+ }
3017
+ const resultLength = sealed.length - this.tagLength;
3018
+ let result;
3019
+ if (dst) {
3020
+ if (dst.length !== resultLength) {
3021
+ throw new Error("ChaCha20Poly1305: incorrect destination length");
3022
+ }
3023
+ result = dst;
3024
+ } else {
3025
+ result = new Uint8Array(resultLength);
3026
+ }
3027
+ streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);
3028
+ wipe(counter);
3029
+ return result;
3030
+ }
3031
+ clean() {
3032
+ wipe(this._key);
3033
+ return this;
3034
+ }
3035
+ _authenticate(tagOut, authKey, ciphertext, associatedData) {
3036
+ const h = new Poly1305(authKey);
3037
+ if (associatedData) {
3038
+ h.update(associatedData);
3039
+ if (associatedData.length % 16 > 0) {
3040
+ h.update(ZEROS.subarray(associatedData.length % 16));
3041
+ }
3042
+ }
3043
+ h.update(ciphertext);
3044
+ if (ciphertext.length % 16 > 0) {
3045
+ h.update(ZEROS.subarray(ciphertext.length % 16));
3046
+ }
3047
+ const length = new Uint8Array(8);
3048
+ if (associatedData) {
3049
+ writeUint64LE(associatedData.length, length);
3050
+ }
3051
+ h.update(length);
3052
+ writeUint64LE(ciphertext.length, length);
3053
+ h.update(length);
3054
+ const tag = h.digest();
3055
+ for (let i = 0;i < tag.length; i++) {
3056
+ tagOut[i] = tag[i];
3057
+ }
3058
+ h.clean();
3059
+ wipe(tag);
3060
+ wipe(length);
3061
+ }
3062
+ }
3063
+
3064
+ // src/chacha20.ts
3065
+ var CHACHA20_AUTH_TAG_LENGTH = 16;
3066
+ var CHACHA20_NONCE_LENGTH = 12;
3067
+ function decrypt(key, nonce, aad, ciphertext, authTag) {
3068
+ nonce = padNonce(nonce);
3069
+ const chacha = new ChaCha20Poly1305(key);
3070
+ const sealed = Buffer.concat([ciphertext, authTag]);
3071
+ const plaintext = chacha.open(nonce, sealed, aad ?? undefined);
3072
+ if (!plaintext) {
3073
+ throw new Error("Decryption failed: authentication tag mismatch");
3074
+ }
3075
+ return Buffer.from(plaintext);
3076
+ }
3077
+ function encrypt(key, nonce, aad, plaintext) {
3078
+ nonce = padNonce(nonce);
3079
+ const chacha = new ChaCha20Poly1305(key);
3080
+ const sealed = chacha.seal(nonce, plaintext, aad ?? undefined);
3081
+ const ciphertext = Buffer.from(sealed.subarray(0, sealed.length - CHACHA20_AUTH_TAG_LENGTH));
3082
+ const authTag = Buffer.from(sealed.subarray(sealed.length - CHACHA20_AUTH_TAG_LENGTH));
3083
+ return {
3084
+ ciphertext,
3085
+ authTag
3086
+ };
3087
+ }
3088
+ function padNonce(nonce) {
3089
+ if (nonce.length >= CHACHA20_NONCE_LENGTH) {
3090
+ return nonce;
3091
+ }
3092
+ return Buffer.concat([
3093
+ Buffer.alloc(CHACHA20_NONCE_LENGTH - nonce.length, 0),
3094
+ nonce
3095
+ ]);
3096
+ }
3097
+ // src/curve25519.ts
3098
+ var exports_curve25519 = {};
3099
+ __export(exports_curve25519, {
3100
+ generateSharedSecKey: () => generateSharedSecKey,
3101
+ generateKeyPair: () => generateKeyPair
3102
+ });
3103
+ var import_tweetnacl = __toESM(require_nacl_fast(), 1);
3104
+ function generateKeyPair() {
3105
+ const keyPair = import_tweetnacl.default.box.keyPair();
3106
+ return {
3107
+ publicKey: keyPair.publicKey,
3108
+ secretKey: keyPair.secretKey
3109
+ };
3110
+ }
3111
+ function generateSharedSecKey(priKey, pubKey) {
3112
+ return import_tweetnacl.default.scalarMult(priKey, pubKey);
3113
+ }
3114
+ // src/ed25519.ts
3115
+ var exports_ed25519 = {};
3116
+ __export(exports_ed25519, {
3117
+ verify: () => verify,
3118
+ sign: () => sign,
3119
+ generateKeyPair: () => generateKeyPair2
3120
+ });
3121
+ var import_tweetnacl2 = __toESM(require_nacl_fast(), 1);
3122
+ function generateKeyPair2() {
3123
+ const keyPair = import_tweetnacl2.default.sign.keyPair();
3124
+ return {
3125
+ publicKey: keyPair.publicKey,
3126
+ secretKey: keyPair.secretKey
3127
+ };
3128
+ }
3129
+ function sign(message, secretKey) {
3130
+ return import_tweetnacl2.default.sign.detached(message, secretKey);
3131
+ }
3132
+ function verify(message, signature, publicKey) {
3133
+ return import_tweetnacl2.default.sign.detached.verify(message, signature, publicKey);
3134
+ }
3135
+ // src/hkdf.ts
3136
+ import { hkdfSync } from "node:crypto";
3137
+ function hkdf_default(options) {
3138
+ return Buffer.from(hkdfSync(options.hash, options.key, options.salt, options.info, options.length));
3139
+ }
3140
+ export {
3141
+ hkdf_default as hkdf,
3142
+ exports_ed25519 as Ed25519,
3143
+ exports_curve25519 as Curve25519,
3144
+ exports_chacha20 as Chacha20
3145
+ };