@sebastienrousseau/crypto-lib 0.0.8 → 0.0.24
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/accel/wasm-bridge.d.ts.map +1 -1
- package/dist/accel/wasm-bridge.js +46 -46
- package/dist/bin/cryptolib.d.ts +2 -11
- package/dist/bin/cryptolib.d.ts.map +1 -1
- package/dist/bin/cryptolib.js +3 -10
- package/dist/high-level/index.d.ts +1 -1
- package/dist/high-level/index.d.ts.map +1 -1
- package/dist/high-level/index.js +3 -1
- package/dist/high-level/multi-recipient.d.ts +6 -0
- package/dist/high-level/multi-recipient.d.ts.map +1 -1
- package/dist/high-level/multi-recipient.js +34 -23
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -8
- package/dist/keys/keygen.d.ts.map +1 -1
- package/dist/keys/keygen.js +19 -83
- package/dist/modern/hash.d.ts.map +1 -1
- package/dist/modern/hash.js +26 -14
- package/dist/modern/hpke.d.ts +1 -1
- package/dist/modern/hpke.d.ts.map +1 -1
- package/dist/modern/hpke.js +74 -11
- package/dist/modern/index.d.ts +1 -1
- package/dist/modern/index.d.ts.map +1 -1
- package/dist/modern/index.js +2 -0
- package/dist/modern/kdf.d.ts.map +1 -1
- package/dist/modern/kdf.js +25 -19
- package/dist/streaming/index.d.ts +6 -2
- package/dist/streaming/index.d.ts.map +1 -1
- package/dist/streaming/index.js +18 -1
- package/dist/streaming/stream-multi-pq-aead.d.ts +35 -0
- package/dist/streaming/stream-multi-pq-aead.d.ts.map +1 -0
- package/dist/streaming/stream-multi-pq-aead.js +315 -0
- package/dist/streaming/stream-pq-aead.d.ts +29 -0
- package/dist/streaming/stream-pq-aead.d.ts.map +1 -0
- package/dist/streaming/stream-pq-aead.js +175 -0
- package/dist/streaming/web-streams.d.ts +25 -0
- package/dist/streaming/web-streams.d.ts.map +1 -1
- package/dist/streaming/web-streams.js +106 -0
- package/dist/tokens/paseto.d.ts +1 -0
- package/dist/tokens/paseto.d.ts.map +1 -1
- package/dist/tokens/paseto.js +66 -69
- package/package.json +88 -13
package/dist/modern/hpke.js
CHANGED
|
@@ -10,8 +10,10 @@ const hkdf_js_1 = require("@noble/hashes/hkdf.js");
|
|
|
10
10
|
const sha2_js_1 = require("@noble/hashes/sha2.js");
|
|
11
11
|
const chacha_js_1 = require("@noble/ciphers/chacha.js");
|
|
12
12
|
const aes_js_1 = require("@noble/ciphers/aes.js");
|
|
13
|
+
const ml_kem_js_1 = require("@noble/post-quantum/ml-kem.js");
|
|
13
14
|
const KEM_X25519 = 0x0020;
|
|
14
15
|
const KEM_P256 = 0x0010;
|
|
16
|
+
const KEM_X25519_MLKEM768 = 0x0030;
|
|
15
17
|
const KDF_HKDF_SHA256 = 0x0001;
|
|
16
18
|
const AEAD_AES_128_GCM = 0x0001;
|
|
17
19
|
const AEAD_CHACHA20_POLY1305 = 0x0003;
|
|
@@ -31,31 +33,42 @@ function i2osp2(n) {
|
|
|
31
33
|
return new Uint8Array([(n >> 8) & 0xff, n & 0xff]);
|
|
32
34
|
}
|
|
33
35
|
function concat(...arrays) {
|
|
34
|
-
|
|
36
|
+
let len = 0;
|
|
37
|
+
for (let i = 0; i < arrays.length; i++) {
|
|
38
|
+
len += arrays[i].length;
|
|
39
|
+
}
|
|
35
40
|
const result = new Uint8Array(len);
|
|
36
41
|
let offset = 0;
|
|
37
|
-
for (
|
|
42
|
+
for (let i = 0; i < arrays.length; i++) {
|
|
43
|
+
const a = arrays[i];
|
|
38
44
|
result.set(a, offset);
|
|
39
45
|
offset += a.length;
|
|
40
46
|
}
|
|
41
47
|
return result;
|
|
42
48
|
}
|
|
43
49
|
function suiteParams(kem, aead) {
|
|
44
|
-
|
|
45
|
-
const aeadId = aead === "chacha20-poly1305" ? AEAD_CHACHA20_POLY1305 : AEAD_AES_128_GCM;
|
|
46
|
-
const nk = aead === "chacha20-poly1305" ? 32 : 16;
|
|
47
|
-
const nn = 12;
|
|
48
|
-
const nSecret = 32;
|
|
50
|
+
let kemId;
|
|
49
51
|
let nEnc;
|
|
50
52
|
let nSk;
|
|
51
53
|
if (kem === "x25519") {
|
|
54
|
+
kemId = KEM_X25519;
|
|
52
55
|
nEnc = 32;
|
|
53
56
|
nSk = 32;
|
|
54
57
|
}
|
|
55
|
-
else {
|
|
58
|
+
else if (kem === "p256") {
|
|
59
|
+
kemId = KEM_P256;
|
|
56
60
|
nEnc = 65;
|
|
57
61
|
nSk = 32;
|
|
58
62
|
}
|
|
63
|
+
else {
|
|
64
|
+
kemId = KEM_X25519_MLKEM768;
|
|
65
|
+
nEnc = 1120;
|
|
66
|
+
nSk = 2432;
|
|
67
|
+
}
|
|
68
|
+
const aeadId = aead === "chacha20-poly1305" ? AEAD_CHACHA20_POLY1305 : AEAD_AES_128_GCM;
|
|
69
|
+
const nk = aead === "chacha20-poly1305" ? 32 : 16;
|
|
70
|
+
const nn = 12;
|
|
71
|
+
const nSecret = 32;
|
|
59
72
|
return {
|
|
60
73
|
kemId,
|
|
61
74
|
kdfId: KDF_HKDF_SHA256,
|
|
@@ -113,6 +126,40 @@ function dhkemDecap(kem, enc, recipientPriv, params) {
|
|
|
113
126
|
const recipientPub = kemPublicKey(kem, recipientPriv);
|
|
114
127
|
return extractAndExpand(params, dh, concat(enc, recipientPub));
|
|
115
128
|
}
|
|
129
|
+
function hybridEncap(recipientPub, ephemeralPrivateKey, params) {
|
|
130
|
+
if (recipientPub.length !== 1216) {
|
|
131
|
+
throw new Error("Invalid recipient public key length for x25519-ml-kem-768");
|
|
132
|
+
}
|
|
133
|
+
const pkX = recipientPub.subarray(0, 32);
|
|
134
|
+
const pkMlKem = recipientPub.subarray(32);
|
|
135
|
+
const ephPrivX = ephemeralPrivateKey.subarray(0, 32);
|
|
136
|
+
const encX = ed25519_js_1.x25519.getPublicKey(ephPrivX);
|
|
137
|
+
const ssClassical = ed25519_js_1.x25519.getSharedSecret(ephPrivX, pkX);
|
|
138
|
+
const { cipherText: ctMlKem, sharedSecret: ssMlKem } = ml_kem_js_1.ml_kem768.encapsulate(pkMlKem);
|
|
139
|
+
const enc = concat(encX, ctMlKem);
|
|
140
|
+
const ikm = concat(ssClassical, ssMlKem);
|
|
141
|
+
const sharedSecret = extractAndExpand(params, ikm, concat(enc, recipientPub));
|
|
142
|
+
return { sharedSecret, enc };
|
|
143
|
+
}
|
|
144
|
+
function hybridDecap(enc, recipientPriv, params) {
|
|
145
|
+
if (recipientPriv.length !== 2432) {
|
|
146
|
+
throw new Error("Invalid recipient private key length for x25519-ml-kem-768");
|
|
147
|
+
}
|
|
148
|
+
if (enc.length !== 1120) {
|
|
149
|
+
throw new Error("Invalid encapsulated key length for x25519-ml-kem-768");
|
|
150
|
+
}
|
|
151
|
+
const skX = recipientPriv.subarray(0, 32);
|
|
152
|
+
const skMlKem = recipientPriv.subarray(32);
|
|
153
|
+
const encX = enc.subarray(0, 32);
|
|
154
|
+
const ctMlKem = enc.subarray(32);
|
|
155
|
+
const ssClassical = ed25519_js_1.x25519.getSharedSecret(skX, encX);
|
|
156
|
+
const ssMlKem = ml_kem_js_1.ml_kem768.decapsulate(ctMlKem, skMlKem);
|
|
157
|
+
const pkX = ed25519_js_1.x25519.getPublicKey(skX);
|
|
158
|
+
const pkMlKem = ml_kem_js_1.ml_kem768.getPublicKey(skMlKem);
|
|
159
|
+
const recipientPub = concat(pkX, pkMlKem);
|
|
160
|
+
const ikm = concat(ssClassical, ssMlKem);
|
|
161
|
+
return extractAndExpand(params, ikm, concat(enc, recipientPub));
|
|
162
|
+
}
|
|
116
163
|
function keySchedule(params, sharedSecret, inputs) {
|
|
117
164
|
const suiteId = hpkeSuiteId(params);
|
|
118
165
|
const empty = new Uint8Array(0);
|
|
@@ -156,6 +203,15 @@ function aeadOpen(aead, key, nonce, aad, ciphertext) {
|
|
|
156
203
|
return (0, aes_js_1.gcm)(key, nonce, aad).decrypt(ciphertext);
|
|
157
204
|
}
|
|
158
205
|
function hpkeGenerateKeyPair(kem = "x25519") {
|
|
206
|
+
if (kem === "x25519-ml-kem-768") {
|
|
207
|
+
const skX = ed25519_js_1.x25519.utils.randomSecretKey();
|
|
208
|
+
const pkX = ed25519_js_1.x25519.getPublicKey(skX);
|
|
209
|
+
const { publicKey: pkMlKem, secretKey: skMlKem } = ml_kem_js_1.ml_kem768.keygen();
|
|
210
|
+
return {
|
|
211
|
+
publicKey: bytesToHex(concat(pkX, pkMlKem)),
|
|
212
|
+
privateKey: bytesToHex(concat(skX, skMlKem)),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
159
215
|
const privateKey = kemRandomPrivateKey(kem);
|
|
160
216
|
return {
|
|
161
217
|
publicKey: bytesToHex(kemPublicKey(kem, privateKey)),
|
|
@@ -164,7 +220,10 @@ function hpkeGenerateKeyPair(kem = "x25519") {
|
|
|
164
220
|
}
|
|
165
221
|
function hpkeSeal(options) {
|
|
166
222
|
const kem = options.suite?.kem ?? "x25519";
|
|
167
|
-
const
|
|
223
|
+
const ephemeralPrivateKey = kem === "x25519-ml-kem-768"
|
|
224
|
+
? ed25519_js_1.x25519.utils.randomSecretKey()
|
|
225
|
+
: kemRandomPrivateKey(kem);
|
|
226
|
+
const sealed = hpkeSealWithEphemeral(options, ephemeralPrivateKey);
|
|
168
227
|
return {
|
|
169
228
|
ciphertext: sealed.ciphertext,
|
|
170
229
|
encapsulatedKey: sealed.encapsulatedKey,
|
|
@@ -178,7 +237,9 @@ function hpkeSealWithEphemeral(options, ephemeralPrivateKey) {
|
|
|
178
237
|
const plaintext = hexToBytes(options.plaintext);
|
|
179
238
|
const aad = options.aad ? hexToBytes(options.aad) : new Uint8Array(0);
|
|
180
239
|
const inputs = scheduleInputs(options);
|
|
181
|
-
const { sharedSecret, enc } =
|
|
240
|
+
const { sharedSecret, enc } = kem === "x25519-ml-kem-768"
|
|
241
|
+
? hybridEncap(recipientPub, ephemeralPrivateKey, params)
|
|
242
|
+
: dhkemEncap(kem, recipientPub, ephemeralPrivateKey, params);
|
|
182
243
|
const ks = keySchedule(params, sharedSecret, inputs);
|
|
183
244
|
const ct = aeadSeal(aead, ks.key, ks.baseNonce, aad, plaintext);
|
|
184
245
|
return {
|
|
@@ -199,7 +260,9 @@ function hpkeOpen(options) {
|
|
|
199
260
|
const ciphertext = hexToBytes(options.ciphertext);
|
|
200
261
|
const aad = options.aad ? hexToBytes(options.aad) : new Uint8Array(0);
|
|
201
262
|
const inputs = scheduleInputs(options);
|
|
202
|
-
const sharedSecret =
|
|
263
|
+
const sharedSecret = kem === "x25519-ml-kem-768"
|
|
264
|
+
? hybridDecap(enc, recipientPriv, params)
|
|
265
|
+
: dhkemDecap(kem, enc, recipientPriv, params);
|
|
203
266
|
const { key, baseNonce } = keySchedule(params, sharedSecret, inputs);
|
|
204
267
|
const pt = aeadOpen(aead, key, baseNonce, aad, ciphertext);
|
|
205
268
|
return { plaintext: bytesToHex(pt) };
|
package/dist/modern/index.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export declare const SUPPORTED_ALGORITHMS: {
|
|
|
34
34
|
readonly kdf: readonly ["scrypt", "hkdf-sha256", "pbkdf2-sha256", "argon2id", "argon2i", "argon2d"];
|
|
35
35
|
readonly mac: readonly ["hmac-sha256", "hmac-sha384", "hmac-sha512", "hmac-sha3-256", "hmac-sha3-512", "kmac-128", "kmac-256"];
|
|
36
36
|
readonly signing: readonly ["ed25519", "ed448", "ecdsa-p256", "ecdsa-p384", "schnorr", "ml-dsa-44", "ml-dsa-65", "ml-dsa-87", "slh-dsa-sha2-128f", "slh-dsa-sha2-128s", "slh-dsa-sha2-192f", "slh-dsa-sha2-192s", "slh-dsa-sha2-256f", "slh-dsa-sha2-256s", "slh-dsa-shake-128f", "slh-dsa-shake-128s", "slh-dsa-shake-192f", "slh-dsa-shake-192s", "slh-dsa-shake-256f", "slh-dsa-shake-256s", "ed25519-ml-dsa-44", "ed25519-ml-dsa-65", "ed25519-ml-dsa-87", "fn-dsa-512", "fn-dsa-1024"];
|
|
37
|
-
readonly keyExchange: readonly ["x25519", "x448", "ecdh-p256", "ecdh-p384", "x25519-ml-kem-512", "x25519-ml-kem-768", "x25519-ml-kem-1024", "p256-ml-kem-768", "x448-ml-kem-1024", "hpke-x25519-chacha20", "hpke-x25519-aes128gcm", "hpke-p256-aes128gcm"];
|
|
37
|
+
readonly keyExchange: readonly ["x25519", "x448", "ecdh-p256", "ecdh-p384", "x25519-ml-kem-512", "x25519-ml-kem-768", "x25519-ml-kem-1024", "p256-ml-kem-768", "x448-ml-kem-1024", "hpke-x25519-chacha20", "hpke-x25519-aes128gcm", "hpke-p256-aes128gcm", "hpke-x25519-ml-kem-768-chacha20", "hpke-x25519-ml-kem-768-aes128gcm"];
|
|
38
38
|
readonly postQuantum: readonly ["ml-kem-512", "ml-kem-768", "ml-kem-1024", "ml-dsa-44", "ml-dsa-65", "ml-dsa-87", "slh-dsa-sha2-128f", "slh-dsa-sha2-128s", "slh-dsa-sha2-192f", "slh-dsa-sha2-192s", "slh-dsa-sha2-256f", "slh-dsa-sha2-256s", "slh-dsa-shake-128f", "slh-dsa-shake-128s", "slh-dsa-shake-192f", "slh-dsa-shake-192s", "slh-dsa-shake-256f", "slh-dsa-shake-256s", "fn-dsa-512", "fn-dsa-1024"];
|
|
39
39
|
};
|
|
40
40
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modern/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modern/index.ts"],"names":[],"mappings":"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"}
|
package/dist/modern/index.js
CHANGED
package/dist/modern/kdf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kdf.d.ts","sourceRoot":"","sources":["../../src/modern/kdf.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,cAAc,qDAIjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAE/B,SAAS,EAAE,YAAY,CAAC;IAExB,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;IAE9B,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,EAAE;QAEP,CAAC,CAAC,EAAE,MAAM,CAAC;QAEX,CAAC,CAAC,EAAE,MAAM,CAAC;QAEX,CAAC,CAAC,EAAE,MAAM,CAAC;QAEX,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;KAC5B,CAAC;CACH;AAGD,MAAM,WAAW,SAAS;IAExB,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,EAAE,YAAY,CAAC;IAExB,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"kdf.d.ts","sourceRoot":"","sources":["../../src/modern/kdf.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,cAAc,qDAIjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAE/B,SAAS,EAAE,YAAY,CAAC;IAExB,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;IAE9B,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,EAAE;QAEP,CAAC,CAAC,EAAE,MAAM,CAAC;QAEX,CAAC,CAAC,EAAE,MAAM,CAAC;QAEX,CAAC,CAAC,EAAE,MAAM,CAAC;QAEX,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;KAC5B,CAAC;CACH;AAGD,MAAM,WAAW,SAAS;IAExB,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,EAAE,YAAY,CAAC;IAExB,SAAS,EAAE,MAAM,CAAC;CACnB;AA4DD,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA4B9D"}
|
package/dist/modern/kdf.js
CHANGED
|
@@ -25,6 +25,25 @@ function toBytes(input, encoding = "utf8") {
|
|
|
25
25
|
}
|
|
26
26
|
return Buffer.from(input, "utf8");
|
|
27
27
|
}
|
|
28
|
+
function deriveScrypt(password, salt, keyLength, params) {
|
|
29
|
+
const N = params.N ?? 131072;
|
|
30
|
+
const r = params.r ?? 8;
|
|
31
|
+
const p = params.p ?? 1;
|
|
32
|
+
(0, cost_limits_1.checkScryptCosts)(N, r, p);
|
|
33
|
+
return (0, scrypt_js_1.scrypt)(password, salt, { N, r, p, dkLen: keyLength });
|
|
34
|
+
}
|
|
35
|
+
function deriveHkdf(password, salt, keyLength, params) {
|
|
36
|
+
const info = params.info ? toBytes(params.info, "utf8") : undefined;
|
|
37
|
+
return (0, hkdf_js_1.hkdf)(sha2_js_1.sha256, password, salt, info, keyLength);
|
|
38
|
+
}
|
|
39
|
+
function derivePbkdf2(password, salt, keyLength, params) {
|
|
40
|
+
const iterations = params.iterations ?? 600000;
|
|
41
|
+
(0, cost_limits_1.checkPbkdf2Iterations)(iterations);
|
|
42
|
+
return (0, pbkdf2_js_1.pbkdf2)(sha2_js_1.sha256, password, salt, {
|
|
43
|
+
c: iterations,
|
|
44
|
+
dkLen: keyLength,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
28
47
|
function kdfDerive(options) {
|
|
29
48
|
const password = toBytes(options.password, "utf8");
|
|
30
49
|
const salt = options.salt ? toBytes(options.salt, "hex") : (0, utils_js_1.randomBytes)(16);
|
|
@@ -32,28 +51,15 @@ function kdfDerive(options) {
|
|
|
32
51
|
const params = options.params ?? {};
|
|
33
52
|
let derived;
|
|
34
53
|
switch (options.algorithm) {
|
|
35
|
-
case "scrypt":
|
|
36
|
-
|
|
37
|
-
const r = params.r ?? 8;
|
|
38
|
-
const p = params.p ?? 1;
|
|
39
|
-
(0, cost_limits_1.checkScryptCosts)(N, r, p);
|
|
40
|
-
derived = (0, scrypt_js_1.scrypt)(password, salt, { N, r, p, dkLen: keyLength });
|
|
54
|
+
case "scrypt":
|
|
55
|
+
derived = deriveScrypt(password, salt, keyLength, params);
|
|
41
56
|
break;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const info = params.info ? toBytes(params.info, "utf8") : undefined;
|
|
45
|
-
derived = (0, hkdf_js_1.hkdf)(sha2_js_1.sha256, password, salt, info, keyLength);
|
|
57
|
+
case "hkdf-sha256":
|
|
58
|
+
derived = deriveHkdf(password, salt, keyLength, params);
|
|
46
59
|
break;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const iterations = params.iterations ?? 600000;
|
|
50
|
-
(0, cost_limits_1.checkPbkdf2Iterations)(iterations);
|
|
51
|
-
derived = (0, pbkdf2_js_1.pbkdf2)(sha2_js_1.sha256, password, salt, {
|
|
52
|
-
c: iterations,
|
|
53
|
-
dkLen: keyLength,
|
|
54
|
-
});
|
|
60
|
+
case "pbkdf2-sha256":
|
|
61
|
+
derived = derivePbkdf2(password, salt, keyLength, params);
|
|
55
62
|
break;
|
|
56
|
-
}
|
|
57
63
|
default:
|
|
58
64
|
throw new Error(`Unsupported KDF algorithm: ${options.algorithm}`);
|
|
59
65
|
}
|
|
@@ -2,6 +2,10 @@ export { createHasher, STREAM_HASH_ALGORITHMS } from "./stream-hash";
|
|
|
2
2
|
export type { StreamingHasher, StreamHashAlgorithm } from "./stream-hash";
|
|
3
3
|
export { streamEncrypt, streamDecrypt } from "./stream-aead";
|
|
4
4
|
export type { StreamEncryptOptions, StreamEncryptResult, StreamDecryptOptions, } from "./stream-aead";
|
|
5
|
-
export { createEncryptStream, createDecryptStream, createHashStream, WEB_STREAM_HASH_ALGORITHMS, } from "./web-streams";
|
|
6
|
-
export type { WebStreamHashAlgorithm, HashStreamResult, EncryptStreamOptions, DecryptStreamOptions, CryptoTransformStream, } from "./web-streams";
|
|
5
|
+
export { createEncryptStream, createDecryptStream, createHashStream, createPqEncryptStream, createPqDecryptStream, createMultiPqEncryptStream, createMultiPqDecryptStream, WEB_STREAM_HASH_ALGORITHMS, } from "./web-streams";
|
|
6
|
+
export type { WebStreamHashAlgorithm, HashStreamResult, EncryptStreamOptions, DecryptStreamOptions, PqEncryptStreamOptions, PqDecryptStreamOptions, MultiPqEncryptStreamOptions, MultiPqDecryptStreamOptions, CryptoTransformStream, } from "./web-streams";
|
|
7
|
+
export { streamPqEncrypt, streamPqDecrypt, PQ_STREAM_HEADER_LEN, } from "./stream-pq-aead";
|
|
8
|
+
export type { StreamPqEncryptOptions, StreamPqEncryptResult, StreamPqDecryptOptions, } from "./stream-pq-aead";
|
|
9
|
+
export { streamMultiPqEncrypt, streamMultiPqDecrypt, MULTI_PQ_STREAM_MAGIC, MULTI_PQ_STREAM_VERSION, MULTI_PQ_PREFIX_LEN, CEK_LEN, WRAPPED_CEK_LEN, SLOT_FIXED_OVERHEAD, } from "./stream-multi-pq-aead";
|
|
10
|
+
export type { MultiPqRecipient, StreamMultiPqEncryptOptions, StreamMultiPqEncryptResult, StreamMultiPqDecryptOptions, StreamMultiPqDecryptResult, } from "./stream-multi-pq-aead";
|
|
7
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAErE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAErE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,OAAO,EACP,eAAe,EACf,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC"}
|
package/dist/streaming/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WEB_STREAM_HASH_ALGORITHMS = exports.createHashStream = exports.createDecryptStream = exports.createEncryptStream = exports.streamDecrypt = exports.streamEncrypt = exports.STREAM_HASH_ALGORITHMS = exports.createHasher = void 0;
|
|
3
|
+
exports.SLOT_FIXED_OVERHEAD = exports.WRAPPED_CEK_LEN = exports.CEK_LEN = exports.MULTI_PQ_PREFIX_LEN = exports.MULTI_PQ_STREAM_VERSION = exports.MULTI_PQ_STREAM_MAGIC = exports.streamMultiPqDecrypt = exports.streamMultiPqEncrypt = exports.PQ_STREAM_HEADER_LEN = exports.streamPqDecrypt = exports.streamPqEncrypt = exports.WEB_STREAM_HASH_ALGORITHMS = exports.createMultiPqDecryptStream = exports.createMultiPqEncryptStream = exports.createPqDecryptStream = exports.createPqEncryptStream = exports.createHashStream = exports.createDecryptStream = exports.createEncryptStream = exports.streamDecrypt = exports.streamEncrypt = exports.STREAM_HASH_ALGORITHMS = exports.createHasher = void 0;
|
|
4
4
|
var stream_hash_1 = require("./stream-hash");
|
|
5
5
|
Object.defineProperty(exports, "createHasher", { enumerable: true, get: function () { return stream_hash_1.createHasher; } });
|
|
6
6
|
Object.defineProperty(exports, "STREAM_HASH_ALGORITHMS", { enumerable: true, get: function () { return stream_hash_1.STREAM_HASH_ALGORITHMS; } });
|
|
@@ -11,5 +11,22 @@ var web_streams_1 = require("./web-streams");
|
|
|
11
11
|
Object.defineProperty(exports, "createEncryptStream", { enumerable: true, get: function () { return web_streams_1.createEncryptStream; } });
|
|
12
12
|
Object.defineProperty(exports, "createDecryptStream", { enumerable: true, get: function () { return web_streams_1.createDecryptStream; } });
|
|
13
13
|
Object.defineProperty(exports, "createHashStream", { enumerable: true, get: function () { return web_streams_1.createHashStream; } });
|
|
14
|
+
Object.defineProperty(exports, "createPqEncryptStream", { enumerable: true, get: function () { return web_streams_1.createPqEncryptStream; } });
|
|
15
|
+
Object.defineProperty(exports, "createPqDecryptStream", { enumerable: true, get: function () { return web_streams_1.createPqDecryptStream; } });
|
|
16
|
+
Object.defineProperty(exports, "createMultiPqEncryptStream", { enumerable: true, get: function () { return web_streams_1.createMultiPqEncryptStream; } });
|
|
17
|
+
Object.defineProperty(exports, "createMultiPqDecryptStream", { enumerable: true, get: function () { return web_streams_1.createMultiPqDecryptStream; } });
|
|
14
18
|
Object.defineProperty(exports, "WEB_STREAM_HASH_ALGORITHMS", { enumerable: true, get: function () { return web_streams_1.WEB_STREAM_HASH_ALGORITHMS; } });
|
|
19
|
+
var stream_pq_aead_1 = require("./stream-pq-aead");
|
|
20
|
+
Object.defineProperty(exports, "streamPqEncrypt", { enumerable: true, get: function () { return stream_pq_aead_1.streamPqEncrypt; } });
|
|
21
|
+
Object.defineProperty(exports, "streamPqDecrypt", { enumerable: true, get: function () { return stream_pq_aead_1.streamPqDecrypt; } });
|
|
22
|
+
Object.defineProperty(exports, "PQ_STREAM_HEADER_LEN", { enumerable: true, get: function () { return stream_pq_aead_1.PQ_STREAM_HEADER_LEN; } });
|
|
23
|
+
var stream_multi_pq_aead_1 = require("./stream-multi-pq-aead");
|
|
24
|
+
Object.defineProperty(exports, "streamMultiPqEncrypt", { enumerable: true, get: function () { return stream_multi_pq_aead_1.streamMultiPqEncrypt; } });
|
|
25
|
+
Object.defineProperty(exports, "streamMultiPqDecrypt", { enumerable: true, get: function () { return stream_multi_pq_aead_1.streamMultiPqDecrypt; } });
|
|
26
|
+
Object.defineProperty(exports, "MULTI_PQ_STREAM_MAGIC", { enumerable: true, get: function () { return stream_multi_pq_aead_1.MULTI_PQ_STREAM_MAGIC; } });
|
|
27
|
+
Object.defineProperty(exports, "MULTI_PQ_STREAM_VERSION", { enumerable: true, get: function () { return stream_multi_pq_aead_1.MULTI_PQ_STREAM_VERSION; } });
|
|
28
|
+
Object.defineProperty(exports, "MULTI_PQ_PREFIX_LEN", { enumerable: true, get: function () { return stream_multi_pq_aead_1.MULTI_PQ_PREFIX_LEN; } });
|
|
29
|
+
Object.defineProperty(exports, "CEK_LEN", { enumerable: true, get: function () { return stream_multi_pq_aead_1.CEK_LEN; } });
|
|
30
|
+
Object.defineProperty(exports, "WRAPPED_CEK_LEN", { enumerable: true, get: function () { return stream_multi_pq_aead_1.WRAPPED_CEK_LEN; } });
|
|
31
|
+
Object.defineProperty(exports, "SLOT_FIXED_OVERHEAD", { enumerable: true, get: function () { return stream_multi_pq_aead_1.SLOT_FIXED_OVERHEAD; } });
|
|
15
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare const MULTI_PQ_STREAM_MAGIC: Uint8Array<ArrayBuffer>;
|
|
2
|
+
export declare const MULTI_PQ_STREAM_VERSION = 1;
|
|
3
|
+
export declare const MULTI_PQ_PREFIX_LEN = 35;
|
|
4
|
+
export declare const CEK_LEN = 32;
|
|
5
|
+
export declare const WRAPPED_CEK_LEN: number;
|
|
6
|
+
export declare const SLOT_FIXED_OVERHEAD: number;
|
|
7
|
+
export interface MultiPqRecipient {
|
|
8
|
+
recipientId: string;
|
|
9
|
+
recipientX25519Public: string | Uint8Array;
|
|
10
|
+
recipientMlKemPublic: string | Uint8Array;
|
|
11
|
+
}
|
|
12
|
+
export interface StreamMultiPqEncryptOptions {
|
|
13
|
+
recipients: MultiPqRecipient[];
|
|
14
|
+
plaintext: Uint8Array;
|
|
15
|
+
chunkSize?: number | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface StreamMultiPqEncryptResult {
|
|
18
|
+
ciphertext: Uint8Array;
|
|
19
|
+
algorithm: "multi-x25519-ml-kem-768-xchacha20-poly1305-stream";
|
|
20
|
+
recipientCount: number;
|
|
21
|
+
}
|
|
22
|
+
export interface StreamMultiPqDecryptOptions {
|
|
23
|
+
recipientId?: string | undefined;
|
|
24
|
+
recipientX25519Secret: string | Uint8Array;
|
|
25
|
+
recipientMlKemSecret: string | Uint8Array;
|
|
26
|
+
ciphertext: Uint8Array;
|
|
27
|
+
chunkSize?: number | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface StreamMultiPqDecryptResult {
|
|
30
|
+
plaintext: Uint8Array;
|
|
31
|
+
recipientId: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function streamMultiPqEncrypt(options: StreamMultiPqEncryptOptions): StreamMultiPqEncryptResult;
|
|
34
|
+
export declare function streamMultiPqDecrypt(options: StreamMultiPqDecryptOptions): StreamMultiPqDecryptResult;
|
|
35
|
+
//# sourceMappingURL=stream-multi-pq-aead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-multi-pq-aead.d.ts","sourceRoot":"","sources":["../../src/streaming/stream-multi-pq-aead.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,qBAAqB,yBAA2C,CAAC;AAG9E,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAG5C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,OAAO,KAAK,CAAC;AAG1B,eAAO,MAAM,eAAe,QAAoB,CAAC;AAGjD,eAAO,MAAM,mBAAmB,QACiC,CAAC;AAOlE,MAAM,WAAW,gBAAgB;IAE/B,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB,EAAE,MAAM,GAAG,UAAU,CAAC;IAE3C,oBAAoB,EAAE,MAAM,GAAG,UAAU,CAAC;CAC3C;AAGD,MAAM,WAAW,2BAA2B;IAE1C,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAE/B,SAAS,EAAE,UAAU,CAAC;IAEtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAGD,MAAM,WAAW,0BAA0B;IAEzC,UAAU,EAAE,UAAU,CAAC;IAEvB,SAAS,EAAE,mDAAmD,CAAC;IAE/D,cAAc,EAAE,MAAM,CAAC;CACxB;AAGD,MAAM,WAAW,2BAA2B;IAE1C,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEjC,qBAAqB,EAAE,MAAM,GAAG,UAAU,CAAC;IAE3C,oBAAoB,EAAE,MAAM,GAAG,UAAU,CAAC;IAE1C,UAAU,EAAE,UAAU,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAGD,MAAM,WAAW,0BAA0B;IAEzC,SAAS,EAAE,UAAU,CAAC;IAEtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAgLD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CAsD5B;AAwND,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CAyC5B"}
|