@cogitator-ai/wasm-tools 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +141 -6
  2. package/dist/index.d.ts +227 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +194 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/plugins/compression.d.ts +2 -0
  7. package/dist/plugins/compression.d.ts.map +1 -0
  8. package/dist/plugins/compression.js +530 -0
  9. package/dist/plugins/compression.js.map +1 -0
  10. package/dist/plugins/csv.d.ts +2 -0
  11. package/dist/plugins/csv.d.ts.map +1 -0
  12. package/dist/plugins/csv.js +138 -0
  13. package/dist/plugins/csv.js.map +1 -0
  14. package/dist/plugins/datetime.d.ts +2 -0
  15. package/dist/plugins/datetime.d.ts.map +1 -0
  16. package/dist/plugins/datetime.js +184 -0
  17. package/dist/plugins/datetime.js.map +1 -0
  18. package/dist/plugins/diff.d.ts +2 -0
  19. package/dist/plugins/diff.d.ts.map +1 -0
  20. package/dist/plugins/diff.js +187 -0
  21. package/dist/plugins/diff.js.map +1 -0
  22. package/dist/plugins/markdown.d.ts +2 -0
  23. package/dist/plugins/markdown.d.ts.map +1 -0
  24. package/dist/plugins/markdown.js +203 -0
  25. package/dist/plugins/markdown.js.map +1 -0
  26. package/dist/plugins/regex.d.ts +2 -0
  27. package/dist/plugins/regex.d.ts.map +1 -0
  28. package/dist/plugins/regex.js +119 -0
  29. package/dist/plugins/regex.js.map +1 -0
  30. package/dist/plugins/signing.d.ts +2 -0
  31. package/dist/plugins/signing.d.ts.map +1 -0
  32. package/dist/plugins/signing.js +565 -0
  33. package/dist/plugins/signing.js.map +1 -0
  34. package/dist/plugins/slug.d.ts +2 -0
  35. package/dist/plugins/slug.d.ts.map +1 -0
  36. package/dist/plugins/slug.js +180 -0
  37. package/dist/plugins/slug.js.map +1 -0
  38. package/dist/plugins/validation.d.ts +2 -0
  39. package/dist/plugins/validation.d.ts.map +1 -0
  40. package/dist/plugins/validation.js +105 -0
  41. package/dist/plugins/validation.js.map +1 -0
  42. package/dist/plugins/xml.d.ts +2 -0
  43. package/dist/plugins/xml.d.ts.map +1 -0
  44. package/dist/plugins/xml.js +293 -0
  45. package/dist/plugins/xml.js.map +1 -0
  46. package/dist/temp/compression.js +614 -0
  47. package/dist/temp/csv.js +154 -0
  48. package/dist/temp/datetime.js +196 -0
  49. package/dist/temp/diff.js +198 -0
  50. package/dist/temp/markdown.js +220 -0
  51. package/dist/temp/regex.js +140 -0
  52. package/dist/temp/signing.js +569 -0
  53. package/dist/temp/slug.js +198 -0
  54. package/dist/temp/validation.js +125 -0
  55. package/dist/temp/xml.js +289 -0
  56. package/dist/wasm/base64.wasm +0 -0
  57. package/dist/wasm/calc.wasm +0 -0
  58. package/dist/wasm/compression.wasm +0 -0
  59. package/dist/wasm/csv.wasm +0 -0
  60. package/dist/wasm/datetime.wasm +0 -0
  61. package/dist/wasm/diff.wasm +0 -0
  62. package/dist/wasm/hash.wasm +0 -0
  63. package/dist/wasm/json.wasm +0 -0
  64. package/dist/wasm/markdown.wasm +0 -0
  65. package/dist/wasm/regex.wasm +0 -0
  66. package/dist/wasm/signing.wasm +0 -0
  67. package/dist/wasm/slug.wasm +0 -0
  68. package/dist/wasm/validation.wasm +0 -0
  69. package/dist/wasm/xml.wasm +0 -0
  70. package/package.json +2 -2
