@basmilius/apple-encryption 0.7.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js DELETED
@@ -1,3145 +0,0 @@
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
- };