salty-crypto 0.2.0 → 0.3.1
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/dist/salty-crypto.d.ts +3 -0
- package/dist/salty-crypto.js +1 -1
- 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 +35 -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 +35 -0
- package/lib/random.js.map +1 -0
- package/package.json +13 -3
- package/src/noise/cipherstate.ts +31 -0
- package/speed.ts +0 -22
- 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 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
|
3
|
+
import { BLAKE2s } from '../hash';
|
|
4
|
+
import { ChaCha20Poly1305_RFC8439 } from '../aead';
|
|
5
|
+
import { X25519 } from '../dh';
|
|
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,2FAA2F;AAG3F,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,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 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
|
3
|
+
import { Nonce } from '../nonce';
|
|
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,2FAA2F;AAG3F,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,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 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,2FAA2F;AAE3F,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 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,2FAA2F;AAE3F,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,35 @@
|
|
|
1
|
+
/// SPDX-License-Identifier: MIT
|
|
2
|
+
/// SPDX-FileCopyrightText: Copyright © 2023 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
|
+
var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;
|
|
14
|
+
if (crypto && crypto.getRandomValues) {
|
|
15
|
+
const QUOTA = 65536;
|
|
16
|
+
return (x, n) => {
|
|
17
|
+
for (let i = 0; i < n; i += QUOTA) {
|
|
18
|
+
crypto.getRandomValues(x.subarray(i, i + Math.min(n - i, QUOTA)));
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
else if (typeof require !== 'undefined') {
|
|
23
|
+
crypto = require('crypto');
|
|
24
|
+
if (crypto && crypto.randomBytes) {
|
|
25
|
+
return (x, n) => x.set(crypto.randomBytes(n));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
throw new Error("No usable randomness source found");
|
|
29
|
+
})();
|
|
30
|
+
export function randomBytes(n) {
|
|
31
|
+
const bs = new Uint8Array(n);
|
|
32
|
+
_randomBytes(bs, n);
|
|
33
|
+
return bs;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2FAA2F;AAE3F,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,GAAQ,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAK,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F,IAAI,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE;QAClC,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;gBAC/B,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;aACrE;QACL,CAAC,CAAC;KACL;SAAM,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;QACvC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;YAC9B,OAAO,CAAC,CAAa,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACrE;KACJ;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,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "salty-crypto",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
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
|
"main": "dist/salty-crypto.js",
|
|
9
|
+
"types": "dist/salty-crypto.d.ts",
|
|
9
10
|
"module": "lib/index.js",
|
|
10
|
-
"types": "lib/index.d.ts",
|
|
11
11
|
"publishConfig": {
|
|
12
12
|
"access": "public"
|
|
13
13
|
},
|
|
@@ -41,5 +41,15 @@
|
|
|
41
41
|
"rollup-plugin-dts": "^5.1.1",
|
|
42
42
|
"typescript": "4.9"
|
|
43
43
|
},
|
|
44
|
-
"dependencies": {}
|
|
44
|
+
"dependencies": {},
|
|
45
|
+
"files": [
|
|
46
|
+
"bin",
|
|
47
|
+
"browser-demo.html",
|
|
48
|
+
"dist",
|
|
49
|
+
"lib",
|
|
50
|
+
"rollup.config.js",
|
|
51
|
+
"src",
|
|
52
|
+
"test",
|
|
53
|
+
"tsconfig.json"
|
|
54
|
+
]
|
|
45
55
|
}
|
package/src/noise/cipherstate.ts
CHANGED
|
@@ -8,11 +8,13 @@ import { Algorithms } from './algorithms';
|
|
|
8
8
|
export class CipherState {
|
|
9
9
|
view: DataView | null = null;
|
|
10
10
|
nonce = new Nonce();
|
|
11
|
+
readonly maxPayload: number;
|
|
11
12
|
|
|
12
13
|
constructor (public algorithms: Algorithms,
|
|
13
14
|
key?: Uint8Array)
|
|
14
15
|
{
|
|
15
16
|
if (key !== void 0) this.view = new DataView(key.buffer);
|
|
17
|
+
this.maxPayload = 65535 - this.algorithms.aead.TAGBYTES;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
encrypt(plaintext: Uint8Array, associated_data?: Uint8Array): Uint8Array {
|
|
@@ -35,4 +37,33 @@ export class CipherState {
|
|
|
35
37
|
if (this.view === null) return;
|
|
36
38
|
this.view = (this.algorithms.rekey ?? makeRekey(this.algorithms.aead))(this.view);
|
|
37
39
|
}
|
|
40
|
+
|
|
41
|
+
encrypt_large(plaintext: Uint8Array): Uint8Array[] {
|
|
42
|
+
if (plaintext.byteLength > this.maxPayload) {
|
|
43
|
+
const pieces = [];
|
|
44
|
+
while (plaintext.byteLength > this.maxPayload) {
|
|
45
|
+
pieces.push(this.encrypt(plaintext.subarray(0, this.maxPayload)));
|
|
46
|
+
plaintext = plaintext.subarray(this.maxPayload);
|
|
47
|
+
}
|
|
48
|
+
if (plaintext.byteLength > 0) {
|
|
49
|
+
pieces.push(this.encrypt(plaintext));
|
|
50
|
+
}
|
|
51
|
+
return pieces;
|
|
52
|
+
} else {
|
|
53
|
+
return [this.encrypt(plaintext)];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
decrypt_large(ciphertexts: Uint8Array[]): Uint8Array {
|
|
58
|
+
const final_len = ciphertexts.reduce(
|
|
59
|
+
(acc, c) => acc + c.byteLength - this.algorithms.aead.TAGBYTES, 0);
|
|
60
|
+
const final = new Uint8Array(final_len);
|
|
61
|
+
let offset = 0;
|
|
62
|
+
ciphertexts.forEach(c => {
|
|
63
|
+
const p = this.decrypt(c);
|
|
64
|
+
final.set(p, offset);
|
|
65
|
+
offset += p.byteLength;
|
|
66
|
+
});
|
|
67
|
+
return final;
|
|
68
|
+
}
|
|
38
69
|
}
|
package/speed.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { scalarMult } from './x25519';
|
|
2
|
-
import { randomBytes } from './random';
|
|
3
|
-
|
|
4
|
-
const N = 1000;
|
|
5
|
-
const start = +new Date();
|
|
6
|
-
|
|
7
|
-
let sum = 0;
|
|
8
|
-
for (let i = 0; i < N; i++) {
|
|
9
|
-
const sk = randomBytes(32);
|
|
10
|
-
const pk = randomBytes(32);
|
|
11
|
-
const dh = scalarMult(sk, pk);
|
|
12
|
-
sum += dh[0];
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const stop = +new Date();
|
|
16
|
-
const delta = (stop - start) / 1000.0;
|
|
17
|
-
|
|
18
|
-
console.log({
|
|
19
|
-
sum,
|
|
20
|
-
delta,
|
|
21
|
-
rate: N / delta,
|
|
22
|
-
});
|