salty-crypto 0.3.0 → 1.0.0-rc.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 (118) hide show
  1. package/README.md +3 -3
  2. package/browser-demo.html +1 -1
  3. package/dist/salty-crypto.d.mts +348 -0
  4. package/dist/salty-crypto.d.ts +36 -87
  5. package/dist/salty-crypto.global.js +2 -0
  6. package/dist/salty-crypto.global.js.map +1 -0
  7. package/dist/salty-crypto.js +2 -1
  8. package/dist/salty-crypto.js.map +1 -0
  9. package/dist/salty-crypto.mjs +2 -0
  10. package/dist/salty-crypto.mjs.map +1 -0
  11. package/lib/aead/chacha20poly1305.d.ts +2 -0
  12. package/lib/aead/chacha20poly1305.js +53 -0
  13. package/lib/aead/chacha20poly1305.js.map +1 -0
  14. package/lib/aead.d.ts +16 -0
  15. package/lib/aead.js +18 -0
  16. package/lib/aead.js.map +1 -0
  17. package/lib/bytes.d.ts +4 -0
  18. package/lib/bytes.js +27 -0
  19. package/lib/bytes.js.map +1 -0
  20. package/lib/cipher/chacha20.d.ts +4 -0
  21. package/lib/cipher/chacha20.js +84 -0
  22. package/lib/cipher/chacha20.js.map +1 -0
  23. package/lib/cipher.d.ts +9 -0
  24. package/lib/cipher.js +4 -0
  25. package/lib/cipher.js.map +1 -0
  26. package/lib/dh/x25519.d.ts +10 -0
  27. package/lib/dh/x25519.js +624 -0
  28. package/lib/dh/x25519.js.map +1 -0
  29. package/lib/dh.d.ts +11 -0
  30. package/lib/dh.js +17 -0
  31. package/lib/dh.js.map +1 -0
  32. package/lib/hash/blake2s.d.ts +18 -0
  33. package/lib/hash/blake2s.js +120 -0
  34. package/lib/hash/blake2s.js.map +1 -0
  35. package/lib/hash/poly1305.d.ts +18 -0
  36. package/lib/hash/poly1305.js +376 -0
  37. package/lib/hash/poly1305.js.map +1 -0
  38. package/lib/hash.d.ts +14 -0
  39. package/lib/hash.js +5 -0
  40. package/lib/hash.js.map +1 -0
  41. package/lib/hkdf.d.ts +6 -0
  42. package/lib/hkdf.js +17 -0
  43. package/lib/hkdf.js.map +1 -0
  44. package/lib/hmac.d.ts +6 -0
  45. package/lib/hmac.js +17 -0
  46. package/lib/hmac.js.map +1 -0
  47. package/lib/index.d.ts +45 -0
  48. package/lib/index.js +48 -0
  49. package/lib/index.js.map +1 -0
  50. package/lib/io.d.ts +4 -0
  51. package/lib/io.js +37 -0
  52. package/lib/io.js.map +1 -0
  53. package/lib/noise/algorithms.d.ts +15 -0
  54. package/lib/noise/algorithms.js +10 -0
  55. package/lib/noise/algorithms.js.map +1 -0
  56. package/lib/noise/cipherstate.d.ts +14 -0
  57. package/lib/noise/cipherstate.js +62 -0
  58. package/lib/noise/cipherstate.js.map +1 -0
  59. package/lib/noise/handshake.d.ts +52 -0
  60. package/lib/noise/handshake.js +191 -0
  61. package/lib/noise/handshake.js.map +1 -0
  62. package/lib/noise/patterns.d.ts +16 -0
  63. package/lib/noise/patterns.js +73 -0
  64. package/lib/noise/patterns.js.map +1 -0
  65. package/lib/noise/profiles.d.ts +2 -0
  66. package/lib/noise/profiles.js +11 -0
  67. package/lib/noise/profiles.js.map +1 -0
  68. package/lib/noise/rekey.d.ts +3 -0
  69. package/lib/noise/rekey.js +9 -0
  70. package/lib/noise/rekey.js.map +1 -0
  71. package/lib/noise.d.ts +6 -0
  72. package/lib/noise.js +8 -0
  73. package/lib/noise.js.map +1 -0
  74. package/lib/nonce.d.ts +9 -0
  75. package/lib/nonce.js +25 -0
  76. package/lib/nonce.js.map +1 -0
  77. package/lib/random.d.ts +2 -0
  78. package/lib/random.js +34 -0
  79. package/lib/random.js.map +1 -0
  80. package/package.json +38 -22
  81. package/src/.DS_Store +0 -0
  82. package/src/aead/chacha20poly1305.ts +7 -7
  83. package/src/aead.ts +3 -3
  84. package/src/bytes.ts +1 -1
  85. package/src/cipher/chacha20.ts +3 -3
  86. package/src/cipher.ts +3 -3
  87. package/src/dh/x25519.ts +1 -1
  88. package/src/dh.ts +3 -3
  89. package/src/hash/blake2s.ts +2 -2
  90. package/src/hash/poly1305.ts +2 -2
  91. package/src/hash.ts +3 -3
  92. package/src/hkdf.ts +3 -3
  93. package/src/hmac.ts +3 -3
  94. package/src/index.ts +23 -23
  95. package/src/io.ts +3 -0
  96. package/src/noise/algorithms.ts +7 -7
  97. package/src/noise/cipherstate.ts +4 -4
  98. package/src/noise/handshake.ts +8 -8
  99. package/src/noise/patterns.ts +1 -1
  100. package/src/noise/profiles.ts +5 -5
  101. package/src/noise/rekey.ts +3 -3
  102. package/src/noise.ts +1 -1
  103. package/src/nonce.ts +1 -1
  104. package/src/random.ts +2 -3
  105. package/test/{tests/aead.test.ts → aead.test.ts} +2 -2
  106. package/test/{tests/blake2.test.ts → blake2.test.ts} +2 -2
  107. package/test/{tests/chacha20.test.ts → chacha20.test.ts} +2 -2
  108. package/test/{tests/io.test.ts → io.test.ts} +2 -2
  109. package/test/{tests/noise.test.ts → noise.test.ts} +2 -2
  110. package/test/{tests/poly1305.test.ts → poly1305.test.ts} +2 -2
  111. package/tsup.config.ts +14 -0
  112. package/rollup.config.js +0 -19
  113. package/speed.ts +0 -22
  114. package/test/harness.ts +0 -74
  115. package/test/tsconfig.json +0 -18
  116. package/test-vectors/noise-c-basic.txt +0 -19684
  117. package/test-vectors/snow.txt +0 -10348
  118. package/watchall +0 -22
