salty-crypto 0.3.1 → 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 (107) 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 +1 -1
  12. package/lib/aead/chacha20poly1305.js +5 -5
  13. package/lib/aead/chacha20poly1305.js.map +1 -1
  14. package/lib/aead.d.ts +2 -2
  15. package/lib/aead.js +2 -2
  16. package/lib/aead.js.map +1 -1
  17. package/lib/bytes.d.ts +1 -1
  18. package/lib/bytes.js +1 -1
  19. package/lib/bytes.js.map +1 -1
  20. package/lib/cipher/chacha20.d.ts +1 -1
  21. package/lib/cipher/chacha20.js +1 -1
  22. package/lib/cipher/chacha20.js.map +1 -1
  23. package/lib/cipher.d.ts +2 -2
  24. package/lib/cipher.js +2 -2
  25. package/lib/cipher.js.map +1 -1
  26. package/lib/dh/x25519.js +1 -1
  27. package/lib/dh/x25519.js.map +1 -1
  28. package/lib/dh.js +3 -3
  29. package/lib/dh.js.map +1 -1
  30. package/lib/hash/blake2s.d.ts +4 -4
  31. package/lib/hash/blake2s.js +5 -5
  32. package/lib/hash/blake2s.js.map +1 -1
  33. package/lib/hash/poly1305.d.ts +4 -4
  34. package/lib/hash/poly1305.js +4 -4
  35. package/lib/hash/poly1305.js.map +1 -1
  36. package/lib/hash.d.ts +2 -2
  37. package/lib/hash.js +3 -3
  38. package/lib/hash.js.map +1 -1
  39. package/lib/hkdf.d.ts +1 -1
  40. package/lib/hkdf.js +2 -2
  41. package/lib/hkdf.js.map +1 -1
  42. package/lib/hmac.d.ts +1 -1
  43. package/lib/hmac.js +2 -2
  44. package/lib/hmac.js.map +1 -1
  45. package/lib/index.d.ts +22 -22
  46. package/lib/index.js +23 -23
  47. package/lib/index.js.map +1 -1
  48. package/lib/io.js +2 -0
  49. package/lib/io.js.map +1 -1
  50. package/lib/noise/algorithms.d.ts +6 -6
  51. package/lib/noise/algorithms.js +1 -1
  52. package/lib/noise/algorithms.js.map +1 -1
  53. package/lib/noise/cipherstate.d.ts +2 -2
  54. package/lib/noise/cipherstate.js +3 -3
  55. package/lib/noise/cipherstate.js.map +1 -1
  56. package/lib/noise/handshake.d.ts +7 -7
  57. package/lib/noise/handshake.js +6 -6
  58. package/lib/noise/handshake.js.map +1 -1
  59. package/lib/noise/patterns.js +1 -1
  60. package/lib/noise/patterns.js.map +1 -1
  61. package/lib/noise/profiles.d.ts +1 -1
  62. package/lib/noise/profiles.js +4 -4
  63. package/lib/noise/profiles.js.map +1 -1
  64. package/lib/noise/rekey.d.ts +1 -1
  65. package/lib/noise/rekey.js +2 -2
  66. package/lib/noise/rekey.js.map +1 -1
  67. package/lib/noise.js +1 -1
  68. package/lib/noise.js.map +1 -1
  69. package/lib/nonce.js +1 -1
  70. package/lib/nonce.js.map +1 -1
  71. package/lib/random.js +2 -3
  72. package/lib/random.js.map +1 -1
  73. package/package.json +29 -23
  74. package/src/.DS_Store +0 -0
  75. package/src/aead/chacha20poly1305.ts +7 -7
  76. package/src/aead.ts +3 -3
  77. package/src/bytes.ts +1 -1
  78. package/src/cipher/chacha20.ts +3 -3
  79. package/src/cipher.ts +3 -3
  80. package/src/dh/x25519.ts +1 -1
  81. package/src/dh.ts +3 -3
  82. package/src/hash/blake2s.ts +2 -2
  83. package/src/hash/poly1305.ts +2 -2
  84. package/src/hash.ts +3 -3
  85. package/src/hkdf.ts +3 -3
  86. package/src/hmac.ts +3 -3
  87. package/src/index.ts +23 -23
  88. package/src/io.ts +3 -0
  89. package/src/noise/algorithms.ts +7 -7
  90. package/src/noise/cipherstate.ts +4 -4
  91. package/src/noise/handshake.ts +8 -8
  92. package/src/noise/patterns.ts +1 -1
  93. package/src/noise/profiles.ts +5 -5
  94. package/src/noise/rekey.ts +3 -3
  95. package/src/noise.ts +1 -1
  96. package/src/nonce.ts +1 -1
  97. package/src/random.ts +2 -3
  98. package/test/{tests/aead.test.ts → aead.test.ts} +2 -2
  99. package/test/{tests/blake2.test.ts → blake2.test.ts} +2 -2
  100. package/test/{tests/chacha20.test.ts → chacha20.test.ts} +2 -2
  101. package/test/{tests/io.test.ts → io.test.ts} +2 -2
  102. package/test/{tests/noise.test.ts → noise.test.ts} +2 -2
  103. package/test/{tests/poly1305.test.ts → poly1305.test.ts} +2 -2
  104. package/tsup.config.ts +14 -0
  105. package/rollup.config.js +0 -19
  106. package/test/harness.ts +0 -74
  107. package/test/tsconfig.json +0 -18
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/aead/chacha20poly1305.ts","../src/cipher/chacha20.ts","../src/hash/poly1305.ts","../src/bytes.ts","../src/aead.ts","../src/random.ts","../src/dh/x25519.ts","../src/dh.ts","../src/hash/blake2s.ts","../src/hkdf.ts","../src/hmac.ts","../src/io.ts","../src/noise/algorithms.ts","../src/noise/cipherstate.ts","../src/nonce.ts","../src/noise/rekey.ts","../src/noise/handshake.ts","../src/noise/patterns.ts","../src/noise/profiles.ts","../src/index.ts"],"sourcesContent":["/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\n// RFC-8439 AEAD construction.\n\nimport { AEAD, _encrypt, _decrypt } from '../aead.js';\nimport { Nonce } from '../nonce.js';\n\nimport { ChaCha20 } from '../cipher/chacha20.js';\nimport { Poly1305 } from '../hash/poly1305.js';\nimport * as Bytes from '../bytes.js';\nimport { HashAlgorithm } from '../hash.js';\n\nconst PADDING = new Uint8Array(16);\n\nfunction pad16(p: HashAlgorithm, unpadded_length: number) {\n const leftover = unpadded_length & 15;\n if (leftover !== 0) p.update(PADDING, 0, 16 - leftover);\n}\n\nfunction aead_tag(tag: Uint8Array,\n key: DataView,\n nonce: Nonce,\n ciphertext: Uint8Array,\n cipherlength: number,\n associated_data?: Uint8Array)\n{\n const mac_key = new Uint8Array(Poly1305.KEYBYTES);\n ChaCha20.stream_xor(key, nonce, mac_key, mac_key, 0);\n const p = new Poly1305(mac_key);\n\n if (associated_data !== void 0) {\n p.update(associated_data, 0, associated_data.byteLength);\n pad16(p, associated_data.byteLength);\n }\n\n p.update(ciphertext, 0, cipherlength);\n pad16(p, cipherlength);\n\n const L = new Uint8Array(16);\n const Lv = new DataView(L.buffer);\n if (associated_data !== void 0) {\n Lv.setUint32(0, associated_data.byteLength, true);\n }\n Lv.setUint32(8, cipherlength, true);\n p.update(L, 0, L.byteLength);\n\n p.final(tag);\n}\n\nexport const ChaCha20Poly1305_RFC8439: AEAD = {\n NAME: 'ChaChaPoly',\n KEYBYTES: 32,\n NONCEBYTES: 12,\n TAGBYTES: 16,\n\n encrypt_detached(plaintext: Uint8Array,\n ciphertext: Uint8Array,\n messagelength: number,\n tag: Uint8Array,\n key: DataView,\n nonce: Nonce,\n associated_data?: Uint8Array): void {\n ChaCha20.stream_xor(key, nonce, plaintext, ciphertext, 1, messagelength);\n aead_tag(tag, key, nonce, ciphertext, messagelength, associated_data);\n },\n\n encrypt: _encrypt,\n\n decrypt_detached(plaintext: Uint8Array,\n ciphertext: Uint8Array,\n messagelength: number,\n expected_tag: Uint8Array,\n key: DataView,\n nonce: Nonce,\n associated_data?: Uint8Array): boolean {\n const actual_tag = new Uint8Array(this.TAGBYTES);\n aead_tag(actual_tag, key, nonce, ciphertext, messagelength, associated_data);\n const ok = Bytes.equal(actual_tag, expected_tag, actual_tag.byteLength);\n if (ok) ChaCha20.stream_xor(key, nonce, ciphertext, plaintext, 1, messagelength);\n return ok;\n },\n\n decrypt: _decrypt,\n};\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\n// RFC-8439 ChaCha20.\n\nimport { StreamCipher } from '../cipher.js';\nimport { Nonce } from '../nonce.js';\n\nfunction ROTATE(n: number, bits: number): number {\n return (n << bits) | (n >>> (32 - bits));\n}\n\nexport function chacha20_quarter_round(s: Uint32Array, a: number, b: number, c: number, d: number) {\n s[a] += s[b]; s[d] ^= s[a]; s[d] = ROTATE(s[d], 16);\n s[c] += s[d]; s[b] ^= s[c]; s[b] = ROTATE(s[b], 12);\n s[a] += s[b]; s[d] ^= s[a]; s[d] = ROTATE(s[d], 8);\n s[c] += s[d]; s[b] ^= s[c]; s[b] = ROTATE(s[b], 7);\n}\n\nfunction fill_state(state: Uint32Array, key: DataView, block: number, nonce: DataView) {\n state[0] += 0x61707865; state[1] += 0x3320646e; state[2] += 0x79622d32; state[3] += 0x6b206574;\n state[4] += key.getUint32(0, true); state[5] += key.getUint32(4, true);\n state[6] += key.getUint32(8, true); state[7] += key.getUint32(12, true);\n state[8] += key.getUint32(16, true); state[9] += key.getUint32(20, true);\n state[10] += key.getUint32(24, true); state[11] += key.getUint32(28, true);\n state[12] += block;\n state[13] += nonce.getUint32(0, true);\n state[14] += nonce.getUint32(4, true);\n state[15] += nonce.getUint32(8, true);\n}\n\nexport function chacha20_block(key: DataView, block: number, nonce: DataView): Uint32Array {\n const state = new Uint32Array(16);\n fill_state(state, key, block, nonce);\n for (let round = 0; round < 20; round += 2) {\n chacha20_quarter_round(state, 0, 4, 8, 12);\n chacha20_quarter_round(state, 1, 5, 9, 13);\n chacha20_quarter_round(state, 2, 6, 10, 14);\n chacha20_quarter_round(state, 3, 7, 11, 15);\n chacha20_quarter_round(state, 0, 5, 10, 15);\n chacha20_quarter_round(state, 1, 6, 11, 12);\n chacha20_quarter_round(state, 2, 7, 8, 13);\n chacha20_quarter_round(state, 3, 4, 9, 14);\n }\n fill_state(state, key, block, nonce);\n return state;\n}\n\nfunction serializeNonce(n: Nonce): DataView {\n const view = new DataView(new ArrayBuffer(ChaCha20.NONCEBYTES));\n view.setUint32(0, n.extra, true);\n view.setUint32(4, n.lo, true);\n view.setUint32(8, n.hi, true);\n return view;\n}\n\nexport const ChaCha20: StreamCipher = {\n NAME: 'chacha20',\n KEYBYTES: 32,\n NONCEBYTES: 12,\n BLOCKBYTES: 64,\n\n stream_xor(key: DataView,\n nonce0: Nonce,\n input: Uint8Array,\n output: Uint8Array,\n initial_counter = 0,\n messagelength = input.byteLength): void\n {\n const nonce = serializeNonce(nonce0);\n const whole_blocks = messagelength >> 6;\n const remaining_bytes = messagelength & 63;\n for (let j = 0; j < whole_blocks; j++) {\n const chunk = chacha20_block(key, initial_counter + j, nonce);\n for (let i = 0; i < 64; i++) {\n output[(j << 6) + i] = input[(j << 6) + i] ^ (chunk[i >> 2] >> ((i & 3) << 3));\n }\n }\n if (remaining_bytes !== 0) {\n const chunk = chacha20_block(key, initial_counter + whole_blocks, nonce);\n for (let i = 0; i < remaining_bytes; i++) {\n output[(whole_blocks << 6) + i] = input[(whole_blocks << 6) + i] ^ (chunk[i >> 2] >> ((i & 3) << 3));\n }\n }\n }\n};\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\n// TypeScript port of the \"poly1305\" class from nacl-fast.js from tweetnacl.\n//\n// The comment attached to the class in that file reads as follows:\n// /*\n// * Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// * https://github.com/floodyberry/poly1305-donna\n// */\n\nimport type { Hash, HashAlgorithm } from '../hash.js';\n\nexport const Poly1305 = (class Poly1305 implements HashAlgorithm {\n static readonly NAME = \"Poly1305\";\n static readonly KEYBYTES = 32;\n static readonly OUTBYTES = 16;\n static readonly BLOCKLEN = 16;\n\n buffer = new Uint8Array(16);\n r = new Uint16Array(10);\n h = new Uint16Array(10);\n pad = new Uint16Array(8);\n leftover = 0;\n fin = 0;\n\n static digest(input: Uint8Array, key?: Uint8Array, outlen?: number): Uint8Array {\n const p = new Poly1305(key, outlen);\n p.update(input);\n return p.final();\n }\n\n constructor(key?: Uint8Array, outlen?: number) {\n if (!key) throw new Error(\"Poly1305: key required\");\n if ((outlen ?? Poly1305.OUTBYTES) !== Poly1305.OUTBYTES) throw new Error(\"Poly1305: outlen != OUTBYTES\");\n\n const t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n const t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n const t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n const t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n const t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n const t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n const t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n const t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n }\n\n blocks(m: Uint8Array, mpos: number, bytes: number) {\n const hibit = this.fin ? 0 : (1 << 11);\n\n let h0 = this.h[0];\n let h1 = this.h[1];\n let h2 = this.h[2];\n let h3 = this.h[3];\n let h4 = this.h[4];\n let h5 = this.h[5];\n let h6 = this.h[6];\n let h7 = this.h[7];\n let h8 = this.h[8];\n let h9 = this.h[9];\n\n let r0 = this.r[0];\n let r1 = this.r[1];\n let r2 = this.r[2];\n let r3 = this.r[3];\n let r4 = this.r[4];\n let r5 = this.r[5];\n let r6 = this.r[6];\n let r7 = this.r[7];\n let r8 = this.r[8];\n let r9 = this.r[9];\n\n while (bytes >= 16) {\n const t0 = m[mpos + 0] & 0xff | (m[mpos + 1] & 0xff) << 8; h0 += (t0) & 0x1fff;\n const t1 = m[mpos + 2] & 0xff | (m[mpos + 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n const t2 = m[mpos + 4] & 0xff | (m[mpos + 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n const t3 = m[mpos + 6] & 0xff | (m[mpos + 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n const t4 = m[mpos + 8] & 0xff | (m[mpos + 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n const t5 = m[mpos + 10] & 0xff | (m[mpos + 11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n const t6 = m[mpos + 12] & 0xff | (m[mpos + 13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n const t7 = m[mpos + 14] & 0xff | (m[mpos + 15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n let c = 0;\n\n let d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n let d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n let d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n let d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n let d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n let d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n let d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n let d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n let d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n let d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n }\n\n final(mac?: Uint8Array): Uint8Array {\n if (!mac) mac = new Uint8Array(Poly1305.OUTBYTES);\n\n if (this.leftover) {\n let i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n let c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (let i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n const g = new Uint16Array(10);\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (let i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n let mask = (c ^ 1) - 1;\n for (let i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (let i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0]) | (this.h[1] << 13)) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10)) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7)) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4)) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11)) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8)) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5)) & 0xffff;\n\n let f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (let i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[0] = (this.h[0] >>> 0) & 0xff;\n mac[1] = (this.h[0] >>> 8) & 0xff;\n mac[2] = (this.h[1] >>> 0) & 0xff;\n mac[3] = (this.h[1] >>> 8) & 0xff;\n mac[4] = (this.h[2] >>> 0) & 0xff;\n mac[5] = (this.h[2] >>> 8) & 0xff;\n mac[6] = (this.h[3] >>> 0) & 0xff;\n mac[7] = (this.h[3] >>> 8) & 0xff;\n mac[8] = (this.h[4] >>> 0) & 0xff;\n mac[9] = (this.h[4] >>> 8) & 0xff;\n mac[10] = (this.h[5] >>> 0) & 0xff;\n mac[11] = (this.h[5] >>> 8) & 0xff;\n mac[12] = (this.h[6] >>> 0) & 0xff;\n mac[13] = (this.h[6] >>> 8) & 0xff;\n mac[14] = (this.h[7] >>> 0) & 0xff;\n mac[15] = (this.h[7] >>> 8) & 0xff;\n return mac;\n };\n\n update(m: Uint8Array, mpos = 0, bytes = m.byteLength) {\n if (this.leftover) {\n let want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (let i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos + i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n const want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (let i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos + i];\n this.leftover += bytes;\n }\n }\n}) satisfies Hash;\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\n// `verify` from nacl-fast.js\nfunction verify(x: Uint8Array, y: Uint8Array, n: number): number {\n let d = 0;\n for (let i = 0; i < n; i++) d |= x[i]^y[i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nexport function equal(x: Uint8Array, y: Uint8Array, n: number): boolean {\n return verify(x, y, n) === 0;\n}\n\nexport function xor(a: Uint8Array, b: Uint8Array): Uint8Array {\n const len = Math.min(a.byteLength, b.byteLength);\n const r = new Uint8Array(len);\n for (let i = 0; i < len; i++) r[i] = a[i] ^ b[i];\n return r;\n}\n\nexport function append(a: Uint8Array, b: Uint8Array): Uint8Array {\n const r = new Uint8Array(a.byteLength + b.byteLength);\n r.set(a, 0);\n r.set(b, a.byteLength);\n return r;\n}\n\nexport const EMPTY = new Uint8Array(0);\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { Nonce } from './nonce.js';\n\nexport class AuthenticationFailure extends Error {}\n\nexport interface AEAD {\n readonly NAME: string;\n readonly KEYBYTES: number;\n readonly NONCEBYTES: number;\n readonly TAGBYTES: number;\n\n encrypt_detached(plaintext: Uint8Array,\n ciphertext: Uint8Array,\n messagelength: number,\n tag: Uint8Array,\n key: DataView,\n nonce: Nonce,\n associated_data?: Uint8Array): void;\n\n encrypt(plaintext: Uint8Array,\n key: DataView,\n nonce: Nonce,\n associated_data?: Uint8Array): Uint8Array;\n\n decrypt_detached(plaintext: Uint8Array,\n ciphertext: Uint8Array,\n messagelength: number,\n expected_tag: Uint8Array,\n key: DataView,\n nonce: Nonce,\n associated_data?: Uint8Array): boolean;\n\n decrypt(ciphertextAndTag: Uint8Array,\n key: DataView,\n nonce: Nonce,\n associated_data?: Uint8Array): Uint8Array;\n}\n\nexport function _encrypt(this: AEAD,\n plaintext: Uint8Array,\n key: DataView,\n nonce: Nonce,\n associated_data?: Uint8Array): Uint8Array\n{\n const ciphertextAndTag = new Uint8Array(plaintext.byteLength + this.TAGBYTES);\n this.encrypt_detached(plaintext,\n ciphertextAndTag,\n plaintext.byteLength,\n ciphertextAndTag.subarray(plaintext.byteLength),\n key,\n nonce,\n associated_data);\n return ciphertextAndTag;\n}\n\nexport function _decrypt(this: AEAD,\n ciphertextAndTag: Uint8Array,\n key: DataView,\n nonce: Nonce,\n associated_data?: Uint8Array): Uint8Array\n{\n const plaintext = new Uint8Array(ciphertextAndTag.byteLength - this.TAGBYTES);\n if (!this.decrypt_detached(plaintext,\n ciphertextAndTag,\n plaintext.byteLength,\n ciphertextAndTag.subarray(plaintext.byteLength),\n key,\n nonce,\n associated_data)) {\n throw new AuthenticationFailure(\"AEAD authentication failed\");\n }\n return plaintext;\n}\n\nexport { ChaCha20Poly1305_RFC8439 } from './aead/chacha20poly1305.js';\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\n// TypeScript port of the randomness-generation code from nacl-fast.js from tweetnacl.\n//\n// The comment in that file reads as follows:\n//\n// // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// // Public domain.\n// //\n// // Implementation derived from TweetNaCl version 20140427.\n// // See for details: http://tweetnacl.cr.yp.to/\n\nexport const _randomBytes: (out: Uint8Array, n: number) => void = (() => {\n if (crypto && crypto.getRandomValues) {\n const QUOTA = 65536;\n return (x: Uint8Array, n: number) => {\n for (let i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(x.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n };\n } else if (typeof require !== 'undefined') {\n const crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n return (x: Uint8Array, n: number) => x.set(crypto.randomBytes(n));\n }\n }\n throw new Error(\"No usable randomness source found\");\n})();\n\nexport function randomBytes(n: number): Uint8Array {\n const bs = new Uint8Array(n);\n _randomBytes(bs, n);\n return bs;\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\n// TypeScript port of the X25519 code from nacl-fast.js from tweetnacl.\n//\n// The comment in that file reads as follows:\n//\n// // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// // Public domain.\n// //\n// // Implementation derived from TweetNaCl version 20140427.\n// // See for details: http://tweetnacl.cr.yp.to/\n\nexport const crypto_scalarmult_BYTES = 32;\nexport const crypto_scalarmult_SCALARBYTES = 32;\n\nfunction gf(): Float64Array {\n return new Float64Array(16);\n}\n\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\n\nconst _121665 = gf();\n_121665[0] = 0xdb41;\n_121665[1] = 1;\n\nfunction car25519(o: Float64Array) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n const v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p: Float64Array, q: Float64Array, b: number) {\n const c = ~(b-1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o: Uint8Array, n: Float64Array) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n const b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (let i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction unpack25519(o: Float64Array, n: Uint8Array) {\n for (let i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o: Float64Array, a: Float64Array, b: Float64Array) {\n for (let i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o: Float64Array, a: Float64Array, b: Float64Array) {\n for (let i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o: Float64Array, a: Float64Array, b: Float64Array) {\n let t0 = 0;\n let t1 = 0;\n let t2 = 0;\n let t3 = 0;\n let t4 = 0;\n let t5 = 0;\n let t6 = 0;\n let t7 = 0;\n let t8 = 0;\n let t9 = 0;\n let t10 = 0;\n let t11 = 0;\n let t12 = 0;\n let t13 = 0;\n let t14 = 0;\n let t15 = 0;\n let t16 = 0;\n let t17 = 0;\n let t18 = 0;\n let t19 = 0;\n let t20 = 0;\n let t21 = 0;\n let t22 = 0;\n let t23 = 0;\n let t24 = 0;\n let t25 = 0;\n let t26 = 0;\n let t27 = 0;\n let t28 = 0;\n let t29 = 0;\n let t30 = 0;\n\n const b0 = b[0];\n const b1 = b[1];\n const b2 = b[2];\n const b3 = b[3];\n const b4 = b[4];\n const b5 = b[5];\n const b6 = b[6];\n const b7 = b[7];\n const b8 = b[8];\n const b9 = b[9];\n const b10 = b[10];\n const b11 = b[11];\n const b12 = b[12];\n const b13 = b[13];\n const b14 = b[14];\n const b15 = b[15];\n\n let v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n let c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o: Float64Array, a: Float64Array) {\n M(o, a, a);\n}\n\nfunction inv25519(o: Float64Array, i: Float64Array) {\n const c = gf();\n for (let a = 0; a < 16; a++) c[a] = i[a];\n for (let a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4) M(c, c, i);\n }\n for (let a = 0; a < 16; a++) o[a] = c[a];\n}\n\nexport function crypto_scalarmult(q: Uint8Array, n: Uint8Array, p: Uint8Array) {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n\n const a = gf();\n const b = gf();\n const c = gf();\n const d = gf();\n const e = gf();\n const f = gf();\n\n for (let i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n\n unpack25519(x,p);\n\n for (let i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n\n for (let i=254; i>=0; --i) {\n const r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n\n for (let i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n\n const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n}\n\nexport function crypto_scalarmult_base(q: Uint8Array, n: Uint8Array) {\n crypto_scalarmult(q, n, _9);\n}\n\n/* High-level API */\n\nexport function scalarMult(n: Uint8Array, p: Uint8Array): Uint8Array {\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n const q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n}\n\nexport function scalarMultBase(n: Uint8Array): Uint8Array {\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n const q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n}\n\nscalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nscalarMult.groupElementLength = crypto_scalarmult_BYTES;\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { randomBytes } from \"./random.js\";\nimport { scalarMult, scalarMultBase } from \"./dh/x25519.js\";\n\nexport type DHKeyPair = { public: Uint8Array, secret: Uint8Array };\n\nexport interface DH {\n readonly NAME: string;\n readonly DHLEN: number;\n\n generateKeypair(): DHKeyPair;\n dh(kp: DHKeyPair, pk: Uint8Array): Uint8Array;\n}\n\nexport const X25519: DH = {\n NAME: \"25519\",\n DHLEN: scalarMult.groupElementLength,\n\n generateKeypair(): DHKeyPair {\n const sk = randomBytes(scalarMult.scalarLength);\n const pk = scalarMultBase(sk);\n return { public: pk, secret: sk };\n },\n\n dh(kp: DHKeyPair, pk: Uint8Array): Uint8Array {\n return scalarMult(kp.secret, pk);\n }\n};\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\n// RFC 7693 BLAKE2s, ported from the C code therein.\n\nimport type { Hash, HashAlgorithm } from '../hash.js';\n\nfunction ROTR32(n: number, bits: number): number {\n return (n >>> bits) | (n << (32 - bits));\n}\n\nfunction B2S_G(v: Uint32Array, a: number, b: number, c: number, d: number, x: number, y: number) {\n v[a] = v[a] + v[b] + x;\n v[d] = ROTR32(v[d] ^ v[a], 16);\n v[c] = v[c] + v[d];\n v[b] = ROTR32(v[b] ^ v[c], 12);\n v[a] = v[a] + v[b] + y;\n v[d] = ROTR32(v[d] ^ v[a], 8);\n v[c] = v[c] + v[d];\n v[b] = ROTR32(v[b] ^ v[c], 7);\n}\n\nconst blake2s_iv = Uint32Array.from([\n 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,\n 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19,\n]);\n\nconst _sigma = Uint8Array.from([\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n]);\n\nfunction sigma(i: number, j: number): number {\n return _sigma[(i << 4) + j];\n}\n\nexport const BLAKE2s = (class BLAKE2s implements HashAlgorithm {\n static readonly NAME = \"BLAKE2s\";\n static readonly KEYBYTES = 32;\n static readonly OUTBYTES = 32;\n static readonly BLOCKLEN = 64;\n\n b = new Uint8Array(64);\n bv = new DataView(this.b.buffer);\n\n h = Uint32Array.from(blake2s_iv);\n t = new Uint32Array(2);\n c = 0;\n\n static digest(input: Uint8Array, key?: Uint8Array, outlen?: number, ): Uint8Array {\n const p = new BLAKE2s(key, outlen);\n p.update(input);\n return p.final();\n }\n\n constructor(key?: Uint8Array, public outlen: number = BLAKE2s.OUTBYTES)\n {\n const keylen = key?.byteLength ?? 0;\n\n if (outlen == 0 || outlen > 32 || keylen > 32) {\n throw new Error(\"illegal BLAKE2s parameter length(s)\");\n }\n\n this.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen;\n\n if (key && keylen > 0) {\n this.update(key);\n this.c = 64;\n }\n }\n\n update(input: Uint8Array, offset = 0, length = input.byteLength) {\n for (let i = offset; i < offset + length; i++) {\n if (this.c == 64) {\n this.t[0] += this.c;\n if (this.t[0] < this.c) this.t[1]++;\n this.compress(false);\n this.c = 0;\n }\n this.b[this.c++] = input[i];\n }\n }\n\n final(output?: Uint8Array): Uint8Array {\n this.t[0] += this.c;\n if (this.t[0] < this.c) this.t[1]++;\n\n while (this.c < 64) this.b[this.c++] = 0;\n this.compress(true);\n\n if (output === void 0) output = new Uint8Array(this.outlen);\n for (let i = 0; i < this.outlen; i++) {\n output[i] = (this.h[i >> 2] >> (8 * (i & 3))) & 0xFF;\n }\n return output;\n }\n\n compress(last: boolean) {\n const v = new Uint32Array(16);\n const m = new Uint32Array(16);\n\n for (let i = 0; i < 8; i++) {\n v[i] = this.h[i];\n v[i + 8] = blake2s_iv[i];\n }\n\n v[12] ^= this.t[0];\n v[13] ^= this.t[1];\n if (last) v[14] = ~v[14];\n\n for (let i = 0; i < 16; i++) {\n m[i] = this.bv.getUint32(i << 2, true);\n }\n\n for (let i = 0; i < 10; i++) {\n B2S_G(v, 0, 4, 8, 12, m[sigma(i, 0)], m[sigma(i, 1)]);\n B2S_G(v, 1, 5, 9, 13, m[sigma(i, 2)], m[sigma(i, 3)]);\n B2S_G(v, 2, 6, 10, 14, m[sigma(i, 4)], m[sigma(i, 5)]);\n B2S_G(v, 3, 7, 11, 15, m[sigma(i, 6)], m[sigma(i, 7)]);\n B2S_G(v, 0, 5, 10, 15, m[sigma(i, 8)], m[sigma(i, 9)]);\n B2S_G(v, 1, 6, 11, 12, m[sigma(i, 10)], m[sigma(i, 11)]);\n B2S_G(v, 2, 7, 8, 13, m[sigma(i, 12)], m[sigma(i, 13)]);\n B2S_G(v, 3, 4, 9, 14, m[sigma(i, 14)], m[sigma(i, 15)]);\n }\n\n for (let i = 0; i < 8; i++) {\n this.h[i] ^= v[i] ^ v[i + 8];\n }\n }\n}) satisfies Hash;\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { HMAC } from './hmac.js';\nimport * as Bytes from './bytes.js';\n\nexport type HKDF = {\n (chainingKey: Uint8Array, input: Uint8Array, numOutputs: 2): [Uint8Array, Uint8Array];\n (chainingKey: Uint8Array, input: Uint8Array, numOutputs: 3): [Uint8Array, Uint8Array, Uint8Array];\n};\n\nexport function makeHKDF(hmac: HMAC): HKDF {\n function hkdf(chainingKey: Uint8Array, input: Uint8Array, numOutputs: 2): [Uint8Array, Uint8Array];\n function hkdf(chainingKey: Uint8Array, input: Uint8Array, numOutputs: 3): [Uint8Array, Uint8Array, Uint8Array];\n function hkdf(chainingKey: Uint8Array, input: Uint8Array, numOutputs: 2 | 3): Uint8Array[] {\n const tempKey = hmac(chainingKey, input);\n const o1 = hmac(tempKey, Uint8Array.from([1]));\n const o2 = hmac(tempKey, Bytes.append(o1, Uint8Array.from([2])));\n switch (numOutputs) {\n case 2: return [o1, o2];\n case 3: return [o1, o2, hmac(tempKey, Bytes.append(o2, Uint8Array.from([3])))];\n }\n };\n return hkdf;\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { Hash } from './hash.js';\nimport * as Bytes from './bytes.js';\n\nexport type HMAC = {\n (key: Uint8Array, data: Uint8Array): Uint8Array;\n readonly NAME: string;\n};\n\nexport function makeHMAC(hash: Hash): HMAC {\n const HMAC_IPAD = new Uint8Array(hash.BLOCKLEN); HMAC_IPAD.fill(0x36);\n const HMAC_OPAD = new Uint8Array(hash.BLOCKLEN); HMAC_OPAD.fill(0x5c);\n const hmac = (key0: Uint8Array, data: Uint8Array) => {\n const key1 = key0.byteLength > hash.BLOCKLEN ? hash.digest(key0) : key0;\n const key = Bytes.append(key1, new Uint8Array(hash.BLOCKLEN - key1.byteLength));\n return hash.digest(Bytes.append(Bytes.xor(key, HMAC_OPAD),\n hash.digest(Bytes.append(Bytes.xor(key, HMAC_IPAD),\n data))));\n };\n hmac.NAME = 'HMAC-' + hash.NAME;\n return hmac;\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nexport function toHex(bs: Uint8Array): string {\n let s = '';\n bs.forEach(b => {\n s = s + '0123456789abcdef'[b >> 4];\n s = s + '0123456789abcdef'[b & 15];\n });\n return s;\n}\n\nexport function fromHex(s: string): Uint8Array {\n s = s.replace(/[^0-9a-fA-F]/g, '').toLowerCase();\n if (s.length % 2) throw new Error(\"Hex input contains an odd number of digits\");\n const len = Math.floor(s.length / 2);\n const result = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n result[i] = parseInt(s.substring(2*i,2*i+2),16);\n }\n return result;\n}\n\nexport function toBase64(bs: Uint8Array, withPadding = true): string {\n let r = '';\n bs.forEach(b => r = r + String.fromCharCode(b));\n let s = btoa(r);\n if (!withPadding) s = s.replace(/=/g, '');\n return s;\n}\n\nexport function fromBase64(s: string): Uint8Array {\n const r = atob(s);\n const result = new Uint8Array(r.length);\n for (let i = 0; i < r.length; i++) result[i] = r.charCodeAt(i);\n return result;\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { AEAD } from '../aead.js';\nimport { Hash } from '../hash.js';\nimport { DH } from '../dh.js';\nimport { HMAC } from '../hmac.js';\nimport { HKDF } from '../hkdf.js';\n\nimport { Rekey } from './rekey.js';\n\nexport interface Algorithms {\n dh: DH,\n aead: AEAD,\n hash: Hash,\n hmac?: HMAC,\n hkdf?: HKDF,\n rekey?: Rekey,\n}\n\nexport function matchPattern(a: Algorithms, protocol_name: string): string | null {\n const r = new RegExp(`^Noise_([A-Za-z0-9+]+)_${a.dh.NAME}_${a.aead.NAME}_${a.hash.NAME}$`);\n const m = r.exec(protocol_name);\n if (m === null) return null;\n return m[1];\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { Nonce } from '../nonce.js';\nimport { makeRekey } from './rekey.js';\nimport { Algorithms } from './algorithms.js';\n\nexport class CipherState {\n view: DataView | null = null;\n nonce = new Nonce();\n readonly maxPayload: number;\n\n constructor (public algorithms: Algorithms,\n key?: Uint8Array)\n {\n if (key !== void 0) this.view = new DataView(key.buffer);\n this.maxPayload = 65535 - this.algorithms.aead.TAGBYTES;\n }\n\n encrypt(plaintext: Uint8Array, associated_data?: Uint8Array): Uint8Array {\n if (this.view === null) return plaintext;\n const ciphertext =\n this.algorithms.aead.encrypt(plaintext, this.view, this.nonce, associated_data);\n this.nonce.increment();\n return ciphertext;\n }\n\n decrypt(ciphertext: Uint8Array, associated_data?: Uint8Array): Uint8Array {\n if (this.view === null) return ciphertext;\n const plaintext =\n this.algorithms.aead.decrypt(ciphertext, this.view, this.nonce, associated_data);\n this.nonce.increment();\n return plaintext;\n }\n\n rekey() {\n if (this.view === null) return;\n this.view = (this.algorithms.rekey ?? makeRekey(this.algorithms.aead))(this.view);\n }\n\n encrypt_large(plaintext: Uint8Array): Uint8Array[] {\n if (plaintext.byteLength > this.maxPayload) {\n const pieces = [];\n while (plaintext.byteLength > this.maxPayload) {\n pieces.push(this.encrypt(plaintext.subarray(0, this.maxPayload)));\n plaintext = plaintext.subarray(this.maxPayload);\n }\n if (plaintext.byteLength > 0) {\n pieces.push(this.encrypt(plaintext));\n }\n return pieces;\n } else {\n return [this.encrypt(plaintext)];\n }\n }\n\n decrypt_large(ciphertexts: Uint8Array[]): Uint8Array {\n const final_len = ciphertexts.reduce(\n (acc, c) => acc + c.byteLength - this.algorithms.aead.TAGBYTES, 0);\n const final = new Uint8Array(final_len);\n let offset = 0;\n ciphertexts.forEach(c => {\n const p = this.decrypt(c);\n final.set(p, offset);\n offset += p.byteLength;\n });\n return final;\n }\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nexport class Nonce {\n constructor(public lo = 0, public hi = 0, public extra = 0) {}\n\n increment() {\n const oldLo = this.lo;\n const newLo = (oldLo + 1) | 0;\n this.lo = newLo;\n if (newLo < oldLo) this.hi = (this.hi + 1) | 0;\n }\n\n reset(lo = 0, hi = 0, extra = 0) {\n this.lo = lo;\n this.hi = hi;\n this.extra = extra;\n }\n\n static get MAX(): Nonce {\n return new Nonce(0xffffffff, 0xffffffff);\n }\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { AEAD } from '../aead.js';\nimport { Nonce } from '../nonce.js';\n\nexport type Rekey = (k: DataView) => DataView;\n\nexport function makeRekey(aead: AEAD): Rekey {\n return (k: DataView): DataView => {\n return new DataView(aead.encrypt(new Uint8Array(32), k, Nonce.MAX).buffer);\n };\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { DHKeyPair } from '../dh.js';\nimport * as Bytes from '../bytes.js';\n\nimport { Algorithms } from './algorithms.js';\nimport { CipherState } from './cipherstate.js';\nimport { HandshakePattern, KeyMixToken, lookupPattern, Token } from './patterns.js';\nimport { HKDF, makeHKDF } from '../hkdf.js';\nimport { makeHMAC } from '../hmac.js';\n\nexport type Role = 'initiator' | 'responder';\n\nexport type HandshakeOptions = {\n prologue?: Uint8Array,\n staticKeypair?: DHKeyPair,\n remoteStaticPublicKey?: Uint8Array,\n pregeneratedEphemeralKeypair?: DHKeyPair,\n remotePregeneratedEphemeralPublicKey?: Uint8Array,\n preSharedKeys?: Uint8Array[],\n};\n\nexport type TransportState = { send: CipherState, recv: CipherState };\n\nexport class Handshake {\n staticKeypair: DHKeyPair;\n remoteStaticPublicKey: Uint8Array | null;\n ephemeralKeypair: DHKeyPair;\n remoteEphemeralPublicKey: Uint8Array | null;\n preSharedKeys?: Uint8Array[];\n stepIndex = 0;\n cipherState: CipherState;\n chainingKey: Uint8Array;\n handshakeHash: Uint8Array;\n hkdf: HKDF;\n pattern: HandshakePattern;\n\n constructor (public algorithms: Algorithms,\n pattern: HandshakePattern | string,\n public role: Role,\n options: HandshakeOptions = {})\n {\n if (typeof pattern === 'string') {\n const p = lookupPattern(pattern);\n if (p === null) throw new Error(\"Unknown Noise Protocol handshake pattern \" + pattern);\n this.pattern = p;\n } else {\n this.pattern = pattern;\n }\n\n this.staticKeypair = options.staticKeypair ?? this.algorithms.dh.generateKeypair();\n this.remoteStaticPublicKey = options.remoteStaticPublicKey ?? null;\n this.ephemeralKeypair = options.pregeneratedEphemeralKeypair ?? this.algorithms.dh.generateKeypair();\n this.remoteEphemeralPublicKey = options.remotePregeneratedEphemeralPublicKey ?? null;\n this.preSharedKeys = options.preSharedKeys;\n if (this.preSharedKeys) {\n this.preSharedKeys = this.preSharedKeys.slice();\n if (this.preSharedKeys.length === 0) this.preSharedKeys = void 0;\n }\n\n const protocolName = new TextEncoder().encode(\n 'Noise_' + this.pattern.name +\n '_' + this.algorithms.dh.NAME +\n '_' + this.algorithms.aead.NAME +\n '_' + this.algorithms.hash.NAME);\n\n this.cipherState = new CipherState(this.algorithms);\n {\n const ckLen = this.algorithms.hash.OUTBYTES;\n const ckSeed = (protocolName.byteLength > ckLen)\n ? this.algorithms.hash.digest(protocolName)\n : protocolName;\n this.chainingKey = Bytes.append(ckSeed, new Uint8Array(ckLen - ckSeed.byteLength));\n }\n this.handshakeHash = this.chainingKey;\n\n this.mixHash(options.prologue ?? Bytes.EMPTY);\n this.pattern.initiatorPreMessage.forEach(t => this.mixHash(t === 'e'\n ? (this.isInitiator ? this.ephemeralKeypair.public : this.remoteEphemeralPublicKey!)\n : (this.isInitiator ? this.staticKeypair.public : this.remoteStaticPublicKey!)));\n this.pattern.responderPreMessage.forEach(t => this.mixHash(t === 'e'\n ? (!this.isInitiator ? this.ephemeralKeypair.public : this.remoteEphemeralPublicKey!)\n : (!this.isInitiator ? this.staticKeypair.public : this.remoteStaticPublicKey!)));\n\n this.hkdf = this.algorithms.hkdf ?? makeHKDF(\n this.algorithms.hmac ?? makeHMAC(this.algorithms.hash));\n }\n\n get isInitiator(): boolean {\n return this.role === 'initiator';\n }\n\n mixHash(data: Uint8Array) {\n this.handshakeHash = this.algorithms.hash.digest(Bytes.append(this.handshakeHash, data));\n }\n\n mixKey(input: Uint8Array) {\n const [newCk, k] = this.hkdf(this.chainingKey, input, 2);\n this.chainingKey = newCk;\n this.cipherState = new CipherState(this.algorithms, k);\n }\n\n mixKeyAndHashNextPSK() {\n const psk = this.preSharedKeys!.shift()!;\n const [newCk, tempH, k] = this.hkdf(this.chainingKey, psk, 3);\n this.chainingKey = newCk;\n this.mixHash(tempH);\n this.cipherState = new CipherState(this.algorithms, k);\n }\n\n encryptAndHash(p: Uint8Array) {\n const c = this.cipherState.encrypt(p, this.handshakeHash);\n this.mixHash(c);\n return c;\n }\n\n decryptAndHash(c: Uint8Array) {\n const p = this.cipherState.decrypt(c, this.handshakeHash);\n this.mixHash(c);\n return p;\n }\n\n _split(): TransportState | null {\n if (this.stepIndex < this.pattern.messages.length) {\n return null;\n } else {\n let [kI, kR] = this.hkdf(this.chainingKey, Bytes.EMPTY, 2)\n .map(k => new CipherState(this.algorithms, k));\n return this.isInitiator ? { send: kI, recv: kR } : { send: kR, recv: kI };\n }\n }\n\n _nextStep(): Token[] {\n if (this.stepIndex >= this.pattern.messages.length) {\n throw new Error(\"Handshake already complete, cannot continue\");\n }\n return this.pattern.messages[this.stepIndex++];\n }\n\n _processKeyMixToken(t: KeyMixToken) {\n switch (t) {\n case 'ee':\n this.mixKey(this.algorithms.dh.dh(this.ephemeralKeypair, this.remoteEphemeralPublicKey!));\n break;\n\n case 'es':\n this.mixKey(this.isInitiator\n ? this.algorithms.dh.dh(this.ephemeralKeypair, this.remoteStaticPublicKey!)\n : this.algorithms.dh.dh(this.staticKeypair, this.remoteEphemeralPublicKey!));\n break;\n\n case 'se':\n this.mixKey(!this.isInitiator\n ? this.algorithms.dh.dh(this.ephemeralKeypair, this.remoteStaticPublicKey!)\n : this.algorithms.dh.dh(this.staticKeypair, this.remoteEphemeralPublicKey!));\n break;\n\n case 'ss':\n this.mixKey(this.algorithms.dh.dh(this.staticKeypair, this.remoteStaticPublicKey!));\n break;\n\n case 'psk':\n this.mixKeyAndHashNextPSK();\n break;\n }\n }\n\n writeMessage(payload: Uint8Array): { packet: Uint8Array, finished: TransportState | null } {\n const pieces = [];\n this._nextStep().forEach(t => {\n switch (t) {\n case 'e':\n pieces.push(this.ephemeralKeypair.public);\n this.mixHash(this.ephemeralKeypair.public);\n if (this.preSharedKeys) this.mixKey(this.ephemeralKeypair.public);\n break;\n\n case 's':\n pieces.push(this.encryptAndHash(this.staticKeypair.public));\n break;\n\n default:\n this._processKeyMixToken(t);\n break;\n }\n });\n pieces.push(this.encryptAndHash(payload));\n\n let packet: Uint8Array;\n if (pieces.length === 1) {\n packet = pieces[0];\n } else {\n packet = new Uint8Array(pieces.reduce((ac, p) => ac + p.byteLength, 0));\n let offset = 0;\n pieces.forEach(p => { packet.set(p, offset); offset += p.byteLength; });\n }\n\n return { packet, finished: this._split() };\n }\n\n readMessage(packet: Uint8Array): { message: Uint8Array, finished: TransportState | null } {\n const take = (n: number): Uint8Array => {\n const bs = packet.slice(0, n);\n packet = packet.subarray(n);\n return bs;\n };\n this._nextStep().forEach(t => {\n switch (t) {\n case 'e':\n this.remoteEphemeralPublicKey = take(this.algorithms.dh.DHLEN);\n this.mixHash(this.remoteEphemeralPublicKey);\n if (this.preSharedKeys) this.mixKey(this.remoteEphemeralPublicKey);\n break;\n\n case 's':\n this.remoteStaticPublicKey = this.decryptAndHash(take(\n this.algorithms.dh.DHLEN + (this.cipherState.view ? 16 : 0)));\n break;\n\n default:\n this._processKeyMixToken(t);\n break;\n }\n });\n\n const message = this.decryptAndHash(packet);\n return { message, finished: this._split() };\n }\n\n async completeHandshake(writePacket: (packet: Uint8Array) => Promise<void>,\n readPacket: () => Promise<Uint8Array>,\n handleMessage = async (_m: Uint8Array): Promise<void> => {},\n produceMessage = async (): Promise<Uint8Array> => new Uint8Array(0))\n : Promise<TransportState>\n {\n const W = async (): Promise<TransportState> => {\n const { packet, finished } = this.writeMessage(await produceMessage());\n await writePacket(packet);\n return finished || R();\n };\n const R = async (): Promise<TransportState> => {\n const { message, finished } = this.readMessage(await readPacket());\n await handleMessage(message);\n return finished || W();\n };\n return (this.isInitiator ? W() : R());\n }\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nexport type KeyTransferToken = 'e' | 's';\nexport type KeyMixToken = 'ee' | 'es' | 'se' | 'ss' | 'psk';\nexport type Token = KeyTransferToken | KeyMixToken;\nexport type PreMessage = ['e'] | ['s'] | ['e', 's'] | [];\n\nexport interface HandshakePattern {\n name: string; // e.g. \"NNpsk2\"\n baseName: string; // e.g. \"NN\"\n messages: Token[][];\n initiatorPreMessage: PreMessage;\n responderPreMessage: PreMessage;\n}\n\nexport const PATTERNS: { [key: string]: HandshakePattern } = {};\n\nfunction _p(\n name: string,\n messages: Token[][],\n initiatorPreMessage: PreMessage,\n responderPreMessage: PreMessage,\n) {\n const pat = { name, baseName: name, messages, initiatorPreMessage, responderPreMessage };\n PATTERNS[pat.name] = pat;\n}\n\n_p(\"I1K1\", [[\"e\",\"s\"],[\"e\",\"ee\",\"es\"],[\"se\"]], [], [\"s\"]);\n_p(\"I1K\", [[\"e\",\"es\",\"s\"],[\"e\",\"ee\"],[\"se\"]], [], [\"s\"]);\n_p(\"I1N\", [[\"e\",\"s\"],[\"e\",\"ee\"],[\"se\"]], [], []);\n_p(\"I1X1\", [[\"e\",\"s\"],[\"e\",\"ee\",\"s\"],[\"se\",\"es\"]], [], []);\n_p(\"I1X\", [[\"e\",\"s\"],[\"e\",\"ee\",\"s\",\"es\"],[\"se\"]], [], []);\n_p(\"IK1\", [[\"e\",\"s\"],[\"e\",\"ee\",\"se\",\"es\"]], [], [\"s\"]);\n_p(\"IK\", [[\"e\",\"es\",\"s\",\"ss\"],[\"e\",\"ee\",\"se\"]], [], [\"s\"]);\n_p(\"IN\", [[\"e\",\"s\"],[\"e\",\"ee\",\"se\"]], [], []);\n_p(\"IX1\", [[\"e\",\"s\"],[\"e\",\"ee\",\"se\",\"s\"],[\"es\"]], [], []);\n_p(\"IX\", [[\"e\",\"s\"],[\"e\",\"ee\",\"se\",\"s\",\"es\"]], [], []);\n_p(\"K1K1\", [[\"e\"],[\"e\",\"ee\",\"es\"],[\"se\"]], [\"s\"], [\"s\"]);\n_p(\"K1K\", [[\"e\",\"es\"],[\"e\",\"ee\"],[\"se\"]], [\"s\"], [\"s\"]);\n_p(\"K1N\", [[\"e\"],[\"e\",\"ee\"],[\"se\"]], [\"s\"], []);\n_p(\"K1X1\", [[\"e\"],[\"e\",\"ee\",\"s\"],[\"se\",\"es\"]], [\"s\"], []);\n_p(\"K1X\", [[\"e\"],[\"e\",\"ee\",\"s\",\"es\"],[\"se\"]], [\"s\"], []);\n_p(\"K\", [[\"e\",\"es\",\"ss\"]], [\"s\"], [\"s\"]);\n_p(\"KK1\", [[\"e\"],[\"e\",\"ee\",\"se\",\"es\"]], [\"s\"], [\"s\"]);\n_p(\"KK\", [[\"e\",\"es\",\"ss\"],[\"e\",\"ee\",\"se\"]], [\"s\"], [\"s\"]);\n_p(\"KN\", [[\"e\"],[\"e\",\"ee\",\"se\"]], [\"s\"], []);\n_p(\"KX1\", [[\"e\"],[\"e\",\"ee\",\"se\",\"s\"],[\"es\"]], [\"s\"], []);\n_p(\"KX\", [[\"e\"],[\"e\",\"ee\",\"se\",\"s\",\"es\"]], [\"s\"], []);\n_p(\"N\", [[\"e\",\"es\"]], [], [\"s\"]);\n_p(\"NK1\", [[\"e\"],[\"e\",\"ee\",\"es\"]], [], [\"s\"]);\n_p(\"NK\", [[\"e\",\"es\"],[\"e\",\"ee\"]], [], [\"s\"]);\n_p(\"NN\", [[\"e\"],[\"e\",\"ee\"]], [], []);\n_p(\"NX1\", [[\"e\"],[\"e\",\"ee\",\"s\"],[\"es\"]], [], []);\n_p(\"NX\", [[\"e\"],[\"e\",\"ee\",\"s\",\"es\"]], [], []);\n_p(\"X1K1\", [[\"e\"],[\"e\",\"ee\",\"es\"],[\"s\"],[\"se\"]], [], [\"s\"]);\n_p(\"X1K\", [[\"e\",\"es\"],[\"e\",\"ee\"],[\"s\"],[\"se\"]], [], [\"s\"]);\n_p(\"X1N\", [[\"e\"],[\"e\",\"ee\"],[\"s\"],[\"se\"]], [], []);\n_p(\"X1X1\", [[\"e\"],[\"e\",\"ee\",\"s\"],[\"es\",\"s\"],[\"se\"]], [], []);\n_p(\"X1X\", [[\"e\"],[\"e\",\"ee\",\"s\",\"es\"],[\"s\"],[\"se\"]], [], []);\n_p(\"X\", [[\"e\",\"es\",\"s\",\"ss\"]], [], [\"s\"]);\n_p(\"XK1\", [[\"e\"],[\"e\",\"ee\",\"es\"],[\"s\",\"se\"]], [], [\"s\"]);\n_p(\"XK\", [[\"e\",\"es\"],[\"e\",\"ee\"],[\"s\",\"se\"]], [], [\"s\"]);\n_p(\"XN\", [[\"e\"],[\"e\",\"ee\"],[\"s\",\"se\"]], [], []);\n_p(\"XX1\", [[\"e\"],[\"e\",\"ee\",\"s\"],[\"es\",\"s\",\"se\"]], [], []);\n_p(\"XX\", [[\"e\"],[\"e\",\"ee\",\"s\",\"es\"],[\"s\",\"se\"]], [], []);\n\nexport function isOneWay(pat: HandshakePattern): boolean {\n return pat.baseName.length === 1;\n}\n\nconst NAME_RE = /^([NKX]|[NKXI]1?[NKX]1?)([a-z][a-z0-9]*(\\+[a-z][a-z0-9]*)*)?$/;\nconst PSK_RE = /^psk([0-9]+)$/;\n\nexport function lookupPattern(name: string): HandshakePattern | null {\n const m = NAME_RE.exec(name);\n if (m === null) return null;\n const modifiers = m[2]?.split('+') ?? [];\n let pat: HandshakePattern | null = PATTERNS[m[1]] ?? null;\n if (!pat) return null;\n modifiers.forEach(m => pat = pat && applyModifier(pat, m));\n return pat && { ... pat, name };\n}\n\nfunction applyModifier(pat: HandshakePattern, mod: string): HandshakePattern | null {\n const m = PSK_RE.exec(mod);\n if (m === null) return null;\n const n = parseInt(m[1], 10);\n const messages = pat.messages;\n return { ... pat, messages: (n === 0\n ? [[\"psk\", ... messages[0]], ... messages.slice(1)]\n : [... messages.slice(0, n-1), [... messages[n-1], \"psk\"], ... messages.slice(n)]) };\n}\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nimport { Algorithms } from './algorithms.js';\nimport { BLAKE2s } from '../hash.js';\nimport { ChaCha20Poly1305_RFC8439 } from '../aead.js';\nimport { X25519 } from '../dh.js';\n\nexport const Noise_25519_ChaChaPoly_BLAKE2s: Algorithms = {\n dh: X25519,\n aead: ChaCha20Poly1305_RFC8439,\n hash: BLAKE2s,\n};\n","/// SPDX-License-Identifier: MIT\n/// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>\n\nexport * from './aead.js';\nexport * as Bytes from './bytes.js';\nexport * from './cipher.js';\nexport * from './dh.js';\nexport * from './hash.js';\nexport * from './hkdf.js';\nexport * from './hmac.js';\nexport * as IO from './io.js';\nexport * from './noise.js';\nexport * from './nonce.js';\nexport * from './random.js';\n\nimport * as chacha20poly1305 from './aead/chacha20poly1305.js';\nimport * as chacha20 from './cipher/chacha20.js';\nimport * as x25519 from './dh/x25519.js';\nimport * as blake2s from './hash/blake2s.js';\nimport * as poly1305 from './hash/poly1305.js';\nimport * as algorithms from './noise/algorithms.js';\nimport * as cipherstate from './noise/cipherstate.js';\nimport * as handshake from './noise/handshake.js';\nimport * as patterns from './noise/patterns.js';\nimport * as profiles from './noise/profiles.js';\nimport * as rekey from './noise/rekey.js';\n\nexport const INTERNALS = {\n aead: {\n chacha20poly1305,\n },\n cipher: {\n chacha20,\n },\n dh: {\n x25519,\n },\n hash: {\n blake2s,\n poly1305,\n },\n noise: {\n algorithms,\n cipherstate,\n handshake,\n patterns,\n profiles,\n rekey,\n },\n};\n"],"mappings":"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","names":["chacha20poly1305_exports","__export","ChaCha20Poly1305_RFC8439","chacha20_exports","__export","ChaCha20","chacha20_block","chacha20_quarter_round","ROTATE","n","bits","s","a","b","c","d","fill_state","state","key","block","nonce","round","serializeNonce","view","nonce0","input","output","initial_counter","messagelength","whole_blocks","remaining_bytes","j","chunk","i","poly1305_exports","__export","Poly1305","_a","key","outlen","t0","t1","t2","t3","t4","t5","t6","t7","input","p","m","mpos","bytes","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","c","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","mac","i","g","mask","f","want","bytes_exports","__export","EMPTY","append","equal","xor","verify","x","y","n","d","i","a","b","len","r","PADDING","pad16","p","unpadded_length","leftover","aead_tag","tag","key","nonce","ciphertext","cipherlength","associated_data","mac_key","Poly1305","ChaCha20","L","Lv","ChaCha20Poly1305_RFC8439","plaintext","messagelength","_encrypt","expected_tag","actual_tag","ok","equal","_decrypt","AuthenticationFailure","_encrypt","plaintext","key","nonce","associated_data","ciphertextAndTag","_decrypt","_randomBytes","x","n","i","__require","crypto","randomBytes","bs","x25519_exports","__export","crypto_scalarmult","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_scalarmult_base","scalarMult","scalarMultBase","gf","_9","_121665","car25519","o","c","i","v","sel25519","p","q","b","t","pack25519","n","m","j","unpack25519","A","a","Z","M","t0","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","z","x","d","e","f","r","x32","x16","X25519","scalarMult","sk","randomBytes","scalarMultBase","kp","pk","blake2s_exports","__export","BLAKE2s","ROTR32","n","bits","B2S_G","v","a","b","c","d","x","y","blake2s_iv","_sigma","sigma","j","_a","key","outlen","keylen","input","p","offset","length","i","output","last","m","makeHKDF","hmac","hkdf","chainingKey","input","numOutputs","tempKey","o1","o2","append","makeHMAC","hash","HMAC_IPAD","HMAC_OPAD","hmac","key0","data","key1","key","append","xor","io_exports","__export","fromBase64","fromHex","toBase64","toHex","bs","s","b","len","result","i","withPadding","r","algorithms_exports","__export","matchPattern","a","protocol_name","m","cipherstate_exports","__export","CipherState","Nonce","_Nonce","lo","hi","extra","oldLo","newLo","rekey_exports","__export","makeRekey","makeRekey","aead","k","Nonce","CipherState","algorithms","key","Nonce","plaintext","associated_data","ciphertext","_a","makeRekey","pieces","ciphertexts","final_len","acc","c","final","offset","p","handshake_exports","__export","Handshake","patterns_exports","__export","PATTERNS","isOneWay","lookupPattern","PATTERNS","_p","name","messages","initiatorPreMessage","responderPreMessage","pat","isOneWay","NAME_RE","PSK_RE","lookupPattern","_a","_b","_c","m","modifiers","applyModifier","__spreadProps","__spreadValues","mod","n","Handshake","algorithms","pattern","role","options","_a","_b","_c","_d","_e","_f","_g","p","lookupPattern","protocolName","CipherState","ckLen","ckSeed","append","EMPTY","t","makeHKDF","makeHMAC","data","input","newCk","k","psk","tempH","c","kI","kR","payload","pieces","packet","ac","offset","take","bs","writePacket","readPacket","handleMessage","_m","produceMessage","W","finished","R","message","profiles_exports","__export","Noise_25519_ChaChaPoly_BLAKE2s","Noise_25519_ChaChaPoly_BLAKE2s","X25519","ChaCha20Poly1305_RFC8439","BLAKE2s","INTERNALS","chacha20poly1305_exports","chacha20_exports","x25519_exports","blake2s_exports","poly1305_exports","algorithms_exports","cipherstate_exports","handshake_exports","patterns_exports","profiles_exports","rekey_exports"]}
@@ -1,2 +1,2 @@
1
- import { AEAD } from '../aead';
1
+ import { AEAD } from '../aead.js';
2
2
  export declare const ChaCha20Poly1305_RFC8439: AEAD;
