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.
- package/README.md +3 -3
- package/browser-demo.html +1 -1
- package/dist/salty-crypto.d.mts +348 -0
- package/dist/salty-crypto.d.ts +36 -87
- package/dist/salty-crypto.global.js +2 -0
- package/dist/salty-crypto.global.js.map +1 -0
- package/dist/salty-crypto.js +2 -1
- package/dist/salty-crypto.js.map +1 -0
- package/dist/salty-crypto.mjs +2 -0
- package/dist/salty-crypto.mjs.map +1 -0
- package/lib/aead/chacha20poly1305.d.ts +2 -0
- package/lib/aead/chacha20poly1305.js +53 -0
- package/lib/aead/chacha20poly1305.js.map +1 -0
- package/lib/aead.d.ts +16 -0
- package/lib/aead.js +18 -0
- package/lib/aead.js.map +1 -0
- package/lib/bytes.d.ts +4 -0
- package/lib/bytes.js +27 -0
- package/lib/bytes.js.map +1 -0
- package/lib/cipher/chacha20.d.ts +4 -0
- package/lib/cipher/chacha20.js +84 -0
- package/lib/cipher/chacha20.js.map +1 -0
- package/lib/cipher.d.ts +9 -0
- package/lib/cipher.js +4 -0
- package/lib/cipher.js.map +1 -0
- package/lib/dh/x25519.d.ts +10 -0
- package/lib/dh/x25519.js +624 -0
- package/lib/dh/x25519.js.map +1 -0
- package/lib/dh.d.ts +11 -0
- package/lib/dh.js +17 -0
- package/lib/dh.js.map +1 -0
- package/lib/hash/blake2s.d.ts +18 -0
- package/lib/hash/blake2s.js +120 -0
- package/lib/hash/blake2s.js.map +1 -0
- package/lib/hash/poly1305.d.ts +18 -0
- package/lib/hash/poly1305.js +376 -0
- package/lib/hash/poly1305.js.map +1 -0
- package/lib/hash.d.ts +14 -0
- package/lib/hash.js +5 -0
- package/lib/hash.js.map +1 -0
- package/lib/hkdf.d.ts +6 -0
- package/lib/hkdf.js +17 -0
- package/lib/hkdf.js.map +1 -0
- package/lib/hmac.d.ts +6 -0
- package/lib/hmac.js +17 -0
- package/lib/hmac.js.map +1 -0
- package/lib/index.d.ts +45 -0
- package/lib/index.js +48 -0
- package/lib/index.js.map +1 -0
- package/lib/io.d.ts +4 -0
- package/lib/io.js +37 -0
- package/lib/io.js.map +1 -0
- package/lib/noise/algorithms.d.ts +15 -0
- package/lib/noise/algorithms.js +10 -0
- package/lib/noise/algorithms.js.map +1 -0
- package/lib/noise/cipherstate.d.ts +14 -0
- package/lib/noise/cipherstate.js +62 -0
- package/lib/noise/cipherstate.js.map +1 -0
- package/lib/noise/handshake.d.ts +52 -0
- package/lib/noise/handshake.js +191 -0
- package/lib/noise/handshake.js.map +1 -0
- package/lib/noise/patterns.d.ts +16 -0
- package/lib/noise/patterns.js +73 -0
- package/lib/noise/patterns.js.map +1 -0
- package/lib/noise/profiles.d.ts +2 -0
- package/lib/noise/profiles.js +11 -0
- package/lib/noise/profiles.js.map +1 -0
- package/lib/noise/rekey.d.ts +3 -0
- package/lib/noise/rekey.js +9 -0
- package/lib/noise/rekey.js.map +1 -0
- package/lib/noise.d.ts +6 -0
- package/lib/noise.js +8 -0
- package/lib/noise.js.map +1 -0
- package/lib/nonce.d.ts +9 -0
- package/lib/nonce.js +25 -0
- package/lib/nonce.js.map +1 -0
- package/lib/random.d.ts +2 -0
- package/lib/random.js +34 -0
- package/lib/random.js.map +1 -0
- package/package.json +38 -22
- package/src/.DS_Store +0 -0
- package/src/aead/chacha20poly1305.ts +7 -7
- package/src/aead.ts +3 -3
- package/src/bytes.ts +1 -1
- package/src/cipher/chacha20.ts +3 -3
- package/src/cipher.ts +3 -3
- package/src/dh/x25519.ts +1 -1
- package/src/dh.ts +3 -3
- package/src/hash/blake2s.ts +2 -2
- package/src/hash/poly1305.ts +2 -2
- package/src/hash.ts +3 -3
- package/src/hkdf.ts +3 -3
- package/src/hmac.ts +3 -3
- package/src/index.ts +23 -23
- package/src/io.ts +3 -0
- package/src/noise/algorithms.ts +7 -7
- package/src/noise/cipherstate.ts +4 -4
- package/src/noise/handshake.ts +8 -8
- package/src/noise/patterns.ts +1 -1
- package/src/noise/profiles.ts +5 -5
- package/src/noise/rekey.ts +3 -3
- package/src/noise.ts +1 -1
- package/src/nonce.ts +1 -1
- package/src/random.ts +2 -3
- package/test/{tests/aead.test.ts → aead.test.ts} +2 -2
- package/test/{tests/blake2.test.ts → blake2.test.ts} +2 -2
- package/test/{tests/chacha20.test.ts → chacha20.test.ts} +2 -2
- package/test/{tests/io.test.ts → io.test.ts} +2 -2
- package/test/{tests/noise.test.ts → noise.test.ts} +2 -2
- package/test/{tests/poly1305.test.ts → poly1305.test.ts} +2 -2
- package/tsup.config.ts +14 -0
- package/rollup.config.js +0 -19
- package/speed.ts +0 -22
- package/test/harness.ts +0 -74
- package/test/tsconfig.json +0 -18
- package/test-vectors/noise-c-basic.txt +0 -19684
- package/test-vectors/snow.txt +0 -10348
- 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,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,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
|
package/lib/noise.js.map
ADDED
|
@@ -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
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
|
package/lib/nonce.js.map
ADDED
|
@@ -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"}
|
package/lib/random.d.ts
ADDED
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
|
+
"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
|
-
"
|
|
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
|
|
31
|
+
"prepare": "yarn clean && yarn compile && yarn bundle",
|
|
20
32
|
"compile": "yarn tsc",
|
|
21
33
|
"compile:watch": "yarn compile -w",
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"test
|
|
25
|
-
"test
|
|
26
|
-
"
|
|
27
|
-
"
|
|
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
|
-
|
|
32
|
-
"salty-crypto-keygen-x25519": "./bin/salty-crypto-keygen-x25519"
|
|
33
|
-
},
|
|
42
|
+
|
|
34
43
|
"devDependencies": {
|
|
35
|
-
"@
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
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 {
|
package/src/cipher/chacha20.ts
CHANGED
|
@@ -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
|
|
package/src/hash/blake2s.ts
CHANGED
|
@@ -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));
|
package/src/hash/poly1305.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 "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
package/src/noise/algorithms.ts
CHANGED
|
@@ -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,
|
package/src/noise/cipherstate.ts
CHANGED
|
@@ -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;
|
package/src/noise/handshake.ts
CHANGED
|
@@ -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
|
|
package/src/noise/patterns.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 type KeyTransferToken = 'e' | 's';
|
|
5
5
|
export type KeyMixToken = 'ee' | 'es' | 'se' | 'ss' | 'psk';
|
package/src/noise/profiles.ts
CHANGED
|
@@ -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,
|
package/src/noise/rekey.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 { 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) {}
|