ts-mls 1.6.0 → 1.6.2
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/dist/src/crypto/implementation/default/makeAead.js +12 -6
- package/dist/src/crypto/implementation/default/makeAead.js.map +1 -1
- package/dist/src/crypto/implementation/default/makeDhKem.js +10 -3
- package/dist/src/crypto/implementation/default/makeDhKem.js.map +1 -1
- package/package.json +16 -7
package/README.md
CHANGED
|
@@ -44,10 +44,10 @@ The following cipher suites are supported:
|
|
|
44
44
|
| ------------------------ | ---------------- | ----------- | ------- | --------- | --------------------------------------------------- | --- | ------------------------------------------------------------------- |
|
|
45
45
|
| DHKEM-X25519-HKDF-SHA256 | AES128GCM | HKDF-SHA256 | SHA-256 | Ed25519 | MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519 | 1 | |
|
|
46
46
|
| DHKEM-P256-HKDF-SHA256 | AES128GCM | HKDF-SHA256 | SHA-256 | P256 | MLS_128_DHKEMP256_AES128GCM_SHA256_P256 | 2 | @noble/curves |
|
|
47
|
-
| DHKEM-X25519-HKDF-SHA256 | CHACHA20POLY1305 | HKDF-SHA256 | SHA-256 | Ed25519 | MLS_128_DHKEMX25519_CHACHA20POLY1305_SHA256_Ed25519 | 3 | @hpke/chacha20poly1305
|
|
48
|
-
| DHKEM-X448-HKDF-SHA512 | AES256GCM | HKDF-SHA512 | SHA-512 | Ed448 | MLS_256_DHKEMX448_AES256GCM_SHA512_Ed448 | 4 | @noble/curves
|
|
47
|
+
| DHKEM-X25519-HKDF-SHA256 | CHACHA20POLY1305 | HKDF-SHA256 | SHA-256 | Ed25519 | MLS_128_DHKEMX25519_CHACHA20POLY1305_SHA256_Ed25519 | 3 | @hpke/chacha20poly1305 |
|
|
48
|
+
| DHKEM-X448-HKDF-SHA512 | AES256GCM | HKDF-SHA512 | SHA-512 | Ed448 | MLS_256_DHKEMX448_AES256GCM_SHA512_Ed448 | 4 | @noble/curves, @hpke/dhkem-x448 |
|
|
49
49
|
| DHKEM-P521-HKDF-SHA512 | AES256GCM | HKDF-SHA512 | SHA-512 | P521 | MLS_256_DHKEMP521_AES256GCM_SHA512_P521 | 5 | @noble/curves |
|
|
50
|
-
| DHKEM-X448-HKDF-SHA512 | CHACHA20POLY1305 | HKDF-SHA512 | SHA-512 | Ed448 | MLS_256_DHKEMX448_CHACHA20POLY1305_SHA512_Ed448 | 6 | @hpke/chacha20poly1305, @noble/curves
|
|
50
|
+
| DHKEM-X448-HKDF-SHA512 | CHACHA20POLY1305 | HKDF-SHA512 | SHA-512 | Ed448 | MLS_256_DHKEMX448_CHACHA20POLY1305_SHA512_Ed448 | 6 | @hpke/chacha20poly1305, @noble/curves, @hpke/dhkem-x448 |
|
|
51
51
|
| DHKEM-P384-HKDF-SHA384 | AES256GCM | HKDF-SHA384 | SHA-384 | P384 | MLS_256_DHKEMP384_AES256GCM_SHA384_P384 | 7 | @noble/curves |
|
|
52
52
|
| ML-KEM-512 | AES256GCM | HKDF-SHA256 | SHA-256 | Ed25519 | MLS_128_MLKEM512_AES128GCM_SHA256_Ed25519 | 77 | @hpke/ml-kem |
|
|
53
53
|
| ML-KEM-512 | CHACHA20POLY1305 | HKDF-SHA256 | SHA-256 | Ed25519 | MLS_128_MLKEM512_CHACHA20POLY1305_SHA256_Ed25519 | 78 | @hpke/ml-kem, @hpke/chacha20poly1305 |
|
|
@@ -50,20 +50,26 @@ export async function makeAead(aeadAlg) {
|
|
|
50
50
|
}
|
|
51
51
|
async function encryptAesGcm(key, nonce, aad, plaintext) {
|
|
52
52
|
const cryptoKey = await crypto.subtle.importKey("raw", toBufferSource(key), { name: "AES-GCM" }, false, ["encrypt"]);
|
|
53
|
-
const
|
|
53
|
+
const params = {
|
|
54
54
|
name: "AES-GCM",
|
|
55
55
|
iv: toBufferSource(nonce),
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
};
|
|
57
|
+
if (aad.length > 0) {
|
|
58
|
+
params.additionalData = toBufferSource(aad);
|
|
59
|
+
}
|
|
60
|
+
const result = await crypto.subtle.encrypt(params, cryptoKey, toBufferSource(plaintext));
|
|
58
61
|
return new Uint8Array(result);
|
|
59
62
|
}
|
|
60
63
|
async function decryptAesGcm(key, nonce, aad, ciphertext) {
|
|
61
64
|
const cryptoKey = await crypto.subtle.importKey("raw", toBufferSource(key), { name: "AES-GCM" }, false, ["decrypt"]);
|
|
62
|
-
const
|
|
65
|
+
const params = {
|
|
63
66
|
name: "AES-GCM",
|
|
64
67
|
iv: toBufferSource(nonce),
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
};
|
|
69
|
+
if (aad.length > 0) {
|
|
70
|
+
params.additionalData = toBufferSource(aad);
|
|
71
|
+
}
|
|
72
|
+
const result = await crypto.subtle.decrypt(params, cryptoKey, toBufferSource(ciphertext));
|
|
67
73
|
return new Uint8Array(result);
|
|
68
74
|
}
|
|
69
75
|
//# sourceMappingURL=makeAead.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeAead.js","sourceRoot":"","sources":["../../../../../src/crypto/implementation/default/makeAead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAG3D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAsB;IACnD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,WAAW;YACd,OAAO;gBACL;oBACE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS;wBAChC,OAAO,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;oBAClD,CAAC;oBACD,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU;wBACjC,OAAO,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;oBACnD,CAAC;iBACF;gBACD,IAAI,SAAS,EAAE;aAChB,CAAA;QACH,KAAK,WAAW;YACd,OAAO;gBACL;oBACE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS;wBAChC,OAAO,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;oBAClD,CAAC;oBACD,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU;wBACjC,OAAO,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;oBACnD,CAAC;iBACF;gBACD,IAAI,SAAS,EAAE;aAChB,CAAA;QACH,KAAK,kBAAkB;YACrB,IAAI,CAAC;gBACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;gBACnE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;gBACrE,OAAO;oBACL;wBACE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS;4BACtC,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;wBAC7D,CAAC;wBACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU;4BACvC,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;wBAC9D,CAAC;qBACF;oBACD,IAAI,gBAAgB,EAAE;iBACvB,CAAA;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CACvB,uGAAuG,CACxG,CAAA;YACH,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAe,EACf,KAAiB,EACjB,GAAe,EACf,SAAqB;IAErB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACpH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"makeAead.js","sourceRoot":"","sources":["../../../../../src/crypto/implementation/default/makeAead.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DhkemP256HkdfSha256, DhkemX25519HkdfSha256,
|
|
1
|
+
import { DhkemP256HkdfSha256, DhkemX25519HkdfSha256, DhkemP521HkdfSha512, DhkemP384HkdfSha384, } from "@hpke/core";
|
|
2
2
|
import { DependencyError } from "../../../mlsError.js";
|
|
3
3
|
export async function makeDhKem(kemAlg) {
|
|
4
4
|
switch (kemAlg) {
|
|
@@ -6,8 +6,15 @@ export async function makeDhKem(kemAlg) {
|
|
|
6
6
|
return new DhkemP256HkdfSha256();
|
|
7
7
|
case "DHKEM-X25519-HKDF-SHA256":
|
|
8
8
|
return new DhkemX25519HkdfSha256();
|
|
9
|
-
case "DHKEM-X448-HKDF-SHA512":
|
|
10
|
-
|
|
9
|
+
case "DHKEM-X448-HKDF-SHA512": {
|
|
10
|
+
try {
|
|
11
|
+
const { DhkemX448HkdfSha512 } = await import("@hpke/dhkem-x448");
|
|
12
|
+
return new DhkemX448HkdfSha512();
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
throw new DependencyError("Optional dependency '@hpke/dhkem-x448' is not installed. Please install it to use this feature.");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
11
18
|
case "DHKEM-P521-HKDF-SHA512":
|
|
12
19
|
return new DhkemP521HkdfSha512();
|
|
13
20
|
case "DHKEM-P384-HKDF-SHA384":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeDhKem.js","sourceRoot":"","sources":["../../../../../src/crypto/implementation/default/makeDhKem.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"makeDhKem.js","sourceRoot":"","sources":["../../../../../src/crypto/implementation/default/makeDhKem.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAoB;IAClD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,wBAAwB;YAC3B,OAAO,IAAI,mBAAmB,EAAE,CAAA;QAClC,KAAK,0BAA0B;YAC7B,OAAO,IAAI,qBAAqB,EAAE,CAAA;QACpC,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBAChE,OAAO,IAAI,mBAAmB,EAAE,CAAA;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CACvB,iGAAiG,CAClG,CAAA;YACH,CAAC;QACH,CAAC;QACD,KAAK,wBAAwB;YAC3B,OAAO,IAAI,mBAAmB,EAAE,CAAA;QAClC,KAAK,wBAAwB;YAC3B,OAAO,IAAI,mBAAmB,EAAE,CAAA;QAClC,KAAK,YAAY;YACf,IAAI,CAAC;gBACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;gBACjD,OAAO,IAAI,QAAQ,EAAE,CAAA;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CACvB,6FAA6F,CAC9F,CAAA;YACH,CAAC;QAEH,KAAK,YAAY;YACf,IAAI,CAAC;gBACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;gBACjD,OAAO,IAAI,QAAQ,EAAE,CAAA;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CACvB,6FAA6F,CAC9F,CAAA;YACH,CAAC;QACH,KAAK,aAAa;YAChB,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;gBAClD,OAAO,IAAI,SAAS,EAAE,CAAA;YACxB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CACvB,6FAA6F,CAC9F,CAAA;YACH,CAAC;QACH,KAAK,QAAQ;YACX,IAAI,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;gBACxD,OAAO,IAAI,KAAK,EAAE,CAAA;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CACvB,uGAAuG,CACxG,CAAA;YACH,CAAC;IACL,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-mls",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://github.com/LukaJCB/ts-mls#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -24,11 +24,12 @@
|
|
|
24
24
|
"dist/src/"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@hpke/core": "1.
|
|
27
|
+
"@hpke/core": "1.8.0"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"@hpke/chacha20poly1305": "1.7.1",
|
|
31
31
|
"@hpke/hybridkem-x-wing": "0.6.1",
|
|
32
|
+
"@hpke/dhkem-x448": "1.7.0",
|
|
32
33
|
"@hpke/ml-kem": "0.2.1",
|
|
33
34
|
"@noble/ciphers": "2.1.1",
|
|
34
35
|
"@noble/curves": "2.0.1",
|
|
@@ -44,6 +45,9 @@
|
|
|
44
45
|
"@hpke/ml-kem": {
|
|
45
46
|
"optional": true
|
|
46
47
|
},
|
|
48
|
+
"@hpke/dhkem-x448": {
|
|
49
|
+
"optional": true
|
|
50
|
+
},
|
|
47
51
|
"@noble/curves": {
|
|
48
52
|
"optional": true
|
|
49
53
|
},
|
|
@@ -57,23 +61,26 @@
|
|
|
57
61
|
"@hpke/chacha20poly1305": "1.7.1",
|
|
58
62
|
"@hpke/hybridkem-x-wing": "0.6.1",
|
|
59
63
|
"@hpke/ml-kem": "0.2.1",
|
|
64
|
+
"@hpke/dhkem-x448": "1.7.0",
|
|
60
65
|
"@noble/ciphers": "2.1.1",
|
|
61
66
|
"@noble/curves": "2.0.1",
|
|
62
67
|
"@noble/hashes": "2.0.1",
|
|
63
68
|
"@noble/post-quantum": "0.5.4",
|
|
64
69
|
"@types/jest": "30.0.0",
|
|
65
70
|
"@types/node": "^25.0.6",
|
|
66
|
-
"@vitest/
|
|
71
|
+
"@vitest/browser-playwright": "4.0.17",
|
|
72
|
+
"@vitest/coverage-v8": "4.0.17",
|
|
67
73
|
"eslint": "9.39.2",
|
|
68
74
|
"eslint-plugin-import": "2.32.0",
|
|
69
75
|
"madge": "8.0.0",
|
|
70
|
-
"
|
|
76
|
+
"playwright": "^1.52.0",
|
|
77
|
+
"prettier": "3.8.1",
|
|
71
78
|
"tinybench": "6.0.0",
|
|
72
79
|
"tsx": "4.21.0",
|
|
73
80
|
"typescript": "5.9.3",
|
|
74
|
-
"typescript-docs-verifier": "3.0.
|
|
75
|
-
"typescript-eslint": "8.
|
|
76
|
-
"vitest": "4.0.
|
|
81
|
+
"typescript-docs-verifier": "3.0.2",
|
|
82
|
+
"typescript-eslint": "8.56.1",
|
|
83
|
+
"vitest": "4.0.17"
|
|
77
84
|
},
|
|
78
85
|
"repository": {
|
|
79
86
|
"type": "git",
|
|
@@ -115,6 +122,8 @@
|
|
|
115
122
|
"typecheck": "tsc",
|
|
116
123
|
"benchmark": "tsx bench/index.ts",
|
|
117
124
|
"test": "vitest run",
|
|
125
|
+
"test:browser": "vitest run --config vitest.browser.config.ts",
|
|
126
|
+
"playwright:install": "playwright install",
|
|
118
127
|
"coverage": "vitest run --coverage",
|
|
119
128
|
"lint": "eslint src/ test/",
|
|
120
129
|
"format": "prettier -w .",
|