@@ -1,10 +1,10 @@
1
1
  /// SPDX-License-Identifier: MIT
2
- /// SPDX-FileCopyrightText: Copyright © 2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
3
  // RFC-8439 AEAD construction.
4
- import { _encrypt, _decrypt } from '../aead';
5
- import { ChaCha20 } from '../cipher/chacha20';
6
- import { Poly1305 } from '../hash/poly1305';
7
- import * as Bytes from '../bytes';
4
+ import { _encrypt, _decrypt } from '../aead.js';
5
+ import { ChaCha20 } from '../cipher/chacha20.js';
6
+ import { Poly1305 } from '../hash/poly1305.js';
7
+ import * as Bytes from '../bytes.js';
8
8
  const PADDING = new Uint8Array(16);
9
9
  function pad16(p, unpadded_length) {
10
10
  const leftover = unpadded_length & 15;
@@ -1 +1 @@
1
- {"version":3,"file":"chacha20poly1305.js","sourceRoot":"","sources":["../../src/aead/chacha20poly1305.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2FAA2F;AAE3F,8BAA8B;AAE9B,OAAO,EAAQ,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAGlC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAEnC,SAAS,KAAK,CAAC,CAAgB,EAAE,eAAuB;IACpD,MAAM,QAAQ,GAAG,eAAe,GAAG,EAAE,CAAC;IACtC,IAAI,QAAQ,KAAK,CAAC;QAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,QAAQ,CAAC,GAAe,EACf,GAAa,EACb,KAAY,EACZ,UAAsB,EACtB,YAAoB,EACpB,eAA4B;IAE1C,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEhC,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE;QAC5B,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QACzD,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;KACxC;IAED,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IACtC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAEvB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE;QAC5B,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KACrD;IACD,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAE7B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAS;IAC1C,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IAEZ,gBAAgB,CAAC,SAAqB,EACrB,UAAsB,EACtB,aAAqB,EACrB,GAAe,EACf,GAAa,EACb,KAAY,EACZ,eAA4B;QACzC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QACzE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,EAAE,QAAQ;IAEjB,gBAAgB,CAAC,SAAqB,EACrB,UAAsB,EACtB,aAAqB,EACrB,YAAwB,EACxB,GAAa,EACb,KAAY,EACZ,eAA4B;QACzC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,EAAE;YAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,EAAE,QAAQ;CACpB,CAAC"}
1
+ {"version":3,"file":"chacha20poly1305.js","sourceRoot":"","sources":["../../src/aead/chacha20poly1305.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAEhG,8BAA8B;AAE9B,OAAO,EAAQ,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AAGrC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAEnC,SAAS,KAAK,CAAC,CAAgB,EAAE,eAAuB;IACpD,MAAM,QAAQ,GAAG,eAAe,GAAG,EAAE,CAAC;IACtC,IAAI,QAAQ,KAAK,CAAC;QAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,QAAQ,CAAC,GAAe,EACf,GAAa,EACb,KAAY,EACZ,UAAsB,EACtB,YAAoB,EACpB,eAA4B;IAE1C,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEhC,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE,CAAC;QAC7B,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QACzD,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IACtC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAEvB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAE7B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAS;IAC1C,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IAEZ,gBAAgB,CAAC,SAAqB,EACrB,UAAsB,EACtB,aAAqB,EACrB,GAAe,EACf,GAAa,EACb,KAAY,EACZ,eAA4B;QACzC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QACzE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,EAAE,QAAQ;IAEjB,gBAAgB,CAAC,SAAqB,EACrB,UAAsB,EACtB,aAAqB,EACrB,YAAwB,EACxB,GAAa,EACb,KAAY,EACZ,eAA4B;QACzC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,EAAE;YAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,EAAE,QAAQ;CACpB,CAAC"}
package/lib/aead.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Nonce } from './nonce';
1
+ import { Nonce } from './nonce.js';
2
2
  export declare class AuthenticationFailure extends Error {
3
3
  }
4
4
  export interface AEAD {
@@ -13,4 +13,4 @@ export interface AEAD {
13
13
  }
14
14
  export declare function _encrypt(this: AEAD, plaintext: Uint8Array, key: DataView, nonce: Nonce, associated_data?: Uint8Array): Uint8Array;
15
15
  export declare function _decrypt(this: AEAD, ciphertextAndTag: Uint8Array, key: DataView, nonce: Nonce, associated_data?: Uint8Array): Uint8Array;
16
- export { ChaCha20Poly1305_RFC8439 } from './aead/chacha20poly1305';
16
+ export { ChaCha20Poly1305_RFC8439 } from './aead/chacha20poly1305.js';
package/lib/aead.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /// SPDX-License-Identifier: MIT
2
- /// SPDX-FileCopyrightText: Copyright © 2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
3
  export class AuthenticationFailure extends Error {
4
4
  }
5
5
  export function _encrypt(plaintext, key, nonce, associated_data) {
@@ -14,5 +14,5 @@ export function _decrypt(ciphertextAndTag, key, nonce, associated_data) {
14
14
  }
15
15
  return plaintext;
16
16
  }
17
- export { ChaCha20Poly1305_RFC8439 } from './aead/chacha20poly1305';
17
+ export { ChaCha20Poly1305_RFC8439 } from './aead/chacha20poly1305.js';
18
18
  //# sourceMappingURL=aead.js.map
package/lib/aead.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"aead.js","sourceRoot":"","sources":["../src/aead.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2FAA2F;AAI3F,MAAM,OAAO,qBAAsB,SAAQ,KAAK;CAAG;AAmCnD,MAAM,UAAU,QAAQ,CACC,SAAqB,EACrB,GAAa,EACb,KAAY,EACZ,eAA4B;IAEjD,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,gBAAgB,CAAC,SAAS,EACT,gBAAgB,EAChB,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAC/C,GAAG,EACH,KAAK,EACL,eAAe,CAAC,CAAC;IACvC,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,QAAQ,CACC,gBAA4B,EAC5B,GAAa,EACb,KAAY,EACZ,eAA4B;IAEjD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EACT,gBAAgB,EAChB,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAC/C,GAAG,EACH,KAAK,EACL,eAAe,CAAC,EAAE;QACzC,MAAM,IAAI,qBAAqB,CAAC,4BAA4B,CAAC,CAAC;KACjE;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"aead.js","sourceRoot":"","sources":["../src/aead.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAIhG,MAAM,OAAO,qBAAsB,SAAQ,KAAK;CAAG;AAmCnD,MAAM,UAAU,QAAQ,CACC,SAAqB,EACrB,GAAa,EACb,KAAY,EACZ,eAA4B;IAEjD,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,gBAAgB,CAAC,SAAS,EACT,gBAAgB,EAChB,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAC/C,GAAG,EACH,KAAK,EACL,eAAe,CAAC,CAAC;IACvC,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,QAAQ,CACC,gBAA4B,EAC5B,GAAa,EACb,KAAY,EACZ,eAA4B;IAEjD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EACT,gBAAgB,EAChB,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAC/C,GAAG,EACH,KAAK,EACL,eAAe,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,qBAAqB,CAAC,4BAA4B,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
package/lib/bytes.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export declare function equal(x: Uint8Array, y: Uint8Array, n: number): boolean;
2
2
  export declare function xor(a: Uint8Array, b: Uint8Array): Uint8Array;
3
3
  export declare function append(a: Uint8Array, b: Uint8Array): Uint8Array;
4
- export declare const EMPTY: Uint8Array;
4
+ export declare const EMPTY: Uint8Array<ArrayBuffer>;
package/lib/bytes.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /// SPDX-License-Identifier: MIT
2
- /// SPDX-FileCopyrightText: Copyright © 2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
3
  // `verify` from nacl-fast.js
4
4
  function verify(x, y, n) {
5
5
  let d = 0;
package/lib/bytes.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../src/bytes.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2FAA2F;AAE3F,6BAA6B;AAC7B,SAAS,MAAM,CAAC,CAAa,EAAE,CAAa,EAAE,CAAS;IACnD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAa,EAAE,CAAa,EAAE,CAAS;IACzD,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAa,EAAE,CAAa;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC;AACb,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAa,EAAE,CAAa;IAC/C,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../src/bytes.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAEhG,6BAA6B;AAC7B,SAAS,MAAM,CAAC,CAAa,EAAE,CAAa,EAAE,CAAS;IACnD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAa,EAAE,CAAa,EAAE,CAAS;IACzD,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAa,EAAE,CAAa;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC;AACb,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAa,EAAE,CAAa;IAC/C,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { StreamCipher } from '../cipher';
1
+ import { StreamCipher } from '../cipher.js';
2
2
  export declare function chacha20_quarter_round(s: Uint32Array, a: number, b: number, c: number, d: number): void;
3
3
  export declare function chacha20_block(key: DataView, block: number, nonce: DataView): Uint32Array;
4
4
  export declare const ChaCha20: StreamCipher;
@@ -1,5 +1,5 @@
1
1
  /// SPDX-License-Identifier: MIT
2
- /// SPDX-FileCopyrightText: Copyright © 2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
3
  function ROTATE(n, bits) {
4
4
  return (n << bits) | (n >>> (32 - bits));
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chacha20.js","sourceRoot":"","sources":["../../src/cipher/chacha20.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chacha20.js","sourceRoot":"","sources":["../../src/cipher/chacha20.ts"],"names":[],"mappings":"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"}
package/lib/cipher.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Nonce } from './nonce';
1
+ import { Nonce } from './nonce.js';
2
2
  export interface StreamCipher {
3
3
  readonly NAME: string;
4
4
  readonly KEYBYTES: number;
@@ -6,4 +6,4 @@ export interface StreamCipher {
6
6
  readonly BLOCKBYTES: number;
7
7
  stream_xor(key: DataView, nonce: Nonce, input: Uint8Array, output: Uint8Array, initial_counter?: number, messagelength?: number): void;
8
8
  }
9
- export { ChaCha20 } from './cipher/chacha20';
9
+ export { ChaCha20 } from './cipher/chacha20.js';
package/lib/cipher.js CHANGED
@@ -1,4 +1,4 @@
1
1
  /// SPDX-License-Identifier: MIT
2
- /// SPDX-FileCopyrightText: Copyright © 2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
- export { ChaCha20 } from './cipher/chacha20';
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ export { ChaCha20 } from './cipher/chacha20.js';
4
4
  //# sourceMappingURL=cipher.js.map
package/lib/cipher.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cipher.js","sourceRoot":"","sources":["../src/cipher.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2FAA2F;AAkB3F,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"cipher.js","sourceRoot":"","sources":["../src/cipher.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAkBhG,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
package/lib/dh/x25519.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /// SPDX-License-Identifier: MIT
2
- /// SPDX-FileCopyrightText: Copyright © 2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
3
  // TypeScript port of the X25519 code from nacl-fast.js from tweetnacl.
4
4
  //
5
5
  // The comment in that file reads as follows: