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 @@
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/noise/patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Algorithms } from './algorithms.js';
2
+ export declare const Noise_25519_ChaChaPoly_BLAKE2s: Algorithms;
@@ -0,0 +1,11 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ import { BLAKE2s } from '../hash.js';
4
+ import { ChaCha20Poly1305_RFC8439 } from '../aead.js';
5
+ import { X25519 } from '../dh.js';
6
+ export const Noise_25519_ChaChaPoly_BLAKE2s = {
7
+ dh: X25519,
8
+ aead: ChaCha20Poly1305_RFC8439,
9
+ hash: BLAKE2s,
10
+ };
11
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/noise/profiles.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAGhG,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,CAAC,MAAM,8BAA8B,GAAe;IACtD,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE,OAAO;CAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { AEAD } from '../aead.js';
2
+ export type Rekey = (k: DataView) => DataView;
3
+ export declare function makeRekey(aead: AEAD): Rekey;
@@ -0,0 +1,9 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ import { Nonce } from '../nonce.js';
4
+ export function makeRekey(aead) {
5
+ return (k) => {
6
+ return new DataView(aead.encrypt(new Uint8Array(32), k, Nonce.MAX).buffer);
7
+ };
8
+ }
9
+ //# sourceMappingURL=rekey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rekey.js","sourceRoot":"","sources":["../../src/noise/rekey.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAGhG,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,MAAM,UAAU,SAAS,CAAC,IAAU;IAChC,OAAO,CAAC,CAAW,EAAY,EAAE;QAC7B,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC,CAAC;AACN,CAAC"}
package/lib/noise.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export { Algorithms, matchPattern } from './noise/algorithms';
2
+ export { CipherState } from './noise/cipherstate';
3
+ export { Role, HandshakeOptions, TransportState, Handshake } from './noise/handshake';
4
+ export { HandshakePattern, KeyMixToken, KeyTransferToken, PATTERNS, PreMessage, Token, isOneWay, lookupPattern, } from './noise/patterns';
5
+ export { Noise_25519_ChaChaPoly_BLAKE2s } from './noise/profiles';
6
+ export { Rekey } from './noise/rekey';
package/lib/noise.js ADDED
@@ -0,0 +1,8 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ export { matchPattern } from './noise/algorithms';
4
+ export { CipherState } from './noise/cipherstate';
5
+ export { Handshake } from './noise/handshake';
6
+ export { PATTERNS, isOneWay, lookupPattern, } from './noise/patterns';
7
+ export { Noise_25519_ChaChaPoly_BLAKE2s } from './noise/profiles';
8
+ //# sourceMappingURL=noise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise.js","sourceRoot":"","sources":["../src/noise.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAEhG,OAAO,EAAc,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAA0C,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAIH,QAAQ,EAGR,QAAQ,EACR,aAAa,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC"}
package/lib/nonce.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export declare class Nonce {
2
+ lo: number;
3
+ hi: number;
4
+ extra: number;
5
+ constructor(lo?: number, hi?: number, extra?: number);
6
+ increment(): void;
7
+ reset(lo?: number, hi?: number, extra?: number): void;
8
+ static get MAX(): Nonce;
9
+ }
package/lib/nonce.js ADDED
@@ -0,0 +1,25 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ export class Nonce {
4
+ constructor(lo = 0, hi = 0, extra = 0) {
5
+ this.lo = lo;
6
+ this.hi = hi;
7
+ this.extra = extra;
8
+ }
9
+ increment() {
10
+ const oldLo = this.lo;
11
+ const newLo = (oldLo + 1) | 0;
12
+ this.lo = newLo;
13
+ if (newLo < oldLo)
14
+ this.hi = (this.hi + 1) | 0;
15
+ }
16
+ reset(lo = 0, hi = 0, extra = 0) {
17
+ this.lo = lo;
18
+ this.hi = hi;
19
+ this.extra = extra;
20
+ }
21
+ static get MAX() {
22
+ return new Nonce(0xffffffff, 0xffffffff);
23
+ }
24
+ }
25
+ //# sourceMappingURL=nonce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce.js","sourceRoot":"","sources":["../src/nonce.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAEhG,MAAM,OAAO,KAAK;IACd,YAAmB,KAAK,CAAC,EAAS,KAAK,CAAC,EAAS,QAAQ,CAAC;QAAvC,OAAE,GAAF,EAAE,CAAI;QAAS,OAAE,GAAF,EAAE,CAAI;QAAS,UAAK,GAAL,KAAK,CAAI;IAAG,CAAC;IAE9D,SAAS;QACL,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;QAChB,IAAI,KAAK,GAAG,KAAK;YAAE,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;QAC3B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,GAAG;QACV,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export declare const _randomBytes: (out: Uint8Array, n: number) => void;
2
+ export declare function randomBytes(n: number): Uint8Array;
package/lib/random.js ADDED
@@ -0,0 +1,34 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+ // TypeScript port of the randomness-generation code from nacl-fast.js from tweetnacl.
4
+ //
5
+ // The comment in that file reads as follows:
6
+ //
7
+ // // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.
8
+ // // Public domain.
9
+ // //
10
+ // // Implementation derived from TweetNaCl version 20140427.
11
+ // // See for details: http://tweetnacl.cr.yp.to/
12
+ export const _randomBytes = (() => {
13
+ if (crypto && crypto.getRandomValues) {
14
+ const QUOTA = 65536;
15
+ return (x, n) => {
16
+ for (let i = 0; i < n; i += QUOTA) {
17
+ crypto.getRandomValues(x.subarray(i, i + Math.min(n - i, QUOTA)));
18
+ }
19
+ };
20
+ }
21
+ else if (typeof require !== 'undefined') {
22
+ const crypto = require('crypto');
23
+ if (crypto && crypto.randomBytes) {
24
+ return (x, n) => x.set(crypto.randomBytes(n));
25
+ }
26
+ }
27
+ throw new Error("No usable randomness source found");
28
+ })();
29
+ export function randomBytes(n) {
30
+ const bs = new Uint8Array(n);
31
+ _randomBytes(bs, n);
32
+ return bs;
33
+ }
34
+ //# sourceMappingURL=random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.js","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gGAAgG;AAEhG,sFAAsF;AACtF,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,0DAA0D;AAC1D,oBAAoB;AACpB,KAAK;AACL,6DAA6D;AAC7D,iDAAiD;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAyC,CAAC,GAAG,EAAE;IACpE,IAAI,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,OAAO,CAAC,CAAa,EAAE,CAAS,EAAE,EAAE;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;gBAChC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;QACL,CAAC,CAAC;IACN,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAa,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACzD,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,UAAU,WAAW,CAAC,CAAS;IACjC,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "name": "salty-crypto",
3
- "version": "0.3.0",
3
+ "version": "1.0.0-rc.0",
4
4
  "description": "Noise Protocol Framework, plus X25519/ChaCha20Poly1305/BLAKE2s code, for browser and node.js",
5
5
  "author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
6
6
  "homepage": "https://github.com/tonyg/typescript-salty-crypto",
7
7
  "license": "MIT",
8
+
8
9
  "main": "dist/salty-crypto.js",
10
+ "module": "dist/salty-crypto.mjs",
11
+ "browser": "dist/salty-crypto.global.js",
9
12
  "types": "dist/salty-crypto.d.ts",
10
- "module": "lib/index.js",
13
+ "exports": {
14
+ "import": "./dist/salty-crypto.mjs",
15
+ "require": "./dist/salty-crypto.js"
16
+ },
17
+
11
18
  "publishConfig": {
12
19
  "access": "public"
13
20
  },
@@ -15,31 +22,40 @@
15
22
  "type": "git",
16
23
  "url": "https://github.com/tonyg/typescript-salty-crypto"
17
24
  },
25
+
26
+ "bin": {
27
+ "salty-crypto-keygen-x25519": "./bin/salty-crypto-keygen-x25519"
28
+ },
29
+
18
30
  "scripts": {
19
- "prepare": "yarn clean && yarn compile && yarn rollup",
31
+ "prepare": "yarn clean && yarn compile && yarn bundle",
20
32
  "compile": "yarn tsc",
21
33
  "compile:watch": "yarn compile -w",
22
- "rollup": "rollup -c",
23
- "rollup:watch": "yarn rollup -w",
24
- "test-compile": "yarn tsc -p test/tsconfig.json",
25
- "test-compile:watch": "yarn test-compile -w",
26
- "test": "node -r esm lib-test/harness.js",
27
- "test:watch": "mkdir -p lib-test && cd lib-test && inotifytest yarn test",
28
- "clean": "rm -rf lib/ lib-test/ dist/",
34
+ "bundle": "tsup",
35
+ "bundle:watch": "tsup --watch",
36
+ "test": "vitest --no-watch",
37
+ "test:watch": "vitest --watch",
38
+ "clean": "rm -rf lib/ dist/",
39
+ "veryclean": "yarn clean && rm -rf node_modules/",
29
40
  "fixcopyright": "fixcopyright.rkt --preset-typescript --file-pattern 'src/**.ts' MIT && fixcopyright.rkt --preset-typescript --file-pattern 'test/**.ts' MIT"
30
41
  },
31
- "bin": {
32
- "salty-crypto-keygen-x25519": "./bin/salty-crypto-keygen-x25519"
33
- },
42
+
34
43
  "devDependencies": {
35
- "@rollup/plugin-terser": "^0.4.0",
36
- "@types/glob": "^8.0.1",
37
- "esm": "^3.2.25",
38
- "expect": "^29.4.0",
39
- "glob": "^8.1.0",
40
- "rollup": "^3.10.1",
41
- "rollup-plugin-dts": "^5.1.1",
42
- "typescript": "4.9"
44
+ "@types/node": "^18",
45
+ "glob": "^11.0.3",
46
+ "tsup": "^8.5.0",
47
+ "typescript": "^5.8.3",
48
+ "vitest": "^3.2.4"
43
49
  },
44
- "dependencies": {}
50
+ "dependencies": {},
51
+ "files": [
52
+ "bin",
53
+ "browser-demo.html",
54
+ "dist",
55
+ "lib",
56
+ "src",
57
+ "test",
58
+ "tsconfig.json",
59
+ "tsup.config.ts"
60
+ ]
45
61
  }
package/src/.DS_Store ADDED
Binary file
@@ -1,15 +1,15 @@
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
 
4
4
  // RFC-8439 AEAD construction.
5
5
 
6
- import { AEAD, _encrypt, _decrypt } from '../aead';
7
- import { Nonce } from '../nonce';
6
+ import { AEAD, _encrypt, _decrypt } from '../aead.js';
7
+ import { Nonce } from '../nonce.js';
8
8
 
9
- import { ChaCha20 } from '../cipher/chacha20';
10
- import { Poly1305 } from '../hash/poly1305';
11
- import * as Bytes from '../bytes';
12
- import { HashAlgorithm } from '../hash';
9
+ import { ChaCha20 } from '../cipher/chacha20.js';
10
+ import { Poly1305 } from '../hash/poly1305.js';
11
+ import * as Bytes from '../bytes.js';
12
+ import { HashAlgorithm } from '../hash.js';
13
13
 
14
14
  const PADDING = new Uint8Array(16);
15
15
 
package/src/aead.ts CHANGED
@@ -1,7 +1,7 @@
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
 
4
- import { Nonce } from './nonce';
4
+ import { Nonce } from './nonce.js';
5
5
 
6
6
  export class AuthenticationFailure extends Error {}
7
7
 
@@ -74,4 +74,4 @@ export function _decrypt(this: AEAD,
74
74
  return plaintext;
75
75
  }
76
76
 
77
- export { ChaCha20Poly1305_RFC8439 } from './aead/chacha20poly1305';
77
+ export { ChaCha20Poly1305_RFC8439 } from './aead/chacha20poly1305.js';
package/src/bytes.ts 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
 
4
4
  // `verify` from nacl-fast.js
5
5
  function verify(x: Uint8Array, y: Uint8Array, n: number): number {
@@ -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
 
4
4
  // RFC-8439 ChaCha20.
5
5
 
6
- import { StreamCipher } from '../cipher';
7
- import { Nonce } from '../nonce';
6
+ import { StreamCipher } from '../cipher.js';
7
+ import { Nonce } from '../nonce.js';
8
8
 
9
9
  function ROTATE(n: number, bits: number): number {
10
10
  return (n << bits) | (n >>> (32 - bits));
package/src/cipher.ts CHANGED
@@ -1,7 +1,7 @@
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
 
4
- import { Nonce } from './nonce';
4
+ import { Nonce } from './nonce.js';
5
5
 
6
6
  export interface StreamCipher {
7
7
  readonly NAME: string;
@@ -17,4 +17,4 @@ export interface StreamCipher {
17
17
  messagelength?: number): void;
18
18
  }
19
19
 
20
- export { ChaCha20 } from './cipher/chacha20';
20
+ export { ChaCha20 } from './cipher/chacha20.js';
package/src/dh/x25519.ts 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
 
4
4
  // TypeScript port of the X25519 code from nacl-fast.js from tweetnacl.
5
5
  //
package/src/dh.ts CHANGED
@@ -1,8 +1,8 @@
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
 
4
- import { randomBytes } from "./random";
5
- import { scalarMult, scalarMultBase } from "./dh/x25519";
4
+ import { randomBytes } from "./random.js";
5
+ import { scalarMult, scalarMultBase } from "./dh/x25519.js";
6
6
 
7
7
  export type DHKeyPair = { public: Uint8Array, secret: Uint8Array };
8
8
 
@@ -1,9 +1,9 @@
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
 
4
4
  // RFC 7693 BLAKE2s, ported from the C code therein.
5
5
 
6
- import type { Hash, HashAlgorithm } from '../hash';
6
+ import type { Hash, HashAlgorithm } from '../hash.js';
7
7
 
8
8
  function ROTR32(n: number, bits: number): number {
9
9
  return (n >>> bits) | (n << (32 - bits));
@@ -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
 
4
4
  // TypeScript port of the "poly1305" class from nacl-fast.js from tweetnacl.
5
5
  //
@@ -9,7 +9,7 @@
9
9
  // * https://github.com/floodyberry/poly1305-donna
10
10
  // */
11
11
 
12
- import type { Hash, HashAlgorithm } from '../hash';
12
+ import type { Hash, HashAlgorithm } from '../hash.js';
13
13
 
14
14
  export const Poly1305 = (class Poly1305 implements HashAlgorithm {
15
15
  static readonly NAME = "Poly1305";
package/src/hash.ts 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
 
4
4
  export interface Hash {
5
5
  readonly NAME: string;
@@ -17,5 +17,5 @@ export interface HashAlgorithm {
17
17
  final(output?: Uint8Array): Uint8Array;
18
18
  }
19
19
 
20
- export { BLAKE2s } from './hash/blake2s';
21
- export { Poly1305 } from './hash/poly1305';
20
+ export { BLAKE2s } from './hash/blake2s.js';
21
+ export { Poly1305 } from './hash/poly1305.js';
package/src/hkdf.ts CHANGED
@@ -1,8 +1,8 @@
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
 
4
- import { HMAC } from './hmac';
5
- import * as Bytes from './bytes';
4
+ import { HMAC } from './hmac.js';
5
+ import * as Bytes from './bytes.js';
6
6
 
7
7
  export type HKDF = {
8
8
  (chainingKey: Uint8Array, input: Uint8Array, numOutputs: 2): [Uint8Array, Uint8Array];
package/src/hmac.ts CHANGED
@@ -1,8 +1,8 @@
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
 
4
- import { Hash } from './hash';
5
- import * as Bytes from './bytes';
4
+ import { Hash } from './hash.js';
5
+ import * as Bytes from './bytes.js';
6
6
 
7
7
  export type HMAC = {
8
8
  (key: Uint8Array, data: Uint8Array): Uint8Array;
package/src/index.ts CHANGED
@@ -1,29 +1,29 @@
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
 
4
- export * from './aead';
5
- export * as Bytes from './bytes';
6
- export * from './cipher';
7
- export * from './dh';
8
- export * from './hash';
9
- export * from './hkdf';
10
- export * from './hmac';
11
- export * as IO from './io';
12
- export * from './noise';
13
- export * from './nonce';
14
- export * from './random';
4
+ export * from './aead.js';
5
+ export * as Bytes from './bytes.js';
6
+ export * from './cipher.js';
7
+ export * from './dh.js';
8
+ export * from './hash.js';
9
+ export * from './hkdf.js';
10
+ export * from './hmac.js';
11
+ export * as IO from './io.js';
12
+ export * from './noise.js';
13
+ export * from './nonce.js';
14
+ export * from './random.js';
15
15
 
16
- import * as chacha20poly1305 from './aead/chacha20poly1305';
17
- import * as chacha20 from './cipher/chacha20';
18
- import * as x25519 from './dh/x25519';
19
- import * as blake2s from './hash/blake2s';
20
- import * as poly1305 from './hash/poly1305';
21
- import * as algorithms from './noise/algorithms';
22
- import * as cipherstate from './noise/cipherstate';
23
- import * as handshake from './noise/handshake';
24
- import * as patterns from './noise/patterns';
25
- import * as profiles from './noise/profiles';
26
- import * as rekey from './noise/rekey';
16
+ import * as chacha20poly1305 from './aead/chacha20poly1305.js';
17
+ import * as chacha20 from './cipher/chacha20.js';
18
+ import * as x25519 from './dh/x25519.js';
19
+ import * as blake2s from './hash/blake2s.js';
20
+ import * as poly1305 from './hash/poly1305.js';
21
+ import * as algorithms from './noise/algorithms.js';
22
+ import * as cipherstate from './noise/cipherstate.js';
23
+ import * as handshake from './noise/handshake.js';
24
+ import * as patterns from './noise/patterns.js';
25
+ import * as profiles from './noise/profiles.js';
26
+ import * as rekey from './noise/rekey.js';
27
27
 
28
28
  export const INTERNALS = {
29
29
  aead: {
package/src/io.ts CHANGED
@@ -1,3 +1,6 @@
1
+ /// SPDX-License-Identifier: MIT
2
+ /// SPDX-FileCopyrightText: Copyright © 2023-2025 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
3
+
1
4
  export function toHex(bs: Uint8Array): string {
2
5
  let s = '';
3
6
  bs.forEach(b => {
@@ -1,13 +1,13 @@
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
 
4
- import { AEAD } from '../aead';
5
- import { Hash } from '../hash';
6
- import { DH } from '../dh';
7
- import { HMAC } from '../hmac';
8
- import { HKDF } from '../hkdf';
4
+ import { AEAD } from '../aead.js';
5
+ import { Hash } from '../hash.js';
6
+ import { DH } from '../dh.js';
7
+ import { HMAC } from '../hmac.js';
8
+ import { HKDF } from '../hkdf.js';
9
9
 
10
- import { Rekey } from './rekey';
10
+ import { Rekey } from './rekey.js';
11
11
 
12
12
  export interface Algorithms {
13
13
  dh: DH,
@@ -1,9 +1,9 @@
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
 
4
- import { Nonce } from '../nonce';
5
- import { makeRekey } from './rekey';
6
- import { Algorithms } from './algorithms';
4
+ import { Nonce } from '../nonce.js';
5
+ import { makeRekey } from './rekey.js';
6
+ import { Algorithms } from './algorithms.js';
7
7
 
8
8
  export class CipherState {
9
9
  view: DataView | null = null;
@@ -1,14 +1,14 @@
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
 
4
- import { DHKeyPair } from '../dh';
5
- import * as Bytes from '../bytes';
4
+ import { DHKeyPair } from '../dh.js';
5
+ import * as Bytes from '../bytes.js';
6
6
 
7
- import { Algorithms } from './algorithms';
8
- import { CipherState } from './cipherstate';
9
- import { HandshakePattern, KeyMixToken, lookupPattern, Token } from './patterns';
10
- import { HKDF, makeHKDF } from '../hkdf';
11
- import { makeHMAC } from '../hmac';
7
+ import { Algorithms } from './algorithms.js';
8
+ import { CipherState } from './cipherstate.js';
9
+ import { HandshakePattern, KeyMixToken, lookupPattern, Token } from './patterns.js';
10
+ import { HKDF, makeHKDF } from '../hkdf.js';
11
+ import { makeHMAC } from '../hmac.js';
12
12
 
13
13
  export type Role = 'initiator' | 'responder';
14
14
 
@@ -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
 
4
4
  export type KeyTransferToken = 'e' | 's';
5
5
  export type KeyMixToken = 'ee' | 'es' | 'se' | 'ss' | 'psk';
@@ -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
 
4
- import { Algorithms } from './algorithms';
5
- import { BLAKE2s } from '../hash';
6
- import { ChaCha20Poly1305_RFC8439 } from '../aead';
7
- import { X25519 } from '../dh';
4
+ import { Algorithms } from './algorithms.js';
5
+ import { BLAKE2s } from '../hash.js';
6
+ import { ChaCha20Poly1305_RFC8439 } from '../aead.js';
7
+ import { X25519 } from '../dh.js';
8
8
 
9
9
  export const Noise_25519_ChaChaPoly_BLAKE2s: Algorithms = {
10
10
  dh: X25519,
@@ -1,8 +1,8 @@
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
 
4
- import { AEAD } from '../aead';
5
- import { Nonce } from '../nonce';
4
+ import { AEAD } from '../aead.js';
5
+ import { Nonce } from '../nonce.js';
6
6
 
7
7
  export type Rekey = (k: DataView) => DataView;
8
8
 
package/src/noise.ts 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
 
4
4
  export { Algorithms, matchPattern } from './noise/algorithms';
5
5
  export { CipherState } from './noise/cipherstate';
package/src/nonce.ts 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
 
4
4
  export class Nonce {
5
5
  constructor(public lo = 0, public hi = 0, public extra = 0) {}