@@ -0,0 +1,565 @@
1
+ function hexToBytes(hex) {
2
+ const bytes = new Uint8Array(hex.length / 2);
3
+ for (let i = 0; i < hex.length; i += 2) {
4
+ bytes[i / 2] = parseInt(hex.substr(i, 2), 16);
5
+ }
6
+ return bytes;
7
+ }
8
+ function bytesToHex(bytes) {
9
+ return Array.from(bytes)
10
+ .map((b) => b.toString(16).padStart(2, '0'))
11
+ .join('');
12
+ }
13
+ const B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
14
+ function base64ToBytes(b64) {
15
+ const clean = b64.replace(/[^A-Za-z0-9+/]/g, '');
16
+ const len = clean.length;
17
+ const outLen = Math.floor((len * 3) / 4) - (b64.endsWith('==') ? 2 : b64.endsWith('=') ? 1 : 0);
18
+ const out = new Uint8Array(outLen);
19
+ const lookup = {};
20
+ for (let i = 0; i < B64.length; i++)
21
+ lookup[B64[i]] = i;
22
+ let j = 0;
23
+ for (let i = 0; i < len; i += 4) {
24
+ const a = lookup[clean[i]] || 0;
25
+ const b = lookup[clean[i + 1]] || 0;
26
+ const c = lookup[clean[i + 2]] || 0;
27
+ const d = lookup[clean[i + 3]] || 0;
28
+ out[j++] = (a << 2) | (b >> 4);
29
+ if (j < outLen)
30
+ out[j++] = ((b & 15) << 4) | (c >> 2);
31
+ if (j < outLen)
32
+ out[j++] = ((c & 3) << 6) | d;
33
+ }
34
+ return out;
35
+ }
36
+ function bytesToBase64(bytes) {
37
+ let r = '';
38
+ for (let i = 0; i < bytes.length; i += 3) {
39
+ const b1 = bytes[i], b2 = bytes[i + 1] ?? 0, b3 = bytes[i + 2] ?? 0;
40
+ r += B64[b1 >> 2];
41
+ r += B64[((b1 & 3) << 4) | (b2 >> 4)];
42
+ r += i + 1 < bytes.length ? B64[((b2 & 15) << 2) | (b3 >> 6)] : '=';
43
+ r += i + 2 < bytes.length ? B64[b3 & 63] : '=';
44
+ }
45
+ return r;
46
+ }
47
+ function decodeKey(key, encoding) {
48
+ return encoding === 'base64' ? base64ToBytes(key) : hexToBytes(key);
49
+ }
50
+ function encodeKey(bytes, encoding) {
51
+ return encoding === 'base64' ? bytesToBase64(bytes) : bytesToHex(bytes);
52
+ }
53
+ function sha512(message) {
54
+ const K = [
55
+ 0x428a2f98n,
56
+ 0xd728ae22n,
57
+ 0x71374491n,
58
+ 0x23ef65cdn,
59
+ 0xb5c0fbcfn,
60
+ 0xec4d3b2fn,
61
+ 0xe9b5dba5n,
62
+ 0x8189dbbcn,
63
+ 0x3956c25bn,
64
+ 0xf348b538n,
65
+ 0x59f111f1n,
66
+ 0xb605d019n,
67
+ 0x923f82a4n,
68
+ 0xaf194f9bn,
69
+ 0xab1c5ed5n,
70
+ 0xda6d8118n,
71
+ 0xd807aa98n,
72
+ 0xa3030242n,
73
+ 0x12835b01n,
74
+ 0x45706fben,
75
+ 0x243185ben,
76
+ 0x4ee4b28cn,
77
+ 0x550c7dc3n,
78
+ 0xd5ffb4e2n,
79
+ 0x72be5d74n,
80
+ 0xf27b896fn,
81
+ 0x80deb1fen,
82
+ 0x3b1696b1n,
83
+ 0x9bdc06a7n,
84
+ 0x25c71235n,
85
+ 0xc19bf174n,
86
+ 0xcf692694n,
87
+ 0xe49b69c1n,
88
+ 0x9ef14ad2n,
89
+ 0xefbe4786n,
90
+ 0x384f25e3n,
91
+ 0x0fc19dc6n,
92
+ 0x8b8cd5b5n,
93
+ 0x240ca1ccn,
94
+ 0x77ac9c65n,
95
+ 0x2de92c6fn,
96
+ 0x592b0275n,
97
+ 0x4a7484aan,
98
+ 0x6ea6e483n,
99
+ 0x5cb0a9dcn,
100
+ 0xbd41fbd4n,
101
+ 0x76f988dan,
102
+ 0x831153b5n,
103
+ 0x983e5152n,
104
+ 0xee66dfabn,
105
+ 0xa831c66dn,
106
+ 0x2db43210n,
107
+ 0xb00327c8n,
108
+ 0x98fb213fn,
109
+ 0xbf597fc7n,
110
+ 0xbeef0ee4n,
111
+ 0xc6e00bf3n,
112
+ 0x3da88fc2n,
113
+ 0xd5a79147n,
114
+ 0x930aa725n,
115
+ 0x06ca6351n,
116
+ 0xe003826fn,
117
+ 0x14292967n,
118
+ 0x0a0e6e70n,
119
+ 0x27b70a85n,
120
+ 0x46d22ffcn,
121
+ 0x2e1b2138n,
122
+ 0x5c26c926n,
123
+ 0x4d2c6dfcn,
124
+ 0x5ac42aedn,
125
+ 0x53380d13n,
126
+ 0x9d95b3dfn,
127
+ 0x650a7354n,
128
+ 0x8baf63den,
129
+ 0x766a0abbn,
130
+ 0x3c77b2a8n,
131
+ 0x81c2c92en,
132
+ 0x47edaee6n,
133
+ 0x92722c85n,
134
+ 0x1482353bn,
135
+ 0xa2bfe8a1n,
136
+ 0x4cf10364n,
137
+ 0xa81a664bn,
138
+ 0xbc423001n,
139
+ 0xc24b8b70n,
140
+ 0xd0f89791n,
141
+ 0xc76c51a3n,
142
+ 0x0654be30n,
143
+ 0xd192e819n,
144
+ 0xd6ef5218n,
145
+ 0xd6990624n,
146
+ 0x5565a910n,
147
+ 0xf40e3585n,
148
+ 0x5771202an,
149
+ 0x106aa070n,
150
+ 0x32bbd1b8n,
151
+ 0x19a4c116n,
152
+ 0xb8d2d0c8n,
153
+ 0x1e376c08n,
154
+ 0x5141ab53n,
155
+ 0x2748774cn,
156
+ 0xdf8eeb99n,
157
+ 0x34b0bcb5n,
158
+ 0xe19b48a8n,
159
+ 0x391c0cb3n,
160
+ 0xc5c95a63n,
161
+ 0x4ed8aa4an,
162
+ 0xe3418acbn,
163
+ 0x5b9cca4fn,
164
+ 0x7763e373n,
165
+ 0x682e6ff3n,
166
+ 0xd6b2b8a3n,
167
+ 0x748f82een,
168
+ 0x5defb2fcn,
169
+ 0x78a5636fn,
170
+ 0x43172f60n,
171
+ 0x84c87814n,
172
+ 0xa1f0ab72n,
173
+ 0x8cc70208n,
174
+ 0x1a6439ecn,
175
+ 0x90befffan,
176
+ 0x23631e28n,
177
+ 0xa4506cebn,
178
+ 0xde82bde9n,
179
+ 0xbef9a3f7n,
180
+ 0xb2c67915n,
181
+ 0xc67178f2n,
182
+ 0xe372532bn,
183
+ 0xca273ecen,
184
+ 0xea26619cn,
185
+ 0xd186b8c7n,
186
+ 0x21c0c207n,
187
+ 0xeada7dd6n,
188
+ 0xcde0eb1en,
189
+ 0xf57d4f7fn,
190
+ 0xee6ed178n,
191
+ 0x06f067aan,
192
+ 0x72176fban,
193
+ 0x0a637dc5n,
194
+ 0xa2c898a6n,
195
+ 0x113f9804n,
196
+ 0xbef90daen,
197
+ 0x1b710b35n,
198
+ 0x131c471bn,
199
+ 0x28db77f5n,
200
+ 0x23047d84n,
201
+ 0x32caab7bn,
202
+ 0x40c72493n,
203
+ 0x3c9ebe0an,
204
+ 0x15c9bebcn,
205
+ 0x431d67c4n,
206
+ 0x9c100d4cn,
207
+ 0x4cc5d4ben,
208
+ 0xcb3e42b6n,
209
+ 0x597f299cn,
210
+ 0xfc657e2an,
211
+ 0x5fcb6fabn,
212
+ 0x3ad6faecn,
213
+ 0x6c44198cn,
214
+ 0x4a475817n,
215
+ ];
216
+ const H = [
217
+ 0x6a09e667f3bcc908n,
218
+ 0xbb67ae8584caa73bn,
219
+ 0x3c6ef372fe94f82bn,
220
+ 0xa54ff53a5f1d36f1n,
221
+ 0x510e527fade682d1n,
222
+ 0x9b05688c2b3e6c1fn,
223
+ 0x1f83d9abfb41bd6bn,
224
+ 0x5be0cd19137e2179n,
225
+ ];
226
+ const msg = new Uint8Array(message);
227
+ const bitLen = BigInt(msg.length * 8);
228
+ const padLen = (128 - ((msg.length + 17) % 128)) % 128;
229
+ const padded = new Uint8Array(msg.length + 1 + padLen + 16);
230
+ padded.set(msg);
231
+ padded[msg.length] = 0x80;
232
+ for (let i = 0; i < 8; i++) {
233
+ padded[padded.length - 1 - i] = Number((bitLen >> BigInt(i * 8)) & 0xffn);
234
+ }
235
+ const rotr = (x, n) => ((x >> n) | (x << (64n - n))) & 0xffffffffffffffffn;
236
+ for (let chunk = 0; chunk < padded.length; chunk += 128) {
237
+ const w = new Array(80);
238
+ for (let i = 0; i < 16; i++) {
239
+ w[i] = 0n;
240
+ for (let j = 0; j < 8; j++) {
241
+ w[i] = (w[i] << 8n) | BigInt(padded[chunk + i * 8 + j]);
242
+ }
243
+ }
244
+ for (let i = 16; i < 80; i++) {
245
+ const s0 = rotr(w[i - 15], 1n) ^ rotr(w[i - 15], 8n) ^ (w[i - 15] >> 7n);
246
+ const s1 = rotr(w[i - 2], 19n) ^ rotr(w[i - 2], 61n) ^ (w[i - 2] >> 6n);
247
+ w[i] = (w[i - 16] + s0 + w[i - 7] + s1) & 0xffffffffffffffffn;
248
+ }
249
+ let [a, b, c, d, e, f, g, h] = H;
250
+ for (let i = 0; i < 80; i++) {
251
+ const S1 = rotr(e, 14n) ^ rotr(e, 18n) ^ rotr(e, 41n);
252
+ const ch = (e & f) ^ (~e & g);
253
+ const ki = (K[i * 2] << 32n) | K[i * 2 + 1];
254
+ const temp1 = (h + S1 + ch + ki + w[i]) & 0xffffffffffffffffn;
255
+ const S0 = rotr(a, 28n) ^ rotr(a, 34n) ^ rotr(a, 39n);
256
+ const maj = (a & b) ^ (a & c) ^ (b & c);
257
+ const temp2 = (S0 + maj) & 0xffffffffffffffffn;
258
+ h = g;
259
+ g = f;
260
+ f = e;
261
+ e = (d + temp1) & 0xffffffffffffffffn;
262
+ d = c;
263
+ c = b;
264
+ b = a;
265
+ a = (temp1 + temp2) & 0xffffffffffffffffn;
266
+ }
267
+ H[0] = (H[0] + a) & 0xffffffffffffffffn;
268
+ H[1] = (H[1] + b) & 0xffffffffffffffffn;
269
+ H[2] = (H[2] + c) & 0xffffffffffffffffn;
270
+ H[3] = (H[3] + d) & 0xffffffffffffffffn;
271
+ H[4] = (H[4] + e) & 0xffffffffffffffffn;
272
+ H[5] = (H[5] + f) & 0xffffffffffffffffn;
273
+ H[6] = (H[6] + g) & 0xffffffffffffffffn;
274
+ H[7] = (H[7] + h) & 0xffffffffffffffffn;
275
+ }
276
+ const result = new Uint8Array(64);
277
+ for (let i = 0; i < 8; i++) {
278
+ for (let j = 0; j < 8; j++) {
279
+ result[i * 8 + j] = Number((H[i] >> BigInt((7 - j) * 8)) & 0xffn);
280
+ }
281
+ }
282
+ return result;
283
+ }
284
+ const ED25519_P = 2n ** 255n - 19n;
285
+ const ED25519_L = 2n ** 252n + 27742317777372353535851937790883648493n;
286
+ const ED25519_D = (-121665n * modInv(121666n, ED25519_P)) % ED25519_P;
287
+ function mod(a, m) {
288
+ return ((a % m) + m) % m;
289
+ }
290
+ function modInv(a, m) {
291
+ let [old_r, r] = [a, m];
292
+ let [old_s, s] = [1n, 0n];
293
+ while (r !== 0n) {
294
+ const q = old_r / r;
295
+ [old_r, r] = [r, old_r - q * r];
296
+ [old_s, s] = [s, old_s - q * s];
297
+ }
298
+ return mod(old_s, m);
299
+ }
300
+ function modPow(base, exp, m) {
301
+ let result = 1n;
302
+ base = mod(base, m);
303
+ while (exp > 0n) {
304
+ if (exp & 1n)
305
+ result = mod(result * base, m);
306
+ exp >>= 1n;
307
+ base = mod(base * base, m);
308
+ }
309
+ return result;
310
+ }
311
+ function pointAdd(p1, p2) {
312
+ const a = (mod(p1.y - p1.x, ED25519_P) * mod(p2.y - p2.x, ED25519_P)) % ED25519_P;
313
+ const b = (mod(p1.y + p1.x, ED25519_P) * mod(p2.y + p2.x, ED25519_P)) % ED25519_P;
314
+ const c = (2n * p1.t * p2.t * ED25519_D) % ED25519_P;
315
+ const d = (2n * p1.z * p2.z) % ED25519_P;
316
+ const e = mod(b - a, ED25519_P);
317
+ const f = mod(d - c, ED25519_P);
318
+ const g = mod(d + c, ED25519_P);
319
+ const h = mod(b + a, ED25519_P);
320
+ return {
321
+ x: mod(e * f, ED25519_P),
322
+ y: mod(g * h, ED25519_P),
323
+ z: mod(f * g, ED25519_P),
324
+ t: mod(e * h, ED25519_P),
325
+ };
326
+ }
327
+ function pointDouble(p) {
328
+ const a = mod(p.x * p.x, ED25519_P);
329
+ const b = mod(p.y * p.y, ED25519_P);
330
+ const c = 2n * mod(p.z * p.z, ED25519_P);
331
+ const h = mod(a + b, ED25519_P);
332
+ const e = mod(h - mod((p.x + p.y) * (p.x + p.y), ED25519_P), ED25519_P);
333
+ const g = mod(a - b, ED25519_P);
334
+ const f = mod(c + g, ED25519_P);
335
+ return {
336
+ x: mod(e * f, ED25519_P),
337
+ y: mod(g * h, ED25519_P),
338
+ z: mod(f * g, ED25519_P),
339
+ t: mod(e * h, ED25519_P),
340
+ };
341
+ }
342
+ function scalarMult(k, p) {
343
+ let result = { x: 0n, y: 1n, z: 1n, t: 0n };
344
+ let temp = p;
345
+ while (k > 0n) {
346
+ if (k & 1n)
347
+ result = pointAdd(result, temp);
348
+ temp = pointDouble(temp);
349
+ k >>= 1n;
350
+ }
351
+ return result;
352
+ }
353
+ function pointToBytes(p) {
354
+ const zi = modInv(p.z, ED25519_P);
355
+ const x = mod(p.x * zi, ED25519_P);
356
+ const y = mod(p.y * zi, ED25519_P);
357
+ const bytes = new Uint8Array(32);
358
+ for (let i = 0; i < 32; i++) {
359
+ bytes[i] = Number((y >> BigInt(i * 8)) & 0xffn);
360
+ }
361
+ bytes[31] |= Number((x & 1n) << 7n);
362
+ return bytes;
363
+ }
364
+ function bytesToPoint(bytes) {
365
+ let y = 0n;
366
+ for (let i = 0; i < 32; i++) {
367
+ y |= BigInt(bytes[i] & (i === 31 ? 0x7f : 0xff)) << BigInt(i * 8);
368
+ }
369
+ const xSign = (bytes[31] >> 7) & 1;
370
+ const y2 = mod(y * y, ED25519_P);
371
+ const x2 = mod((y2 - 1n) * modInv(ED25519_D * y2 + 1n, ED25519_P), ED25519_P);
372
+ let x = modPow(x2, (ED25519_P + 3n) / 8n, ED25519_P);
373
+ if (mod(x * x - x2, ED25519_P) !== 0n) {
374
+ x = mod(x * modPow(2n, (ED25519_P - 1n) / 4n, ED25519_P), ED25519_P);
375
+ }
376
+ if (Number(x & 1n) !== xSign) {
377
+ x = mod(-x, ED25519_P);
378
+ }
379
+ return { x, y, z: 1n, t: mod(x * y, ED25519_P) };
380
+ }
381
+ const ED25519_G = (() => {
382
+ const gy = (4n * modInv(5n, ED25519_P)) % ED25519_P;
383
+ const gx2 = mod((gy * gy - 1n) * modInv(ED25519_D * gy * gy + 1n, ED25519_P), ED25519_P);
384
+ let gx = modPow(gx2, (ED25519_P + 3n) / 8n, ED25519_P);
385
+ if (mod(gx * gx - gx2, ED25519_P) !== 0n) {
386
+ gx = mod(gx * modPow(2n, (ED25519_P - 1n) / 4n, ED25519_P), ED25519_P);
387
+ }
388
+ if (gx & 1n)
389
+ gx = mod(-gx, ED25519_P);
390
+ return { x: gx, y: gy, z: 1n, t: mod(gx * gy, ED25519_P) };
391
+ })();
392
+ function ed25519GenerateKeypair(seed) {
393
+ const h = sha512(seed);
394
+ h[0] &= 248;
395
+ h[31] &= 127;
396
+ h[31] |= 64;
397
+ let scalar = 0n;
398
+ for (let i = 0; i < 32; i++) {
399
+ scalar |= BigInt(h[i]) << BigInt(i * 8);
400
+ }
401
+ const pubPoint = scalarMult(scalar, ED25519_G);
402
+ const publicKey = pointToBytes(pubPoint);
403
+ return { privateKey: seed, publicKey };
404
+ }
405
+ function ed25519Sign(message, privateKey) {
406
+ const h = sha512(privateKey);
407
+ h[0] &= 248;
408
+ h[31] &= 127;
409
+ h[31] |= 64;
410
+ let scalar = 0n;
411
+ for (let i = 0; i < 32; i++) {
412
+ scalar |= BigInt(h[i]) << BigInt(i * 8);
413
+ }
414
+ const pubPoint = scalarMult(scalar, ED25519_G);
415
+ const publicKey = pointToBytes(pubPoint);
416
+ const prefix = h.slice(32);
417
+ const rHash = sha512(new Uint8Array([...prefix, ...message]));
418
+ let r = 0n;
419
+ for (let i = 0; i < 64; i++) {
420
+ r |= BigInt(rHash[i]) << BigInt(i * 8);
421
+ }
422
+ r = mod(r, ED25519_L);
423
+ const R = scalarMult(r, ED25519_G);
424
+ const Rbytes = pointToBytes(R);
425
+ const kHash = sha512(new Uint8Array([...Rbytes, ...publicKey, ...message]));
426
+ let k = 0n;
427
+ for (let i = 0; i < 64; i++) {
428
+ k |= BigInt(kHash[i]) << BigInt(i * 8);
429
+ }
430
+ k = mod(k, ED25519_L);
431
+ const s = mod(r + k * scalar, ED25519_L);
432
+ const signature = new Uint8Array(64);
433
+ signature.set(Rbytes);
434
+ for (let i = 0; i < 32; i++) {
435
+ signature[32 + i] = Number((s >> BigInt(i * 8)) & 0xffn);
436
+ }
437
+ return signature;
438
+ }
439
+ function ed25519Verify(message, signature, publicKey) {
440
+ if (signature.length !== 64 || publicKey.length !== 32)
441
+ return false;
442
+ try {
443
+ const Rbytes = signature.slice(0, 32);
444
+ const R = bytesToPoint(Rbytes);
445
+ const A = bytesToPoint(publicKey);
446
+ let s = 0n;
447
+ for (let i = 0; i < 32; i++) {
448
+ s |= BigInt(signature[32 + i]) << BigInt(i * 8);
449
+ }
450
+ if (s >= ED25519_L)
451
+ return false;
452
+ const kHash = sha512(new Uint8Array([...Rbytes, ...publicKey, ...message]));
453
+ let k = 0n;
454
+ for (let i = 0; i < 64; i++) {
455
+ k |= BigInt(kHash[i]) << BigInt(i * 8);
456
+ }
457
+ k = mod(k, ED25519_L);
458
+ const sB = scalarMult(s, ED25519_G);
459
+ const kA = scalarMult(k, A);
460
+ const RkA = pointAdd(R, kA);
461
+ const left = pointToBytes(sB);
462
+ const right = pointToBytes(RkA);
463
+ for (let i = 0; i < 32; i++) {
464
+ if (left[i] !== right[i])
465
+ return false;
466
+ }
467
+ return true;
468
+ }
469
+ catch {
470
+ return false;
471
+ }
472
+ }
473
+ function getRandomBytes(len) {
474
+ const bytes = new Uint8Array(len);
475
+ for (let i = 0; i < len; i++) {
476
+ bytes[i] = Math.floor(Math.random() * 256);
477
+ }
478
+ return bytes;
479
+ }
480
+ export function signing() {
481
+ try {
482
+ const inputStr = Host.inputString();
483
+ const input = JSON.parse(inputStr);
484
+ const encoding = input.encoding ?? 'hex';
485
+ const algorithm = input.algorithm;
486
+ if (algorithm !== 'ed25519') {
487
+ throw new Error('Only ed25519 is currently supported');
488
+ }
489
+ let output;
490
+ switch (input.operation) {
491
+ case 'generateKeypair': {
492
+ const seed = getRandomBytes(32);
493
+ const { privateKey, publicKey } = ed25519GenerateKeypair(seed);
494
+ output = {
495
+ privateKey: encodeKey(privateKey, encoding),
496
+ publicKey: encodeKey(publicKey, encoding),
497
+ algorithm,
498
+ };
499
+ break;
500
+ }
501
+ case 'sign': {
502
+ if (!input.privateKey)
503
+ throw new Error('privateKey required for signing');
504
+ if (!input.message)
505
+ throw new Error('message required for signing');
506
+ const privateKey = decodeKey(input.privateKey, encoding);
507
+ const message = new TextEncoder().encode(input.message);
508
+ const signature = ed25519Sign(message, privateKey);
509
+ output = {
510
+ signature: encodeKey(signature, encoding),
511
+ algorithm,
512
+ };
513
+ break;
514
+ }
515
+ case 'verify': {
516
+ if (!input.publicKey)
517
+ throw new Error('publicKey required for verification');
518
+ if (!input.signature)
519
+ throw new Error('signature required for verification');
520
+ if (!input.message)
521
+ throw new Error('message required for verification');
522
+ const publicKey = decodeKey(input.publicKey, encoding);
523
+ const signature = decodeKey(input.signature, encoding);
524
+ const message = new TextEncoder().encode(input.message);
525
+ const valid = ed25519Verify(message, signature, publicKey);
526
+ output = {
527
+ valid,
528
+ algorithm,
529
+ };
530
+ break;
531
+ }
532
+ default:
533
+ throw new Error(`Unknown operation: ${input.operation}`);
534
+ }
535
+ Host.outputString(JSON.stringify(output));
536
+ return 0;
537
+ }
538
+ catch (error) {
539
+ const output = {
540
+ algorithm: 'unknown',
541
+ error: error instanceof Error ? error.message : String(error),
542
+ };
543
+ Host.outputString(JSON.stringify(output));
544
+ return 1;
545
+ }
546
+ }
547
+ class TextEncoder {
548
+ encode(str) {
549
+ const bytes = [];
550
+ for (let i = 0; i < str.length; i++) {
551
+ let c = str.charCodeAt(i);
552
+ if (c < 0x80) {
553
+ bytes.push(c);
554
+ }
555
+ else if (c < 0x800) {
556
+ bytes.push(0xc0 | (c >> 6), 0x80 | (c & 0x3f));
557
+ }
558
+ else {
559
+ bytes.push(0xe0 | (c >> 12), 0x80 | ((c >> 6) & 0x3f), 0x80 | (c & 0x3f));
560
+ }
561
+ }
562
+ return new Uint8Array(bytes);
563
+ }
564
+ }
565
+ //# sourceMappingURL=signing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing.js","sourceRoot":"","sources":["../../src/plugins/signing.ts"],"names":[],"mappings":"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AAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;KACZ,CAAC;IAEF,MAAM,CAAC,GAAG;QACR,mBAAmB;QACn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"}
@@ -0,0 +1,2 @@
1
+ export declare function slug(): number;
2
+ //# sourceMappingURL=slug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/plugins/slug.ts"],"names":[],"mappings":"AAoLA,wBAAgB,IAAI,IAAI,MAAM,CA0B7B"}