@@ -0,0 +1,18 @@
1
+ export declare const BLAKE2s: {
2
+ new (key?: Uint8Array, outlen?: number): {
3
+ b: Uint8Array<ArrayBuffer>;
4
+ bv: DataView<ArrayBuffer>;
5
+ h: Uint32Array<ArrayBuffer>;
6
+ t: Uint32Array<ArrayBuffer>;
7
+ c: number;
8
+ outlen: number;
9
+ update(input: Uint8Array, offset?: number, length?: number): void;
10
+ final(output?: Uint8Array): Uint8Array;
11
+ compress(last: boolean): void;
12
+ };
13
+ readonly NAME: "BLAKE2s";
14
+ readonly KEYBYTES: 32;
15
+ readonly OUTBYTES: 32;
16
+ readonly BLOCKLEN: 64;
17
+ digest(input: Uint8Array, key?: Uint8Array, outlen?: number): Uint8Array;
18
+ };
@@ -0,0 +1,120 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ var _a;
4
+ function ROTR32(n, bits) {
5
+ return (n >>> bits) | (n << (32 - bits));
6
+ }
7
+ function B2S_G(v, a, b, c, d, x, y) {
8
+ v[a] = v[a] + v[b] + x;
9
+ v[d] = ROTR32(v[d] ^ v[a], 16);
10
+ v[c] = v[c] + v[d];
11
+ v[b] = ROTR32(v[b] ^ v[c], 12);
12
+ v[a] = v[a] + v[b] + y;
13
+ v[d] = ROTR32(v[d] ^ v[a], 8);
14
+ v[c] = v[c] + v[d];
15
+ v[b] = ROTR32(v[b] ^ v[c], 7);
16
+ }
17
+ const blake2s_iv = Uint32Array.from([
18
+ 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,
19
+ 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19,
20
+ ]);
21
+ const _sigma = Uint8Array.from([
22
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
23
+ 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,
24
+ 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,
25
+ 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,
26
+ 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,
27
+ 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,
28
+ 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,
29
+ 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,
30
+ 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,
31
+ 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,
32
+ ]);
33
+ function sigma(i, j) {
34
+ return _sigma[(i << 4) + j];
35
+ }
36
+ export const BLAKE2s = (_a = class BLAKE2s {
37
+ static digest(input, key, outlen) {
38
+ const p = new _a(key, outlen);
39
+ p.update(input);
40
+ return p.final();
41
+ }
42
+ constructor(key, outlen = _a.OUTBYTES) {
43
+ var _b;
44
+ this.outlen = outlen;
45
+ this.b = new Uint8Array(64);
46
+ this.bv = new DataView(this.b.buffer);
47
+ this.h = Uint32Array.from(blake2s_iv);
48
+ this.t = new Uint32Array(2);
49
+ this.c = 0;
50
+ const keylen = (_b = key === null || key === void 0 ? void 0 : key.byteLength) !== null && _b !== void 0 ? _b : 0;
51
+ if (outlen == 0 || outlen > 32 || keylen > 32) {
52
+ throw new Error("illegal BLAKE2s parameter length(s)");
53
+ }
54
+ this.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen;
55
+ if (key && keylen > 0) {
56
+ this.update(key);
57
+ this.c = 64;
58
+ }
59
+ }
60
+ update(input, offset = 0, length = input.byteLength) {
61
+ for (let i = offset; i < offset + length; i++) {
62
+ if (this.c == 64) {
63
+ this.t[0] += this.c;
64
+ if (this.t[0] < this.c)
65
+ this.t[1]++;
66
+ this.compress(false);
67
+ this.c = 0;
68
+ }
69
+ this.b[this.c++] = input[i];
70
+ }
71
+ }
72
+ final(output) {
73
+ this.t[0] += this.c;
74
+ if (this.t[0] < this.c)
75
+ this.t[1]++;
76
+ while (this.c < 64)
77
+ this.b[this.c++] = 0;
78
+ this.compress(true);
79
+ if (output === void 0)
80
+ output = new Uint8Array(this.outlen);
81
+ for (let i = 0; i < this.outlen; i++) {
82
+ output[i] = (this.h[i >> 2] >> (8 * (i & 3))) & 0xFF;
83
+ }
84
+ return output;
85
+ }
86
+ compress(last) {
87
+ const v = new Uint32Array(16);
88
+ const m = new Uint32Array(16);
89
+ for (let i = 0; i < 8; i++) {
90
+ v[i] = this.h[i];
91
+ v[i + 8] = blake2s_iv[i];
92
+ }
93
+ v[12] ^= this.t[0];
94
+ v[13] ^= this.t[1];
95
+ if (last)
96
+ v[14] = ~v[14];
97
+ for (let i = 0; i < 16; i++) {
98
+ m[i] = this.bv.getUint32(i << 2, true);
99
+ }
100
+ for (let i = 0; i < 10; i++) {
101
+ B2S_G(v, 0, 4, 8, 12, m[sigma(i, 0)], m[sigma(i, 1)]);
102
+ B2S_G(v, 1, 5, 9, 13, m[sigma(i, 2)], m[sigma(i, 3)]);
103
+ B2S_G(v, 2, 6, 10, 14, m[sigma(i, 4)], m[sigma(i, 5)]);
104
+ B2S_G(v, 3, 7, 11, 15, m[sigma(i, 6)], m[sigma(i, 7)]);
105
+ B2S_G(v, 0, 5, 10, 15, m[sigma(i, 8)], m[sigma(i, 9)]);
106
+ B2S_G(v, 1, 6, 11, 12, m[sigma(i, 10)], m[sigma(i, 11)]);
107
+ B2S_G(v, 2, 7, 8, 13, m[sigma(i, 12)], m[sigma(i, 13)]);
108
+ B2S_G(v, 3, 4, 9, 14, m[sigma(i, 14)], m[sigma(i, 15)]);
109
+ }
110
+ for (let i = 0; i < 8; i++) {
111
+ this.h[i] ^= v[i] ^ v[i + 8];
112
+ }
113
+ }
114
+ },
115
+ _a.NAME = "BLAKE2s",
116
+ _a.KEYBYTES = 32,
117
+ _a.OUTBYTES = 32,
118
+ _a.BLOCKLEN = 64,
119
+ _a);
120
+ //# sourceMappingURL=blake2s.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blake2s.js","sourceRoot":"","sources":["../../src/hash/blake2s.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;;AAMhG,SAAS,MAAM,CAAC,CAAS,EAAE,IAAY;IACnC,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,KAAK,CAAC,CAAc,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IAC3F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;IAChC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CACjD,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;IAC3B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpD,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACpD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,C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"}
@@ -0,0 +1,18 @@
1
+ export declare const Poly1305: {
2
+ new (key?: Uint8Array, outlen?: number): {
3
+ buffer: Uint8Array<ArrayBuffer>;
4
+ r: Uint16Array<ArrayBuffer>;
5
+ h: Uint16Array<ArrayBuffer>;
6
+ pad: Uint16Array<ArrayBuffer>;
7
+ leftover: number;
8
+ fin: number;
9
+ blocks(m: Uint8Array, mpos: number, bytes: number): void;
10
+ final(mac?: Uint8Array): Uint8Array;
11
+ update(m: Uint8Array, mpos?: number, bytes?: number): void;
12
+ };
13
+ readonly NAME: "Poly1305";
14
+ readonly KEYBYTES: 32;
15
+ readonly OUTBYTES: 16;
16
+ readonly BLOCKLEN: 16;
17
+ digest(input: Uint8Array, key?: Uint8Array, outlen?: number): Uint8Array;
18
+ };
@@ -0,0 +1,376 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ var _a;
4
+ export const Poly1305 = (_a = class Poly1305 {
5
+ static digest(input, key, outlen) {
6
+ const p = new _a(key, outlen);
7
+ p.update(input);
8
+ return p.final();
9
+ }
10
+ constructor(key, outlen) {
11
+ this.buffer = new Uint8Array(16);
12
+ this.r = new Uint16Array(10);
13
+ this.h = new Uint16Array(10);
14
+ this.pad = new Uint16Array(8);
15
+ this.leftover = 0;
16
+ this.fin = 0;
17
+ if (!key)
18
+ throw new Error("Poly1305: key required");
19
+ if ((outlen !== null && outlen !== void 0 ? outlen : _a.OUTBYTES) !== _a.OUTBYTES)
20
+ throw new Error("Poly1305: outlen != OUTBYTES");
21
+ const t0 = key[0] & 0xff | (key[1] & 0xff) << 8;
22
+ this.r[0] = (t0) & 0x1fff;
23
+ const t1 = key[2] & 0xff | (key[3] & 0xff) << 8;
24
+ this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;
25
+ const t2 = key[4] & 0xff | (key[5] & 0xff) << 8;
26
+ this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;
27
+ const t3 = key[6] & 0xff | (key[7] & 0xff) << 8;
28
+ this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;
29
+ const t4 = key[8] & 0xff | (key[9] & 0xff) << 8;
30
+ this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;
31
+ this.r[5] = ((t4 >>> 1)) & 0x1ffe;
32
+ const t5 = key[10] & 0xff | (key[11] & 0xff) << 8;
33
+ this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;
34
+ const t6 = key[12] & 0xff | (key[13] & 0xff) << 8;
35
+ this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;
36
+ const t7 = key[14] & 0xff | (key[15] & 0xff) << 8;
37
+ this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;
38
+ this.r[9] = ((t7 >>> 5)) & 0x007f;
39
+ this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;
40
+ this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;
41
+ this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;
42
+ this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;
43
+ this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;
44
+ this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;
45
+ this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;
46
+ this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;
47
+ }
48
+ blocks(m, mpos, bytes) {
49
+ const hibit = this.fin ? 0 : (1 << 11);
50
+ let h0 = this.h[0];
51
+ let h1 = this.h[1];
52
+ let h2 = this.h[2];
53
+ let h3 = this.h[3];
54
+ let h4 = this.h[4];
55
+ let h5 = this.h[5];
56
+ let h6 = this.h[6];
57
+ let h7 = this.h[7];
58
+ let h8 = this.h[8];
59
+ let h9 = this.h[9];
60
+ let r0 = this.r[0];
61
+ let r1 = this.r[1];
62
+ let r2 = this.r[2];
63
+ let r3 = this.r[3];
64
+ let r4 = this.r[4];
65
+ let r5 = this.r[5];
66
+ let r6 = this.r[6];
67
+ let r7 = this.r[7];
68
+ let r8 = this.r[8];
69
+ let r9 = this.r[9];
70
+ while (bytes >= 16) {
71
+ const t0 = m[mpos + 0] & 0xff | (m[mpos + 1] & 0xff) << 8;
72
+ h0 += (t0) & 0x1fff;
73
+ const t1 = m[mpos + 2] & 0xff | (m[mpos + 3] & 0xff) << 8;
74
+ h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;
75
+ const t2 = m[mpos + 4] & 0xff | (m[mpos + 5] & 0xff) << 8;
76
+ h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;
77
+ const t3 = m[mpos + 6] & 0xff | (m[mpos + 7] & 0xff) << 8;
78
+ h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;
79
+ const t4 = m[mpos + 8] & 0xff | (m[mpos + 9] & 0xff) << 8;
80
+ h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;
81
+ h5 += ((t4 >>> 1)) & 0x1fff;
82
+ const t5 = m[mpos + 10] & 0xff | (m[mpos + 11] & 0xff) << 8;
83
+ h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;
84
+ const t6 = m[mpos + 12] & 0xff | (m[mpos + 13] & 0xff) << 8;
85
+ h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;
86
+ const t7 = m[mpos + 14] & 0xff | (m[mpos + 15] & 0xff) << 8;
87
+ h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;
88
+ h9 += ((t7 >>> 5)) | hibit;
89
+ let c = 0;
90
+ let d0 = c;
91
+ d0 += h0 * r0;
92
+ d0 += h1 * (5 * r9);
93
+ d0 += h2 * (5 * r8);
94
+ d0 += h3 * (5 * r7);
95
+ d0 += h4 * (5 * r6);
96
+ c = (d0 >>> 13);
97
+ d0 &= 0x1fff;
98
+ d0 += h5 * (5 * r5);
99
+ d0 += h6 * (5 * r4);
100
+ d0 += h7 * (5 * r3);
101
+ d0 += h8 * (5 * r2);
102
+ d0 += h9 * (5 * r1);
103
+ c += (d0 >>> 13);
104
+ d0 &= 0x1fff;
105
+ let d1 = c;
106
+ d1 += h0 * r1;
107
+ d1 += h1 * r0;
108
+ d1 += h2 * (5 * r9);
109
+ d1 += h3 * (5 * r8);
110
+ d1 += h4 * (5 * r7);
111
+ c = (d1 >>> 13);
112
+ d1 &= 0x1fff;
113
+ d1 += h5 * (5 * r6);
114
+ d1 += h6 * (5 * r5);
115
+ d1 += h7 * (5 * r4);
116
+ d1 += h8 * (5 * r3);
117
+ d1 += h9 * (5 * r2);
118
+ c += (d1 >>> 13);
119
+ d1 &= 0x1fff;
120
+ let d2 = c;
121
+ d2 += h0 * r2;
122
+ d2 += h1 * r1;
123
+ d2 += h2 * r0;
124
+ d2 += h3 * (5 * r9);
125
+ d2 += h4 * (5 * r8);
126
+ c = (d2 >>> 13);
127
+ d2 &= 0x1fff;
128
+ d2 += h5 * (5 * r7);
129
+ d2 += h6 * (5 * r6);
130
+ d2 += h7 * (5 * r5);
131
+ d2 += h8 * (5 * r4);
132
+ d2 += h9 * (5 * r3);
133
+ c += (d2 >>> 13);
134
+ d2 &= 0x1fff;
135
+ let d3 = c;
136
+ d3 += h0 * r3;
137
+ d3 += h1 * r2;
138
+ d3 += h2 * r1;
139
+ d3 += h3 * r0;
140
+ d3 += h4 * (5 * r9);
141
+ c = (d3 >>> 13);
142
+ d3 &= 0x1fff;
143
+ d3 += h5 * (5 * r8);
144
+ d3 += h6 * (5 * r7);
145
+ d3 += h7 * (5 * r6);
146
+ d3 += h8 * (5 * r5);
147
+ d3 += h9 * (5 * r4);
148
+ c += (d3 >>> 13);
149
+ d3 &= 0x1fff;
150
+ let d4 = c;
151
+ d4 += h0 * r4;
152
+ d4 += h1 * r3;
153
+ d4 += h2 * r2;
154
+ d4 += h3 * r1;
155
+ d4 += h4 * r0;
156
+ c = (d4 >>> 13);
157
+ d4 &= 0x1fff;
158
+ d4 += h5 * (5 * r9);
159
+ d4 += h6 * (5 * r8);
160
+ d4 += h7 * (5 * r7);
161
+ d4 += h8 * (5 * r6);
162
+ d4 += h9 * (5 * r5);
163
+ c += (d4 >>> 13);
164
+ d4 &= 0x1fff;
165
+ let d5 = c;
166
+ d5 += h0 * r5;
167
+ d5 += h1 * r4;
168
+ d5 += h2 * r3;
169
+ d5 += h3 * r2;
170
+ d5 += h4 * r1;
171
+ c = (d5 >>> 13);
172
+ d5 &= 0x1fff;
173
+ d5 += h5 * r0;
174
+ d5 += h6 * (5 * r9);
175
+ d5 += h7 * (5 * r8);
176
+ d5 += h8 * (5 * r7);
177
+ d5 += h9 * (5 * r6);
178
+ c += (d5 >>> 13);
179
+ d5 &= 0x1fff;
180
+ let d6 = c;
181
+ d6 += h0 * r6;
182
+ d6 += h1 * r5;
183
+ d6 += h2 * r4;
184
+ d6 += h3 * r3;
185
+ d6 += h4 * r2;
186
+ c = (d6 >>> 13);
187
+ d6 &= 0x1fff;
188
+ d6 += h5 * r1;
189
+ d6 += h6 * r0;
190
+ d6 += h7 * (5 * r9);
191
+ d6 += h8 * (5 * r8);
192
+ d6 += h9 * (5 * r7);
193
+ c += (d6 >>> 13);
194
+ d6 &= 0x1fff;
195
+ let d7 = c;
196
+ d7 += h0 * r7;
197
+ d7 += h1 * r6;
198
+ d7 += h2 * r5;
199
+ d7 += h3 * r4;
200
+ d7 += h4 * r3;
201
+ c = (d7 >>> 13);
202
+ d7 &= 0x1fff;
203
+ d7 += h5 * r2;
204
+ d7 += h6 * r1;
205
+ d7 += h7 * r0;
206
+ d7 += h8 * (5 * r9);
207
+ d7 += h9 * (5 * r8);
208
+ c += (d7 >>> 13);
209
+ d7 &= 0x1fff;
210
+ let d8 = c;
211
+ d8 += h0 * r8;
212
+ d8 += h1 * r7;
213
+ d8 += h2 * r6;
214
+ d8 += h3 * r5;
215
+ d8 += h4 * r4;
216
+ c = (d8 >>> 13);
217
+ d8 &= 0x1fff;
218
+ d8 += h5 * r3;
219
+ d8 += h6 * r2;
220
+ d8 += h7 * r1;
221
+ d8 += h8 * r0;
222
+ d8 += h9 * (5 * r9);
223
+ c += (d8 >>> 13);
224
+ d8 &= 0x1fff;
225
+ let d9 = c;
226
+ d9 += h0 * r9;
227
+ d9 += h1 * r8;
228
+ d9 += h2 * r7;
229
+ d9 += h3 * r6;
230
+ d9 += h4 * r5;
231
+ c = (d9 >>> 13);
232
+ d9 &= 0x1fff;
233
+ d9 += h5 * r4;
234
+ d9 += h6 * r3;
235
+ d9 += h7 * r2;
236
+ d9 += h8 * r1;
237
+ d9 += h9 * r0;
238
+ c += (d9 >>> 13);
239
+ d9 &= 0x1fff;
240
+ c = (((c << 2) + c)) | 0;
241
+ c = (c + d0) | 0;
242
+ d0 = c & 0x1fff;
243
+ c = (c >>> 13);
244
+ d1 += c;
245
+ h0 = d0;
246
+ h1 = d1;
247
+ h2 = d2;
248
+ h3 = d3;
249
+ h4 = d4;
250
+ h5 = d5;
251
+ h6 = d6;
252
+ h7 = d7;
253
+ h8 = d8;
254
+ h9 = d9;
255
+ mpos += 16;
256
+ bytes -= 16;
257
+ }
258
+ this.h[0] = h0;
259
+ this.h[1] = h1;
260
+ this.h[2] = h2;
261
+ this.h[3] = h3;
262
+ this.h[4] = h4;
263
+ this.h[5] = h5;
264
+ this.h[6] = h6;
265
+ this.h[7] = h7;
266
+ this.h[8] = h8;
267
+ this.h[9] = h9;
268
+ }
269
+ final(mac) {
270
+ if (!mac)
271
+ mac = new Uint8Array(_a.OUTBYTES);
272
+ if (this.leftover) {
273
+ let i = this.leftover;
274
+ this.buffer[i++] = 1;
275
+ for (; i < 16; i++)
276
+ this.buffer[i] = 0;
277
+ this.fin = 1;
278
+ this.blocks(this.buffer, 0, 16);
279
+ }
280
+ let c = this.h[1] >>> 13;
281
+ this.h[1] &= 0x1fff;
282
+ for (let i = 2; i < 10; i++) {
283
+ this.h[i] += c;
284
+ c = this.h[i] >>> 13;
285
+ this.h[i] &= 0x1fff;
286
+ }
287
+ this.h[0] += (c * 5);
288
+ c = this.h[0] >>> 13;
289
+ this.h[0] &= 0x1fff;
290
+ this.h[1] += c;
291
+ c = this.h[1] >>> 13;
292
+ this.h[1] &= 0x1fff;
293
+ this.h[2] += c;
294
+ const g = new Uint16Array(10);
295
+ g[0] = this.h[0] + 5;
296
+ c = g[0] >>> 13;
297
+ g[0] &= 0x1fff;
298
+ for (let i = 1; i < 10; i++) {
299
+ g[i] = this.h[i] + c;
300
+ c = g[i] >>> 13;
301
+ g[i] &= 0x1fff;
302
+ }
303
+ g[9] -= (1 << 13);
304
+ let mask = (c ^ 1) - 1;
305
+ for (let i = 0; i < 10; i++)
306
+ g[i] &= mask;
307
+ mask = ~mask;
308
+ for (let i = 0; i < 10; i++)
309
+ this.h[i] = (this.h[i] & mask) | g[i];
310
+ this.h[0] = ((this.h[0]) | (this.h[1] << 13)) & 0xffff;
311
+ this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10)) & 0xffff;
312
+ this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7)) & 0xffff;
313
+ this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4)) & 0xffff;
314
+ this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;
315
+ this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11)) & 0xffff;
316
+ this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8)) & 0xffff;
317
+ this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5)) & 0xffff;
318
+ let f = this.h[0] + this.pad[0];
319
+ this.h[0] = f & 0xffff;
320
+ for (let i = 1; i < 8; i++) {
321
+ f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;
322
+ this.h[i] = f & 0xffff;
323
+ }
324
+ mac[0] = (this.h[0] >>> 0) & 0xff;
325
+ mac[1] = (this.h[0] >>> 8) & 0xff;
326
+ mac[2] = (this.h[1] >>> 0) & 0xff;
327
+ mac[3] = (this.h[1] >>> 8) & 0xff;
328
+ mac[4] = (this.h[2] >>> 0) & 0xff;
329
+ mac[5] = (this.h[2] >>> 8) & 0xff;
330
+ mac[6] = (this.h[3] >>> 0) & 0xff;
331
+ mac[7] = (this.h[3] >>> 8) & 0xff;
332
+ mac[8] = (this.h[4] >>> 0) & 0xff;
333
+ mac[9] = (this.h[4] >>> 8) & 0xff;
334
+ mac[10] = (this.h[5] >>> 0) & 0xff;
335
+ mac[11] = (this.h[5] >>> 8) & 0xff;
336
+ mac[12] = (this.h[6] >>> 0) & 0xff;
337
+ mac[13] = (this.h[6] >>> 8) & 0xff;
338
+ mac[14] = (this.h[7] >>> 0) & 0xff;
339
+ mac[15] = (this.h[7] >>> 8) & 0xff;
340
+ return mac;
341
+ }
342
+ ;
343
+ update(m, mpos = 0, bytes = m.byteLength) {
344
+ if (this.leftover) {
345
+ let want = (16 - this.leftover);
346
+ if (want > bytes)
347
+ want = bytes;
348
+ for (let i = 0; i < want; i++)
349
+ this.buffer[this.leftover + i] = m[mpos + i];
350
+ bytes -= want;
351
+ mpos += want;
352
+ this.leftover += want;
353
+ if (this.leftover < 16)
354
+ return;
355
+ this.blocks(this.buffer, 0, 16);
356
+ this.leftover = 0;
357
+ }
358
+ if (bytes >= 16) {
359
+ const want = bytes - (bytes % 16);
360
+ this.blocks(m, mpos, want);
361
+ mpos += want;
362
+ bytes -= want;
363
+ }
364
+ if (bytes) {
365
+ for (let i = 0; i < bytes; i++)
366
+ this.buffer[this.leftover + i] = m[mpos + i];
367
+ this.leftover += bytes;
368
+ }
369
+ }
370
+ },
371
+ _a.NAME = "Poly1305",
372
+ _a.KEYBYTES = 32,
373
+ _a.OUTBYTES = 16,
374
+ _a.BLOCKLEN = 16,
375
+ _a);
376
+ //# sourceMappingURL=poly1305.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poly1305.js","sourceRoot":"","sources":["../../src/hash/poly1305.ts"],"names":[],"mappings":"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"}
package/lib/hash.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ export interface Hash {
2
+ readonly NAME: string;
3
+ readonly KEYBYTES: number;
4
+ readonly OUTBYTES: number;
5
+ readonly BLOCKLEN: number;
6
+ digest(input: Uint8Array, key?: Uint8Array, outlen?: number): Uint8Array;
7
+ new (key?: Uint8Array, outlen?: number): HashAlgorithm;
8
+ }
9
+ export interface HashAlgorithm {
10
+ update(input: Uint8Array, offset?: number, length?: number): void;
11
+ final(output?: Uint8Array): Uint8Array;
12
+ }
13
+ export { BLAKE2s } from './hash/blake2s.js';
14
+ export { Poly1305 } from './hash/poly1305.js';
package/lib/hash.js ADDED
@@ -0,0 +1,5 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ export { BLAKE2s } from './hash/blake2s.js';
4
+ export { Poly1305 } from './hash/poly1305.js';
5
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAkBhG,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC"}
package/lib/hkdf.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { HMAC } from './hmac.js';
2
+ export type HKDF = {
3
+ (chainingKey: Uint8Array, input: Uint8Array, numOutputs: 2): [Uint8Array, Uint8Array];
4
+ (chainingKey: Uint8Array, input: Uint8Array, numOutputs: 3): [Uint8Array, Uint8Array, Uint8Array];
5
+ };
6
+ export declare function makeHKDF(hmac: HMAC): HKDF;
package/lib/hkdf.js ADDED
@@ -0,0 +1,17 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ import * as Bytes from './bytes.js';
4
+ export function makeHKDF(hmac) {
5
+ function hkdf(chainingKey, input, numOutputs) {
6
+ const tempKey = hmac(chainingKey, input);
7
+ const o1 = hmac(tempKey, Uint8Array.from([1]));
8
+ const o2 = hmac(tempKey, Bytes.append(o1, Uint8Array.from([2])));
9
+ switch (numOutputs) {
10
+ case 2: return [o1, o2];
11
+ case 3: return [o1, o2, hmac(tempKey, Bytes.append(o2, Uint8Array.from([3])))];
12
+ }
13
+ }
14
+ ;
15
+ return hkdf;
16
+ }
17
+ //# sourceMappingURL=hkdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hkdf.js","sourceRoot":"","sources":["../src/hkdf.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAGhG,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAOpC,MAAM,UAAU,QAAQ,CAAC,IAAU;IAG/B,SAAS,IAAI,CAAC,WAAuB,EAAE,KAAiB,EAAE,UAAiB;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;IAAA,CAAC;IACF,OAAO,IAAI,CAAC;AAChB,CAAC"}
package/lib/hmac.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { Hash } from './hash.js';
2
+ export type HMAC = {
3
+ (key: Uint8Array, data: Uint8Array): Uint8Array;
4
+ readonly NAME: string;
5
+ };
6
+ export declare function makeHMAC(hash: Hash): HMAC;