@matter/general 0.16.0-alpha.0-20250821-dd03e1003 → 0.16.0-alpha.0-20250826-531401faa
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/cjs/crypto/Key.d.ts +8 -7
- package/dist/cjs/crypto/Key.d.ts.map +1 -1
- package/dist/cjs/crypto/Key.js +8 -7
- package/dist/cjs/crypto/Key.js.map +2 -2
- package/dist/cjs/crypto/NodeJsStyleCrypto.d.ts +49 -0
- package/dist/cjs/crypto/NodeJsStyleCrypto.d.ts.map +1 -0
- package/dist/cjs/crypto/NodeJsStyleCrypto.js +174 -0
- package/dist/cjs/crypto/NodeJsStyleCrypto.js.map +6 -0
- package/dist/cjs/crypto/StandardCrypto.d.ts +2 -1
- package/dist/cjs/crypto/StandardCrypto.d.ts.map +1 -1
- package/dist/cjs/crypto/StandardCrypto.js +4 -3
- package/dist/cjs/crypto/StandardCrypto.js.map +1 -1
- package/dist/cjs/crypto/index.d.ts +1 -0
- package/dist/cjs/crypto/index.d.ts.map +1 -1
- package/dist/cjs/crypto/index.js +1 -0
- package/dist/cjs/crypto/index.js.map +1 -1
- package/dist/esm/crypto/Key.d.ts +8 -7
- package/dist/esm/crypto/Key.d.ts.map +1 -1
- package/dist/esm/crypto/Key.js +8 -7
- package/dist/esm/crypto/Key.js.map +2 -2
- package/dist/esm/crypto/NodeJsStyleCrypto.d.ts +49 -0
- package/dist/esm/crypto/NodeJsStyleCrypto.d.ts.map +1 -0
- package/dist/esm/crypto/NodeJsStyleCrypto.js +162 -0
- package/dist/esm/crypto/NodeJsStyleCrypto.js.map +6 -0
- package/dist/esm/crypto/StandardCrypto.d.ts +2 -1
- package/dist/esm/crypto/StandardCrypto.d.ts.map +1 -1
- package/dist/esm/crypto/StandardCrypto.js +4 -3
- package/dist/esm/crypto/StandardCrypto.js.map +1 -1
- package/dist/esm/crypto/index.d.ts +1 -0
- package/dist/esm/crypto/index.d.ts.map +1 -1
- package/dist/esm/crypto/index.js +1 -0
- package/dist/esm/crypto/index.js.map +1 -1
- package/package.json +2 -2
- package/src/crypto/Key.ts +9 -9
- package/src/crypto/NodeJsStyleCrypto.ts +212 -0
- package/src/crypto/StandardCrypto.ts +5 -3
- package/src/crypto/index.ts +1 -0
package/dist/cjs/crypto/Key.d.ts
CHANGED
|
@@ -144,7 +144,6 @@ export interface PrivateKey extends PublicKey {
|
|
|
144
144
|
privateKey: Bytes;
|
|
145
145
|
keyPair: BinaryKeyPair;
|
|
146
146
|
keyPairBits: BinaryKeyPair;
|
|
147
|
-
sharedSecretFor(peerKey: PublicKey): Bytes;
|
|
148
147
|
}
|
|
149
148
|
/**
|
|
150
149
|
* Symmetric key.
|
|
@@ -170,10 +169,12 @@ export declare function PublicKey(publicKey: Bytes, options?: Partial<Key>): Pub
|
|
|
170
169
|
* Symmetric key factory.
|
|
171
170
|
*/
|
|
172
171
|
export declare function SymmetricKey(privateKey: Bytes, options?: Partial<Key>): Key;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
172
|
+
export declare namespace Key {
|
|
173
|
+
/**
|
|
174
|
+
* Diffie-Hellman shared secret computation.
|
|
175
|
+
*
|
|
176
|
+
* We provide this for platforms without a native implementation.
|
|
177
|
+
*/
|
|
178
|
+
function sharedSecretFor(key: PrivateKey, peerKey: PublicKey): Bytes;
|
|
179
|
+
}
|
|
179
180
|
//# sourceMappingURL=Key.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AA6BzC,oBAAY,OAAO;IACf,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;CACd;AAED,oBAAY,SAAS;IACjB,IAAI,UAAU;IACd,IAAI,UAAU;IACd,IAAI,UAAU;CACjB;AAeD,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,WAAW,GAAI,SAAQ,UAAU;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC;IAEjB;;OAEG;IACH,UAAU,EAAE,KAAK,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,SAAS;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,KAAK,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/crypto/Key.js
CHANGED
|
@@ -23,8 +23,7 @@ __export(Key_exports, {
|
|
|
23
23
|
KeyType: () => KeyType,
|
|
24
24
|
PrivateKey: () => PrivateKey,
|
|
25
25
|
PublicKey: () => PublicKey,
|
|
26
|
-
SymmetricKey: () => SymmetricKey
|
|
27
|
-
sharedSecretFor: () => sharedSecretFor
|
|
26
|
+
SymmetricKey: () => SymmetricKey
|
|
28
27
|
});
|
|
29
28
|
module.exports = __toCommonJS(Key_exports);
|
|
30
29
|
var import_Base64Codec = require("../codec/Base64Codec.js");
|
|
@@ -337,8 +336,7 @@ function PrivateKey(privateKey, options) {
|
|
|
337
336
|
type: "EC" /* EC */,
|
|
338
337
|
privateKey: priv,
|
|
339
338
|
publicKey: pub,
|
|
340
|
-
...options
|
|
341
|
-
sharedSecretFor
|
|
339
|
+
...options
|
|
342
340
|
});
|
|
343
341
|
}
|
|
344
342
|
function PublicKey(publicKey, options) {
|
|
@@ -355,7 +353,10 @@ function SymmetricKey(privateKey, options) {
|
|
|
355
353
|
...options
|
|
356
354
|
});
|
|
357
355
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
356
|
+
((Key2) => {
|
|
357
|
+
function sharedSecretFor(key, peerKey) {
|
|
358
|
+
return import_Bytes.Bytes.of(getSharedSecret(import_Bytes.Bytes.of(key.privateBits), import_Bytes.Bytes.of(peerKey.publicBits)));
|
|
359
|
+
}
|
|
360
|
+
Key2.sharedSecretFor = sharedSecretFor;
|
|
361
|
+
})(Key || (Key = {}));
|
|
361
362
|
//# sourceMappingURL=Key.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Key.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
5
|
-
"names": ["KeyType", "CurveType", "Asn1ObjectID", "Translators", "publicBits", "Aliases", "Base64Codecs", "AssertedAliases"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["KeyType", "CurveType", "Asn1ObjectID", "Translators", "publicBits", "Aliases", "Base64Codecs", "AssertedAliases", "Key"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Bytes } from "#util/Bytes.js";
|
|
7
|
+
import { Identity } from "#util/Type.js";
|
|
8
|
+
import { Crypto, CryptoDsaEncoding } from "./Crypto.js";
|
|
9
|
+
import { PrivateKey, PublicKey } from "./Key.js";
|
|
10
|
+
import type * as NodeJsCryptoApi from "node:crypto";
|
|
11
|
+
/**
|
|
12
|
+
* A crypto API implemented in the style of Node.js.
|
|
13
|
+
*/
|
|
14
|
+
export interface NodeJsCryptoApiLike extends Identity<typeof NodeJsCryptoApi> {
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A crypto implementation that uses the Node.js crypto API.
|
|
18
|
+
*
|
|
19
|
+
* It is Node.js "style" because there are many packages that emulate the Node.js API. As of now (mid-2025) these are
|
|
20
|
+
* sometimes more mature than the available Web Crypto implementation.
|
|
21
|
+
*
|
|
22
|
+
* This module does not import the Node.js crypto implementation directly. You must provide a crypto implementation to
|
|
23
|
+
* use it.
|
|
24
|
+
*/
|
|
25
|
+
export declare class NodeJsStyleCrypto extends Crypto {
|
|
26
|
+
#private;
|
|
27
|
+
implementationName: string;
|
|
28
|
+
constructor(crypto: NodeJsCryptoApiLike);
|
|
29
|
+
encrypt(key: Bytes, data: Bytes, nonce: Bytes, aad?: Bytes): Bytes;
|
|
30
|
+
decrypt(key: Bytes, encrypted: Bytes, nonce: Bytes, aad?: Bytes): Bytes;
|
|
31
|
+
randomBytes(length: number): Bytes;
|
|
32
|
+
ecdhGeneratePublicKey(): {
|
|
33
|
+
publicKey: Bytes;
|
|
34
|
+
ecdh: any;
|
|
35
|
+
};
|
|
36
|
+
ecdhGeneratePublicKeyAndSecret(peerPublicKey: Bytes): {
|
|
37
|
+
publicKey: Bytes;
|
|
38
|
+
sharedSecret: Bytes;
|
|
39
|
+
};
|
|
40
|
+
computeSha256(data: Bytes | Bytes[]): Bytes;
|
|
41
|
+
createPbkdf2Key(secret: Bytes, salt: Bytes, iteration: number, keyLength: number): Promise<Bytes>;
|
|
42
|
+
createHkdfKey(secret: Bytes, salt: Bytes, info: Bytes, length?: number): Promise<Bytes>;
|
|
43
|
+
signHmac(key: Bytes, data: Bytes): Bytes;
|
|
44
|
+
signEcdsa(privateKey: JsonWebKey, data: Bytes | Bytes[], dsaEncoding?: CryptoDsaEncoding): Bytes;
|
|
45
|
+
verifyEcdsa(publicKey: JsonWebKey, data: Bytes, signature: Bytes, dsaEncoding?: CryptoDsaEncoding): void;
|
|
46
|
+
createKeyPair(): PrivateKey;
|
|
47
|
+
generateDhSecret(key: PrivateKey, peerKey: PublicKey): Bytes;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=NodeJsStyleCrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeJsStyleCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/NodeJsStyleCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACH,MAAM,EAON,iBAAiB,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,KAAK,KAAK,eAAe,MAAM,aAAa,CAAC;AAKpD;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,OAAO,eAAe,CAAC;CAAG;AAEhF;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,MAAM;;IACzC,kBAAkB,SAAa;gBAInB,MAAM,EAAE,mBAAmB;IAMvC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK;IAYlE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK;IAmBvE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAIlC,qBAAqB,IAAI;QAAE,SAAS,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;IAMxD,8BAA8B,CAAC,aAAa,EAAE,KAAK,GAAG;QAClD,SAAS,EAAE,KAAK,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC;KACvB;IASD,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,KAAK;IAU3C,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAgBjG,aAAa,CACT,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,MAAoC,GAC7C,OAAO,CAAC,KAAK,CAAC;IAgBjB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK;IAMxC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,WAAW,GAAE,iBAAgC,GAAG,KAAK;IAiB9G,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAE,iBAAgC;IAe/G,aAAa;IAcb,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK;CAM/D"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var NodeJsStyleCrypto_exports = {};
|
|
20
|
+
__export(NodeJsStyleCrypto_exports, {
|
|
21
|
+
NodeJsStyleCrypto: () => NodeJsStyleCrypto
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(NodeJsStyleCrypto_exports);
|
|
24
|
+
var import_Bytes = require("#util/Bytes.js");
|
|
25
|
+
var import_Error = require("#util/Error.js");
|
|
26
|
+
var import_Crypto = require("./Crypto.js");
|
|
27
|
+
var import_CryptoError = require("./CryptoError.js");
|
|
28
|
+
var import_Key = require("./Key.js");
|
|
29
|
+
/**
|
|
30
|
+
* @license
|
|
31
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
32
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
33
|
+
*/
|
|
34
|
+
class NodeJsStyleCrypto extends import_Crypto.Crypto {
|
|
35
|
+
implementationName = "Node.js";
|
|
36
|
+
#crypto;
|
|
37
|
+
constructor(crypto) {
|
|
38
|
+
super();
|
|
39
|
+
this.#crypto = crypto;
|
|
40
|
+
}
|
|
41
|
+
encrypt(key, data, nonce, aad) {
|
|
42
|
+
const cipher = this.#crypto.createCipheriv(import_Crypto.CRYPTO_ENCRYPT_ALGORITHM, import_Bytes.Bytes.of(key), import_Bytes.Bytes.of(nonce), {
|
|
43
|
+
authTagLength: import_Crypto.CRYPTO_AUTH_TAG_LENGTH
|
|
44
|
+
});
|
|
45
|
+
if (aad !== void 0) {
|
|
46
|
+
cipher.setAAD(import_Bytes.Bytes.of(aad), { plaintextLength: data.byteLength });
|
|
47
|
+
}
|
|
48
|
+
const encrypted = cipher.update(import_Bytes.Bytes.of(data));
|
|
49
|
+
cipher.final();
|
|
50
|
+
return import_Bytes.Bytes.concat(import_Bytes.Bytes.of(encrypted), import_Bytes.Bytes.of(cipher.getAuthTag()));
|
|
51
|
+
}
|
|
52
|
+
decrypt(key, encrypted, nonce, aad) {
|
|
53
|
+
const cipher = this.#crypto.createDecipheriv(import_Crypto.CRYPTO_ENCRYPT_ALGORITHM, import_Bytes.Bytes.of(key), import_Bytes.Bytes.of(nonce), {
|
|
54
|
+
authTagLength: import_Crypto.CRYPTO_AUTH_TAG_LENGTH
|
|
55
|
+
});
|
|
56
|
+
const data = import_Bytes.Bytes.of(encrypted);
|
|
57
|
+
const plaintextLength = data.length - import_Crypto.CRYPTO_AUTH_TAG_LENGTH;
|
|
58
|
+
if (aad !== void 0) {
|
|
59
|
+
cipher.setAAD(import_Bytes.Bytes.of(aad), { plaintextLength });
|
|
60
|
+
}
|
|
61
|
+
cipher.setAuthTag(data.slice(plaintextLength));
|
|
62
|
+
const result = cipher.update(data.slice(0, plaintextLength));
|
|
63
|
+
try {
|
|
64
|
+
cipher.final();
|
|
65
|
+
} catch (e) {
|
|
66
|
+
throw new import_CryptoError.CryptoDecryptError(`${import_Crypto.CRYPTO_ENCRYPT_ALGORITHM} decryption failed: ${(0, import_Error.asError)(e).message}`);
|
|
67
|
+
}
|
|
68
|
+
return import_Bytes.Bytes.of(result);
|
|
69
|
+
}
|
|
70
|
+
randomBytes(length) {
|
|
71
|
+
return import_Bytes.Bytes.of(this.#crypto.randomBytes(length));
|
|
72
|
+
}
|
|
73
|
+
ecdhGeneratePublicKey() {
|
|
74
|
+
const ecdh = this.#crypto.createECDH(import_Crypto.CRYPTO_EC_CURVE);
|
|
75
|
+
ecdh.generateKeys();
|
|
76
|
+
return { publicKey: import_Bytes.Bytes.of(ecdh.getPublicKey()), ecdh };
|
|
77
|
+
}
|
|
78
|
+
ecdhGeneratePublicKeyAndSecret(peerPublicKey) {
|
|
79
|
+
const ecdh = this.#crypto.createECDH(import_Crypto.CRYPTO_EC_CURVE);
|
|
80
|
+
ecdh.generateKeys();
|
|
81
|
+
return {
|
|
82
|
+
publicKey: import_Bytes.Bytes.of(ecdh.getPublicKey()),
|
|
83
|
+
sharedSecret: import_Bytes.Bytes.of(ecdh.computeSecret(import_Bytes.Bytes.of(peerPublicKey)))
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
computeSha256(data) {
|
|
87
|
+
const hasher = this.#crypto.createHash(import_Crypto.CRYPTO_HASH_ALGORITHM);
|
|
88
|
+
if (Array.isArray(data)) {
|
|
89
|
+
data.forEach((chunk) => hasher.update(import_Bytes.Bytes.of(chunk)));
|
|
90
|
+
} else {
|
|
91
|
+
hasher.update(import_Bytes.Bytes.of(data));
|
|
92
|
+
}
|
|
93
|
+
return import_Bytes.Bytes.of(hasher.digest());
|
|
94
|
+
}
|
|
95
|
+
createPbkdf2Key(secret, salt, iteration, keyLength) {
|
|
96
|
+
return new Promise((resolver, rejecter) => {
|
|
97
|
+
this.#crypto.pbkdf2(
|
|
98
|
+
import_Bytes.Bytes.of(secret),
|
|
99
|
+
import_Bytes.Bytes.of(salt),
|
|
100
|
+
iteration,
|
|
101
|
+
keyLength,
|
|
102
|
+
import_Crypto.CRYPTO_HASH_ALGORITHM,
|
|
103
|
+
(error, key) => {
|
|
104
|
+
if (error !== null) rejecter(error);
|
|
105
|
+
resolver(import_Bytes.Bytes.of(key));
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
createHkdfKey(secret, salt, info, length = import_Crypto.CRYPTO_SYMMETRIC_KEY_LENGTH) {
|
|
111
|
+
return new Promise((resolver, rejecter) => {
|
|
112
|
+
this.#crypto.hkdf(
|
|
113
|
+
import_Crypto.CRYPTO_HASH_ALGORITHM,
|
|
114
|
+
import_Bytes.Bytes.of(secret),
|
|
115
|
+
import_Bytes.Bytes.of(salt),
|
|
116
|
+
import_Bytes.Bytes.of(info),
|
|
117
|
+
length,
|
|
118
|
+
(error, key) => {
|
|
119
|
+
if (error !== null) rejecter(error);
|
|
120
|
+
resolver(import_Bytes.Bytes.of(key));
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
signHmac(key, data) {
|
|
126
|
+
const hmac = this.#crypto.createHmac(import_Crypto.CRYPTO_HASH_ALGORITHM, import_Bytes.Bytes.of(key));
|
|
127
|
+
hmac.update(import_Bytes.Bytes.of(data));
|
|
128
|
+
return import_Bytes.Bytes.of(hmac.digest());
|
|
129
|
+
}
|
|
130
|
+
signEcdsa(privateKey, data, dsaEncoding = "ieee-p1363") {
|
|
131
|
+
const signer = this.#crypto.createSign(import_Crypto.CRYPTO_HASH_ALGORITHM);
|
|
132
|
+
if (Array.isArray(data)) {
|
|
133
|
+
data.forEach((chunk) => signer.update(import_Bytes.Bytes.of(chunk)));
|
|
134
|
+
} else {
|
|
135
|
+
signer.update(import_Bytes.Bytes.of(data));
|
|
136
|
+
}
|
|
137
|
+
return import_Bytes.Bytes.of(
|
|
138
|
+
signer.sign({
|
|
139
|
+
key: privateKey,
|
|
140
|
+
format: "jwk",
|
|
141
|
+
type: "pkcs8",
|
|
142
|
+
dsaEncoding
|
|
143
|
+
})
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
verifyEcdsa(publicKey, data, signature, dsaEncoding = "ieee-p1363") {
|
|
147
|
+
const verifier = this.#crypto.createVerify(import_Crypto.CRYPTO_HASH_ALGORITHM);
|
|
148
|
+
verifier.update(import_Bytes.Bytes.of(data));
|
|
149
|
+
const success = verifier.verify(
|
|
150
|
+
{
|
|
151
|
+
key: publicKey,
|
|
152
|
+
format: "jwk",
|
|
153
|
+
type: "spki",
|
|
154
|
+
dsaEncoding
|
|
155
|
+
},
|
|
156
|
+
import_Bytes.Bytes.of(signature)
|
|
157
|
+
);
|
|
158
|
+
if (!success) throw new import_CryptoError.CryptoVerifyError("Signature verification failed");
|
|
159
|
+
}
|
|
160
|
+
createKeyPair() {
|
|
161
|
+
const ecdh = this.#crypto.createECDH(import_Crypto.CRYPTO_EC_CURVE);
|
|
162
|
+
ecdh.generateKeys();
|
|
163
|
+
const privateKey = new Uint8Array(import_Crypto.CRYPTO_EC_KEY_BYTES);
|
|
164
|
+
const nodePrivateKey = ecdh.getPrivateKey();
|
|
165
|
+
privateKey.set(nodePrivateKey, import_Crypto.CRYPTO_EC_KEY_BYTES - nodePrivateKey.length);
|
|
166
|
+
return (0, import_Key.PrivateKey)(privateKey, { publicKey: import_Bytes.Bytes.of(ecdh.getPublicKey()) });
|
|
167
|
+
}
|
|
168
|
+
generateDhSecret(key, peerKey) {
|
|
169
|
+
const ecdh = this.#crypto.createECDH(import_Crypto.CRYPTO_EC_CURVE);
|
|
170
|
+
ecdh.setPrivateKey(import_Bytes.Bytes.of(key.privateBits));
|
|
171
|
+
return import_Bytes.Bytes.of(ecdh.computeSecret(import_Bytes.Bytes.of(peerKey.publicBits)));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=NodeJsStyleCrypto.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/crypto/NodeJsStyleCrypto.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,mBAAsB;AACtB,mBAAwB;AAExB,oBASO;AACP,yBAAsD;AACtD,iBAAsC;AApBtC;AAAA;AAAA;AAAA;AAAA;AA0CO,MAAM,0BAA0B,qBAAO;AAAA,EAC1C,qBAAqB;AAAA,EAErB;AAAA,EAEA,YAAY,QAA6B;AACrC,UAAM;AAEN,SAAK,UAAU;AAAA,EACnB;AAAA,EAEA,QAAQ,KAAY,MAAa,OAAc,KAAoB;AAC/D,UAAM,SAAS,KAAK,QAAQ,eAAe,wCAA0B,mBAAM,GAAG,GAAG,GAAG,mBAAM,GAAG,KAAK,GAAG;AAAA,MACjG,eAAe;AAAA,IACnB,CAAC;AACD,QAAI,QAAQ,QAAW;AACnB,aAAO,OAAO,mBAAM,GAAG,GAAG,GAAG,EAAE,iBAAiB,KAAK,WAAW,CAAC;AAAA,IACrE;AACA,UAAM,YAAY,OAAO,OAAO,mBAAM,GAAG,IAAI,CAAC;AAC9C,WAAO,MAAM;AACb,WAAO,mBAAM,OAAO,mBAAM,GAAG,SAAS,GAAG,mBAAM,GAAG,OAAO,WAAW,CAAC,CAAC;AAAA,EAC1E;AAAA,EAEA,QAAQ,KAAY,WAAkB,OAAc,KAAoB;AACpE,UAAM,SAAS,KAAK,QAAQ,iBAAiB,wCAA0B,mBAAM,GAAG,GAAG,GAAG,mBAAM,GAAG,KAAK,GAAG;AAAA,MACnG,eAAe;AAAA,IACnB,CAAC;AACD,UAAM,OAAO,mBAAM,GAAG,SAAS;AAC/B,UAAM,kBAAkB,KAAK,SAAS;AACtC,QAAI,QAAQ,QAAW;AACnB,aAAO,OAAO,mBAAM,GAAG,GAAG,GAAG,EAAE,gBAAgB,CAAC;AAAA,IACpD;AACA,WAAO,WAAW,KAAK,MAAM,eAAe,CAAC;AAC7C,UAAM,SAAS,OAAO,OAAO,KAAK,MAAM,GAAG,eAAe,CAAC;AAC3D,QAAI;AACA,aAAO,MAAM;AAAA,IACjB,SAAS,GAAG;AACR,YAAM,IAAI,sCAAmB,GAAG,sCAAwB,2BAAuB,sBAAQ,CAAC,EAAE,OAAO,EAAE;AAAA,IACvG;AACA,WAAO,mBAAM,GAAG,MAAM;AAAA,EAC1B;AAAA,EAEA,YAAY,QAAuB;AAC/B,WAAO,mBAAM,GAAG,KAAK,QAAQ,YAAY,MAAM,CAAC;AAAA,EACpD;AAAA,EAEA,wBAAyD;AACrD,UAAM,OAAO,KAAK,QAAQ,WAAW,6BAAe;AACpD,SAAK,aAAa;AAClB,WAAO,EAAE,WAAW,mBAAM,GAAG,KAAK,aAAa,CAAC,GAAG,KAAW;AAAA,EAClE;AAAA,EAEA,+BAA+B,eAG7B;AACE,UAAM,OAAO,KAAK,QAAQ,WAAW,6BAAe;AACpD,SAAK,aAAa;AAClB,WAAO;AAAA,MACH,WAAW,mBAAM,GAAG,KAAK,aAAa,CAAC;AAAA,MACvC,cAAc,mBAAM,GAAG,KAAK,cAAc,mBAAM,GAAG,aAAa,CAAC,CAAC;AAAA,IACtE;AAAA,EACJ;AAAA,EAEA,cAAc,MAA8B;AACxC,UAAM,SAAS,KAAK,QAAQ,WAAW,mCAAqB;AAC5D,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,WAAK,QAAQ,WAAS,OAAO,OAAO,mBAAM,GAAG,KAAK,CAAC,CAAC;AAAA,IACxD,OAAO;AACH,aAAO,OAAO,mBAAM,GAAG,IAAI,CAAC;AAAA,IAChC;AACA,WAAO,mBAAM,GAAG,OAAO,OAAO,CAAC;AAAA,EACnC;AAAA,EAEA,gBAAgB,QAAe,MAAa,WAAmB,WAAmC;AAC9F,WAAO,IAAI,QAAe,CAAC,UAAU,aAAa;AAC9C,WAAK,QAAQ;AAAA,QACT,mBAAM,GAAG,MAAM;AAAA,QACf,mBAAM,GAAG,IAAI;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,OAAO,QAAQ;AACZ,cAAI,UAAU,KAAM,UAAS,KAAK;AAClC,mBAAS,mBAAM,GAAG,GAAG,CAAC;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,cACI,QACA,MACA,MACA,SAAiB,2CACH;AACd,WAAO,IAAI,QAAe,CAAC,UAAU,aAAa;AAC9C,WAAK,QAAQ;AAAA,QACT;AAAA,QACA,mBAAM,GAAG,MAAM;AAAA,QACf,mBAAM,GAAG,IAAI;AAAA,QACb,mBAAM,GAAG,IAAI;AAAA,QACb;AAAA,QACA,CAAC,OAAO,QAAQ;AACZ,cAAI,UAAU,KAAM,UAAS,KAAK;AAClC,mBAAS,mBAAM,GAAG,GAAG,CAAC;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,SAAS,KAAY,MAAoB;AACrC,UAAM,OAAO,KAAK,QAAQ,WAAW,qCAAuB,mBAAM,GAAG,GAAG,CAAC;AACzE,SAAK,OAAO,mBAAM,GAAG,IAAI,CAAC;AAC1B,WAAO,mBAAM,GAAG,KAAK,OAAO,CAAC;AAAA,EACjC;AAAA,EAEA,UAAU,YAAwB,MAAuB,cAAiC,cAAqB;AAC3G,UAAM,SAAS,KAAK,QAAQ,WAAW,mCAAqB;AAC5D,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,WAAK,QAAQ,WAAS,OAAO,OAAO,mBAAM,GAAG,KAAK,CAAC,CAAC;AAAA,IACxD,OAAO;AACH,aAAO,OAAO,mBAAM,GAAG,IAAI,CAAC;AAAA,IAChC;AACA,WAAO,mBAAM;AAAA,MACT,OAAO,KAAK;AAAA,QACR,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEA,YAAY,WAAuB,MAAa,WAAkB,cAAiC,cAAc;AAC7G,UAAM,WAAW,KAAK,QAAQ,aAAa,mCAAqB;AAChE,aAAS,OAAO,mBAAM,GAAG,IAAI,CAAC;AAC9B,UAAM,UAAU,SAAS;AAAA,MACrB;AAAA,QACI,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACJ;AAAA,MACA,mBAAM,GAAG,SAAS;AAAA,IACtB;AACA,QAAI,CAAC,QAAS,OAAM,IAAI,qCAAkB,+BAA+B;AAAA,EAC7E;AAAA,EAEA,gBAAgB;AAEZ,UAAM,OAAO,KAAK,QAAQ,WAAW,6BAAe;AACpD,SAAK,aAAa;AAIlB,UAAM,aAAa,IAAI,WAAW,iCAAmB;AACrD,UAAM,iBAAiB,KAAK,cAAc;AAC1C,eAAW,IAAI,gBAAgB,oCAAsB,eAAe,MAAM;AAE1E,eAAO,uBAAW,YAAY,EAAE,WAAW,mBAAM,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC;AAAA,EAC9E;AAAA,EAEA,iBAAiB,KAAiB,SAA2B;AACzD,UAAM,OAAO,KAAK,QAAQ,WAAW,6BAAe;AACpD,SAAK,cAAc,mBAAM,GAAG,IAAI,WAAW,CAAC;AAE5C,WAAO,mBAAM,GAAG,KAAK,cAAc,mBAAM,GAAG,QAAQ,UAAU,CAAC,CAAC;AAAA,EACpE;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
7
|
import { Bytes } from "#util/Bytes.js";
|
|
8
|
+
import { MaybePromise } from "#util/Promises.js";
|
|
8
9
|
import { Crypto, CryptoDsaEncoding } from "./Crypto.js";
|
|
9
10
|
import { PrivateKey, PublicKey } from "./Key.js";
|
|
10
11
|
import { WebCrypto } from "./WebCrypto.js";
|
|
@@ -29,7 +30,7 @@ export declare class StandardCrypto extends Crypto {
|
|
|
29
30
|
computeSha256(buffer: Bytes | Bytes[]): Promise<ArrayBuffer>;
|
|
30
31
|
createPbkdf2Key(secret: Bytes, salt: Bytes, iteration: number, keyLength: number): Promise<ArrayBuffer>;
|
|
31
32
|
createHkdfKey(secret: Bytes, salt: Bytes, info: Bytes, length?: number): Promise<Bytes>;
|
|
32
|
-
signHmac(secret: Bytes, data: Bytes):
|
|
33
|
+
signHmac(secret: Bytes, data: Bytes): MaybePromise<Bytes>;
|
|
33
34
|
signEcdsa(key: JsonWebKey, data: Bytes | Bytes[], dsaEncoding?: CryptoDsaEncoding): Promise<AllowSharedBufferSource>;
|
|
34
35
|
verifyEcdsa(key: JsonWebKey, data: Bytes, signature: Bytes, dsaEncoding?: CryptoDsaEncoding): Promise<void>;
|
|
35
36
|
createKeyPair(): Promise<PrivateKey>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,MAAM,EAA+B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAA2B,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAuB3C;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;;IACtC,kBAAkB,SAAQ;gBAId,MAAM,GAAE,SAA6B;IAYjD,SAAS,KAAK,MAAM,iBAEnB;IAED,MAAM,CAAC,QAAQ;IAIf,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAMlC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK;IASrE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK;IASrE,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE;IAO/B,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAchF,aAAa,CACf,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,MAAoC,GAC7C,OAAO,CAAC,KAAK,CAAC;IAcjB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IAMnD,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA+BjF,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,iBAAiB;IAgC3F,aAAa;cAaH,WAAW;IAkBrB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;cAiC3D,SAAS,CACrB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,GAAG,KAAK,EAC3B,SAAS,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,eAAe,EAC/G,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;CAQzC"}
|
|
@@ -122,9 +122,10 @@ class StandardCrypto extends import_Crypto.Crypto {
|
|
|
122
122
|
8 * length
|
|
123
123
|
);
|
|
124
124
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
signHmac(secret, data) {
|
|
126
|
+
return this.importKey("raw", secret, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]).then(
|
|
127
|
+
(key) => this.#subtle.sign("HMAC", key, import_Bytes.Bytes.exclusive(data))
|
|
128
|
+
);
|
|
128
129
|
}
|
|
129
130
|
async signEcdsa(key, data, dsaEncoding) {
|
|
130
131
|
if (Array.isArray(data)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/StandardCrypto.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,sBAA+C;AAC/C,yBAA4B;AAC5B,yBAAoC;AACpC,mBAAsB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["name"]
|
|
6
6
|
}
|
|
@@ -8,6 +8,7 @@ export * from "./CryptoConstants.js";
|
|
|
8
8
|
export * from "./CryptoError.js";
|
|
9
9
|
export * from "./Key.js";
|
|
10
10
|
export * from "./MockCrypto.js";
|
|
11
|
+
export * from "./NodeJsStyleCrypto.js";
|
|
11
12
|
export * from "./Spake2p.js";
|
|
12
13
|
export * from "./StandardCrypto.js";
|
|
13
14
|
export * from "./WebCrypto.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
package/dist/cjs/crypto/index.js
CHANGED
|
@@ -20,6 +20,7 @@ __reExport(crypto_exports, require("./CryptoConstants.js"), module.exports);
|
|
|
20
20
|
__reExport(crypto_exports, require("./CryptoError.js"), module.exports);
|
|
21
21
|
__reExport(crypto_exports, require("./Key.js"), module.exports);
|
|
22
22
|
__reExport(crypto_exports, require("./MockCrypto.js"), module.exports);
|
|
23
|
+
__reExport(crypto_exports, require("./NodeJsStyleCrypto.js"), module.exports);
|
|
23
24
|
__reExport(crypto_exports, require("./Spake2p.js"), module.exports);
|
|
24
25
|
__reExport(crypto_exports, require("./StandardCrypto.js"), module.exports);
|
|
25
26
|
__reExport(crypto_exports, require("./WebCrypto.js"), module.exports);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,wBANd;AAOA,2BAAc,iCAPd;AAQA,2BAAc,6BARd;AASA,2BAAc,qBATd;AAUA,2BAAc,4BAVd;AAWA,2BAAc,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,wBANd;AAOA,2BAAc,iCAPd;AAQA,2BAAc,6BARd;AASA,2BAAc,qBATd;AAUA,2BAAc,4BAVd;AAWA,2BAAc,mCAXd;AAYA,2BAAc,yBAZd;AAaA,2BAAc,gCAbd;AAcA,2BAAc,2BAdd;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/crypto/Key.d.ts
CHANGED
|
@@ -144,7 +144,6 @@ export interface PrivateKey extends PublicKey {
|
|
|
144
144
|
privateKey: Bytes;
|
|
145
145
|
keyPair: BinaryKeyPair;
|
|
146
146
|
keyPairBits: BinaryKeyPair;
|
|
147
|
-
sharedSecretFor(peerKey: PublicKey): Bytes;
|
|
148
147
|
}
|
|
149
148
|
/**
|
|
150
149
|
* Symmetric key.
|
|
@@ -170,10 +169,12 @@ export declare function PublicKey(publicKey: Bytes, options?: Partial<Key>): Pub
|
|
|
170
169
|
* Symmetric key factory.
|
|
171
170
|
*/
|
|
172
171
|
export declare function SymmetricKey(privateKey: Bytes, options?: Partial<Key>): Key;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
172
|
+
export declare namespace Key {
|
|
173
|
+
/**
|
|
174
|
+
* Diffie-Hellman shared secret computation.
|
|
175
|
+
*
|
|
176
|
+
* We provide this for platforms without a native implementation.
|
|
177
|
+
*/
|
|
178
|
+
function sharedSecretFor(key: PrivateKey, peerKey: PublicKey): Bytes;
|
|
179
|
+
}
|
|
179
180
|
//# sourceMappingURL=Key.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AA6BzC,oBAAY,OAAO;IACf,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;CACd;AAED,oBAAY,SAAS;IACjB,IAAI,UAAU;IACd,IAAI,UAAU;IACd,IAAI,UAAU;CACjB;AAeD,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,WAAW,GAAI,SAAQ,UAAU;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC;IAEjB;;OAEG;IACH,UAAU,EAAE,KAAK,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,SAAS;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,KAAK,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,aAAa,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,GAAG;IACrC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC;CACb;AA2OD;;GAEG;AACH,wBAAgB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,OAsG3C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,KAAK,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAanE,UAAU,CAC1B;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAKxD,SAAS,CAClB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,OAMrE;AAED,yBAAiB,GAAG,CAAC;IACjB;;;;OAIG;IACH,SAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,CAE1E;CACJ"}
|
package/dist/esm/crypto/Key.js
CHANGED
|
@@ -308,8 +308,7 @@ function PrivateKey(privateKey, options) {
|
|
|
308
308
|
type: "EC" /* EC */,
|
|
309
309
|
privateKey: priv,
|
|
310
310
|
publicKey: pub,
|
|
311
|
-
...options
|
|
312
|
-
sharedSecretFor
|
|
311
|
+
...options
|
|
313
312
|
});
|
|
314
313
|
}
|
|
315
314
|
function PublicKey(publicKey, options) {
|
|
@@ -326,16 +325,18 @@ function SymmetricKey(privateKey, options) {
|
|
|
326
325
|
...options
|
|
327
326
|
});
|
|
328
327
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
328
|
+
((Key2) => {
|
|
329
|
+
function sharedSecretFor(key, peerKey) {
|
|
330
|
+
return Bytes.of(getSharedSecret(Bytes.of(key.privateBits), Bytes.of(peerKey.publicBits)));
|
|
331
|
+
}
|
|
332
|
+
Key2.sharedSecretFor = sharedSecretFor;
|
|
333
|
+
})(Key || (Key = {}));
|
|
332
334
|
export {
|
|
333
335
|
CurveType,
|
|
334
336
|
Key,
|
|
335
337
|
KeyType,
|
|
336
338
|
PrivateKey,
|
|
337
339
|
PublicKey,
|
|
338
|
-
SymmetricKey
|
|
339
|
-
sharedSecretFor
|
|
340
|
+
SymmetricKey
|
|
340
341
|
};
|
|
341
342
|
//# sourceMappingURL=Key.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Key.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAS,UAAmB,eAAe;AAC3C,SAAS,aAAa,2BAA2B;AACjD,SAAS,aAAa;AACtB,SAAS,UAAU;AACnB,SAAS,qBAAqB;AAE9B,MAAM;AAAA,EACF;AAAA,EACA,MAAM,EAAE,OAAO,gBAAgB;AACnC,IAAI;AAEJ,MAAM,WAAW;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,QAAK;AACL,EAAAA,SAAA,SAAM;AACN,EAAAA,SAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,YAAL,kBAAKC,eAAL;AACH,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AAHC,SAAAA;AAAA,GAAA;AAMZ,IAAK,eAAL,kBAAKC,kBAAL;AACI,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AAJZ,SAAAA;AAAA,GAAA;AAOL,MAAM,cAAc;AAAA,EAChB,CAAC,mCAAuB,GAAG;AAAA,EAC3B,CAAC,6BAAuB,GAAG;AAAA,EAC3B,CAAC,6BAAuB,GAAG;AAC/B;
|
|
5
|
-
"names": ["KeyType", "CurveType", "Asn1ObjectID", "Translators", "publicBits", "Aliases", "Base64Codecs", "AssertedAliases"]
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAS,UAAmB,eAAe;AAC3C,SAAS,aAAa,2BAA2B;AACjD,SAAS,aAAa;AACtB,SAAS,UAAU;AACnB,SAAS,qBAAqB;AAE9B,MAAM;AAAA,EACF;AAAA,EACA,MAAM,EAAE,OAAO,gBAAgB;AACnC,IAAI;AAEJ,MAAM,WAAW;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,QAAK;AACL,EAAAA,SAAA,SAAM;AACN,EAAAA,SAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,YAAL,kBAAKC,eAAL;AACH,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AAHC,SAAAA;AAAA,GAAA;AAMZ,IAAK,eAAL,kBAAKC,kBAAL;AACI,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AAJZ,SAAAA;AAAA,GAAA;AAOL,MAAM,cAAc;AAAA,EAChB,CAAC,mCAAuB,GAAG;AAAA,EAC3B,CAAC,6BAAuB,GAAG;AAAA,EAC3B,CAAC,6BAAuB,GAAG;AAC/B;AAmKA,SAAS,gBAAgB,MAAc,MAA2B,SAAiB;AAC/E,QAAM,aACF,QACA,KAAK,SAAS,QAAQ,WACtB,KAAK,UACL,KAAK,OAAO,eAAe,KAC3B,MAAM,GAAG,KAAK,MAAM,EAAE,CAAC;AAE3B,MAAI,eAAe,SAAS;AACxB,UAAM,IAAI,cAAc,GAAG,IAAI,uBAAuB;AAAA,EAC1D;AACJ;AAEA,SAAS,eAAe,MAAc,MAAgB;AAClD,QAAM,KAAK,QAAQ,KAAK,SAAS,QAAQ,oBAAoB,KAAK,QAAQ,aAAa,KAAK,KAAK;AAEjG,MAAI,GAAI,QAAO;AAEf,QAAM,IAAI,cAAc,qBAAqB,IAAI,MAAM;AAC3D;AAEA,SAAS,YAAY,MAAc,MAAgB;AAC/C,QAAM,MAAM,eAAe,MAAM,IAAI;AACrC,QAAM,QAAc,YAAa,MAAM,MAAM,GAAG,CAAC;AACjD,MAAI,MAAO,QAAO;AAClB,QAAM,IAAI,cAAc,eAAe,IAAI,WAAW;AAC1D;AAEA,SAAS,UAAU,MAAc,MAAgB,UAAmB,QAAQ,aAAa;AACrF,QAAM,MAAM,QAAQ,KAAK,SAAS,WAAW,KAAK,QAAQ,aAAa,KAAK,KAAK;AAEjF,MAAI,IAAK,QAAO;AAEhB,QAAM,IAAI,YAAY,WAAW,IAAI,WAAW;AACpD;AAGA,IAAU;AAAA,CAAV,CAAUC,iBAAV;AAEW,EAAMA,aAAA,OAAO;AAAA,IAChB,KAAK,SAAqB,OAAc;AACpC,YAAM,UAAU,SAAS,OAAO,KAAK;AAGrC,YAAM,cAAc,SAAS,YAAY,CAAC;AAC1C,sBAAgB,SAAS,aAAa,CAAC;AAGvC,YAAM,YAAY,SAAS,YAAY,CAAC,GAAG,YAAY,CAAC;AACxD,YAAM,QAAQ,YAAY,SAAS,SAAS;AAG5C,YAAM,UAAU,SAAS,YAAY,CAAC;AACtC,YAAM,MAAM,UAAU,SAAS,OAAO;AAEtC,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,cAAc;AAAA,IACvB;AAAA,IAEA,KAAK,WAAY;AACb,YAAM,IAAI,oBAAoB,6BAA6B;AAAA,IAC/D;AAAA,EACJ;AAGO,EAAMA,aAAA,QAAQ;AAAA,IACjB,KAAK,SAAqB,OAAc;AACpC,YAAM,QAAQ,SAAS,OAAO,KAAK;AAGnC,YAAM,UAAU,OAAO,YAAY,CAAC;AACpC,sBAAgB,WAAW,SAAS,CAAC;AAGrC,YAAM,oBAAoB,OAAO,YAAY,CAAC,GAAG;AACjD,YAAM,YAAY,eAAe,WAAW,oBAAoB,CAAC,CAAC;AAClE,UAAI,MAAM,MAAM,SAAS,MAAM,oCAA0B;AACrD,cAAM,IAAI,cAAc,0CAA0C;AAAA,MACtE;AAGA,YAAM,QAAQ,YAAY,WAAW,oBAAoB,CAAC,CAAC;AAG3D,YAAM,aAAa,OAAO,YAAY,CAAC,EAAE;AACzC,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,cAAM,IAAI,cAAc,qBAAqB;AAAA,MACjD;AACA,YAAM,QAAQ,SAAS,OAAO,UAAU;AACxC,YAAM,MAAM,UAAU,WAAW,OAAO,YAAY,CAAC,CAAC;AAEtD,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,cAAc;AAAA,IACvB;AAAA,IAEA,KAAK,WAAY;AACb,YAAM,IAAI,oBAAoB,gCAAgC;AAAA,IAClE;AAAA,EACJ;AAGO,EAAMA,aAAA,OAAO;AAAA,IAChB,KAAK,SAAqB,OAAc;AACpC,YAAM,UAAU,SAAS,OAAO,KAAK;AAErC,YAAM,oBAAoB,SAAS,YAAY,CAAC,GAAG;AAGnD,YAAM,YAAY,eAAe,QAAQ,oBAAoB,CAAC,CAAC;AAC/D,UAAI,MAAM,MAAM,SAAS,MAAM,oCAA0B;AACrD,cAAM,IAAI,cAAc,uCAAuC;AAAA,MACnE;AAGA,YAAM,QAAQ,YAAY,QAAQ,oBAAoB,CAAC,CAAC;AAGxD,YAAM,MAAM,UAAU,QAAQ,SAAS,YAAY,CAAC,GAAG,QAAQ,SAAS;AAExE,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,aAAa;AAAA,IACtB;AAAA,IAEA,KAAK,WAAY;AACb,YAAM,IAAI,oBAAoB,6BAA6B;AAAA,IAC/D;AAAA,EACJ;AAGO,EAAMA,aAAA,aAAa;AAAA,IACtB,KAAK,SAAqB,OAAc;AACpC,YAAM,OAAO,MAAM,GAAG,KAAK;AAC3B,UAAI,EAAE,KAAK,SAAS,IAAI;AACpB,cAAM,IAAI,cAAc,6BAA6B;AAAA,MACzD;AAEA,cAAQ,KAAK,CAAC,GAAG;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AACD,gBAAM,IAAI,cAAc,oCAAoC;AAAA,QAEhE,KAAK;AACD;AAAA,QAEJ,KAAK;AACD,gBAAM,IAAI,cAAc,qCAAqC;AAAA,MACrE;AAEA,YAAM,oBAAoB,KAAK,SAAS,KAAK;AAE7C,iBAAW,MAAM,gBAAgB;AAEjC,WAAK,OAAO;AACZ,WAAK,QAAQ,KAAK,MAAM,GAAG,mBAAmB,CAAC;AAC/C,WAAK,QAAQ,KAAK,MAAM,mBAAmB,CAAC;AAAA,IAChD;AAAA,IAEA,KAAK,WAAqB;AACtB,UAAI,KAAK,UAAU,UAAa,KAAK,UAAU,QAAW;AACtD,eAAO;AAAA,MACX;AAEA,aAAO,MAAM,OAAO,IAAI,WAAW,CAAC,CAAI,CAAC,GAAG,KAAK,OAAO,KAAK,KAAK;AAAA,IACtE;AAAA,EACJ;AAGO,EAAMA,aAAA,cAAc;AAAA,IACvB,KAAK,SAAqB,SAAwB;AAC9C,WAAK,aAAa,QAAQ;AAC1B,WAAK,cAAc,QAAQ;AAAA,IAC/B;AAAA,IAEA,KAAK,WAAgD;AACjD,YAAMC,cAAa,KAAK;AACxB,YAAM,cAAc,KAAK;AACzB,UAAIA,gBAAe,UAAa,gBAAgB,QAAW;AACvD;AAAA,MACJ;AACA,aAAO;AAAA,QACH,WAAW,MAAM,GAAGA,WAAU;AAAA,QAC9B,YAAY,MAAM,GAAG,WAAW;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ;AAAA,GAtJM;AAyJV,IAAK,UAAL,kBAAKC,aAAL;AACI,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,UAAO;AACP,EAAAA,SAAA,gBAAa;AACb,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,iBAAc;AANb,SAAAA;AAAA,GAAA;AASL,IAAK,eAAL,kBAAKC,kBAAL;AACI,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AAHP,SAAAA;AAAA,GAAA;AAML,IAAK,kBAAL,kBAAKC,qBAAL;AACI,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,aAAU;AAHT,SAAAA;AAAA,GAAA;AAML,SAAS,WAAW,KAAU,OAAe;AACzC,MAAI,CAAC,IAAI,OAAO;AAEZ,YAAQ,OAAO;AAAA,MACX,KAAK;AACD,YAAI,QAAQ;AACZ;AAAA,MAEJ,KAAK;AACD,YAAI,QAAQ;AACZ;AAAA,MAEJ,KAAK;AACD,YAAI,QAAQ;AACZ;AAAA,MAEJ;AACI,cAAM,IAAI,cAAc,4CAA4C,KAAK,EAAE;AAAA,IACnF;AAAA,EACJ;AACJ;AAKO,SAAS,IAAI,YAA0B;AAC1C,QAAM,OAAO,CAAC;AAGd,aAAW,OAAO,UAAU;AACxB,QAAK,WAAmB,GAAG,MAAM,OAAW,CAAC,KAAa,GAAG,IAAK,WAAmB,GAAG;AAAA,EAC5F;AACA,WAAS,OAAO,MAAc;AAC1B,UAAM,IAAI,OAAO,yBAAyB,YAAY,IAAI;AAC1D,QAAI,KAAK,EAAE,UAAU,QAAW;AAC5B,MAAC,KAAa,IAAI,IAAI,EAAE;AAAA,IAC5B;AAAA,EACJ;AAKA,SAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,MAAM,MAAM;AACjD,WAAO,eAAe,MAAM,OAAO;AAAA,MAC/B,KAAK,MAAM,KAAK,MAAM;AAAA,MACtB,KAAK,WAAU,KAAK,MAAM,IAAI;AAAA,IAClC,CAAC;AACD,WAAO,KAAK;AAAA,EAChB,CAAC;AAGD,SAAO,QAAQ,YAAY,EAAE,QAAQ,CAAC,CAAC,OAAO,MAAM,MAAM;AACtD,WAAO,eAAe,MAAM,OAAO;AAAA,MAC/B,KAAK,MAAM,KAAK,MAAM,MAAM,UAAa,OAAO,OAAO,KAAK,MAAM,CAAC;AAAA,MACnE,KAAK,WAAU,KAAK,MAAM,IAAI,UAAU,SAAY,SAAY,OAAO,OAAO,OAAO,IAAI;AAAA,IAC7F,CAAC;AACD,WAAO,KAAK;AAAA,EAChB,CAAC;AAGD,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,UAAU,MAAM;AACxD,WAAO,eAAe,MAAM,MAAM,UAAiB;AAAA,EACvD,CAAC;AAGD,SAAO,KAAK,WAAW,EAAE,QAAQ,UAAQ,OAAO,IAAI,CAAC;AAGrD,SAAO,QAAQ,eAAe,EAAE,QAAQ,CAAC,CAAC,OAAO,MAAM,MAAM;AACzD,WAAO,eAAe,MAAM,OAAO;AAAA,MAC/B,KAAK,MAAM;AACP,cAAM,SAAS,KAAK,MAAM;AAC1B,YAAI,WAAW,QAAW;AACtB,gBAAM,IAAI,cAAc,aAAa,MAAM,iBAAiB;AAAA,QAChE;AACA,eAAO;AAAA,MACX;AAAA,MAEA,KAAK,CAAC,UAAe;AACjB,aAAK,MAAM,IAAI;AAAA,MACnB;AAAA,IACJ,CAAC;AAED,WAAO,KAAK;AAAA,EAChB,CAAC;AAGD,WAAS,0BAA0B;AAC/B,QAAI,KAAK,SAAS,cAAY,OAAM,IAAI,cAAc,8CAA8C;AACpG,QAAI,CAAC,KAAK,QAAS,OAAM,IAAI,cAAc,iDAAiD;AAE5F,UAAM,MAAM,KAAK;AACjB,QAAI;AAEJ,YAAQ,KAAK;AAAA,MACT,KAAK;AACD,oBAAY;AAIZ;AAAA,MAEJ;AACI,cAAM,IAAI,cAAc,8BAA8B,GAAG,EAAE;AAAA,IACnE;AAGA,UAAM,QAAQ,MAAM,eAAe,MAAM,GAAG,KAAK,UAAU,CAAC;AAG5D,SAAK,QAAQ,gBAAgB,MAAM,GAAG,SAAS;AAC/C,SAAK,QAAQ,gBAAgB,MAAM,GAAG,SAAS;AAAA,EACnD;AAEA,MAAI,KAAK,SAAS,eAAY;AAC1B,QAAI,KAAK,GAAG;AACR,iBAAW,MAAM,KAAK,WAAW,UAAU;AAAA,IAC/C,WAAW,KAAK,OAAO;AACnB,iBAAW,MAAM,KAAK,MAAM,UAAU;AAAA,IAC1C;AAEA,QAAI,KAAK,MAAM,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI;AAChC,8BAAwB;AAAA,IAC5B;AAAA,EACJ;AAEA,SAAO;AACX;AAKO,SAAS,WAAW,YAAmC,SAAwB;AAClF,MAAI,MAAM;AACV,MAAI,MAAM,QAAQ,UAAU,GAAG;AAC3B,WAAO;AAAA,EACX,OAAO;AACH,WAAO,WAAW;AAClB,UAAM,WAAW;AAAA,EACrB;AACA,SAAO,IAAI;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,GAAG;AAAA,EACP,CAAQ;AACZ;AAKO,SAAS,UAAU,WAAkB,SAAwB;AAChE,SAAO,IAAI;AAAA,IACP,MAAM;AAAA,IACN;AAAA,IACA,GAAG;AAAA,EACP,CAAC;AACL;AAKO,SAAS,aAAa,YAAmB,SAAwB;AACpE,SAAO,IAAI;AAAA,IACP,MAAM;AAAA,IACN;AAAA,IACA,GAAG;AAAA,EACP,CAAC;AACL;AAAA,CAEO,CAAUC,SAAV;AAMI,WAAS,gBAAgB,KAAiB,SAA2B;AACxE,WAAO,MAAM,GAAG,gBAAgB,MAAM,GAAG,IAAI,WAAW,GAAG,MAAM,GAAG,QAAQ,UAAU,CAAC,CAAC;AAAA,EAC5F;AAFO,EAAAA,KAAS;AAAA,GANH;",
|
|
5
|
+
"names": ["KeyType", "CurveType", "Asn1ObjectID", "Translators", "publicBits", "Aliases", "Base64Codecs", "AssertedAliases", "Key"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Bytes } from "#util/Bytes.js";
|
|
7
|
+
import { Identity } from "#util/Type.js";
|
|
8
|
+
import { Crypto, CryptoDsaEncoding } from "./Crypto.js";
|
|
9
|
+
import { PrivateKey, PublicKey } from "./Key.js";
|
|
10
|
+
import type * as NodeJsCryptoApi from "node:crypto";
|
|
11
|
+
/**
|
|
12
|
+
* A crypto API implemented in the style of Node.js.
|
|
13
|
+
*/
|
|
14
|
+
export interface NodeJsCryptoApiLike extends Identity<typeof NodeJsCryptoApi> {
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A crypto implementation that uses the Node.js crypto API.
|
|
18
|
+
*
|
|
19
|
+
* It is Node.js "style" because there are many packages that emulate the Node.js API. As of now (mid-2025) these are
|
|
20
|
+
* sometimes more mature than the available Web Crypto implementation.
|
|
21
|
+
*
|
|
22
|
+
* This module does not import the Node.js crypto implementation directly. You must provide a crypto implementation to
|
|
23
|
+
* use it.
|
|
24
|
+
*/
|
|
25
|
+
export declare class NodeJsStyleCrypto extends Crypto {
|
|
26
|
+
#private;
|
|
27
|
+
implementationName: string;
|
|
28
|
+
constructor(crypto: NodeJsCryptoApiLike);
|
|
29
|
+
encrypt(key: Bytes, data: Bytes, nonce: Bytes, aad?: Bytes): Bytes;
|
|
30
|
+
decrypt(key: Bytes, encrypted: Bytes, nonce: Bytes, aad?: Bytes): Bytes;
|
|
31
|
+
randomBytes(length: number): Bytes;
|
|
32
|
+
ecdhGeneratePublicKey(): {
|
|
33
|
+
publicKey: Bytes;
|
|
34
|
+
ecdh: any;
|
|
35
|
+
};
|
|
36
|
+
ecdhGeneratePublicKeyAndSecret(peerPublicKey: Bytes): {
|
|
37
|
+
publicKey: Bytes;
|
|
38
|
+
sharedSecret: Bytes;
|
|
39
|
+
};
|
|
40
|
+
computeSha256(data: Bytes | Bytes[]): Bytes;
|
|
41
|
+
createPbkdf2Key(secret: Bytes, salt: Bytes, iteration: number, keyLength: number): Promise<Bytes>;
|
|
42
|
+
createHkdfKey(secret: Bytes, salt: Bytes, info: Bytes, length?: number): Promise<Bytes>;
|
|
43
|
+
signHmac(key: Bytes, data: Bytes): Bytes;
|
|
44
|
+
signEcdsa(privateKey: JsonWebKey, data: Bytes | Bytes[], dsaEncoding?: CryptoDsaEncoding): Bytes;
|
|
45
|
+
verifyEcdsa(publicKey: JsonWebKey, data: Bytes, signature: Bytes, dsaEncoding?: CryptoDsaEncoding): void;
|
|
46
|
+
createKeyPair(): PrivateKey;
|
|
47
|
+
generateDhSecret(key: PrivateKey, peerKey: PublicKey): Bytes;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=NodeJsStyleCrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeJsStyleCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/NodeJsStyleCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACH,MAAM,EAON,iBAAiB,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,KAAK,KAAK,eAAe,MAAM,aAAa,CAAC;AAKpD;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,OAAO,eAAe,CAAC;CAAG;AAEhF;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,MAAM;;IACzC,kBAAkB,SAAa;gBAInB,MAAM,EAAE,mBAAmB;IAMvC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK;IAYlE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK;IAmBvE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAIlC,qBAAqB,IAAI;QAAE,SAAS,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;IAMxD,8BAA8B,CAAC,aAAa,EAAE,KAAK,GAAG;QAClD,SAAS,EAAE,KAAK,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC;KACvB;IASD,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,KAAK;IAU3C,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAgBjG,aAAa,CACT,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,MAAoC,GAC7C,OAAO,CAAC,KAAK,CAAC;IAgBjB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK;IAMxC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,WAAW,GAAE,iBAAgC,GAAG,KAAK;IAiB9G,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAE,iBAAgC;IAe/G,aAAa;IAcb,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK;CAM/D"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Bytes } from "#util/Bytes.js";
|
|
7
|
+
import { asError } from "#util/Error.js";
|
|
8
|
+
import {
|
|
9
|
+
Crypto,
|
|
10
|
+
CRYPTO_AUTH_TAG_LENGTH,
|
|
11
|
+
CRYPTO_EC_CURVE,
|
|
12
|
+
CRYPTO_EC_KEY_BYTES,
|
|
13
|
+
CRYPTO_ENCRYPT_ALGORITHM,
|
|
14
|
+
CRYPTO_HASH_ALGORITHM,
|
|
15
|
+
CRYPTO_SYMMETRIC_KEY_LENGTH
|
|
16
|
+
} from "./Crypto.js";
|
|
17
|
+
import { CryptoDecryptError, CryptoVerifyError } from "./CryptoError.js";
|
|
18
|
+
import { PrivateKey } from "./Key.js";
|
|
19
|
+
class NodeJsStyleCrypto extends Crypto {
|
|
20
|
+
implementationName = "Node.js";
|
|
21
|
+
#crypto;
|
|
22
|
+
constructor(crypto) {
|
|
23
|
+
super();
|
|
24
|
+
this.#crypto = crypto;
|
|
25
|
+
}
|
|
26
|
+
encrypt(key, data, nonce, aad) {
|
|
27
|
+
const cipher = this.#crypto.createCipheriv(CRYPTO_ENCRYPT_ALGORITHM, Bytes.of(key), Bytes.of(nonce), {
|
|
28
|
+
authTagLength: CRYPTO_AUTH_TAG_LENGTH
|
|
29
|
+
});
|
|
30
|
+
if (aad !== void 0) {
|
|
31
|
+
cipher.setAAD(Bytes.of(aad), { plaintextLength: data.byteLength });
|
|
32
|
+
}
|
|
33
|
+
const encrypted = cipher.update(Bytes.of(data));
|
|
34
|
+
cipher.final();
|
|
35
|
+
return Bytes.concat(Bytes.of(encrypted), Bytes.of(cipher.getAuthTag()));
|
|
36
|
+
}
|
|
37
|
+
decrypt(key, encrypted, nonce, aad) {
|
|
38
|
+
const cipher = this.#crypto.createDecipheriv(CRYPTO_ENCRYPT_ALGORITHM, Bytes.of(key), Bytes.of(nonce), {
|
|
39
|
+
authTagLength: CRYPTO_AUTH_TAG_LENGTH
|
|
40
|
+
});
|
|
41
|
+
const data = Bytes.of(encrypted);
|
|
42
|
+
const plaintextLength = data.length - CRYPTO_AUTH_TAG_LENGTH;
|
|
43
|
+
if (aad !== void 0) {
|
|
44
|
+
cipher.setAAD(Bytes.of(aad), { plaintextLength });
|
|
45
|
+
}
|
|
46
|
+
cipher.setAuthTag(data.slice(plaintextLength));
|
|
47
|
+
const result = cipher.update(data.slice(0, plaintextLength));
|
|
48
|
+
try {
|
|
49
|
+
cipher.final();
|
|
50
|
+
} catch (e) {
|
|
51
|
+
throw new CryptoDecryptError(`${CRYPTO_ENCRYPT_ALGORITHM} decryption failed: ${asError(e).message}`);
|
|
52
|
+
}
|
|
53
|
+
return Bytes.of(result);
|
|
54
|
+
}
|
|
55
|
+
randomBytes(length) {
|
|
56
|
+
return Bytes.of(this.#crypto.randomBytes(length));
|
|
57
|
+
}
|
|
58
|
+
ecdhGeneratePublicKey() {
|
|
59
|
+
const ecdh = this.#crypto.createECDH(CRYPTO_EC_CURVE);
|
|
60
|
+
ecdh.generateKeys();
|
|
61
|
+
return { publicKey: Bytes.of(ecdh.getPublicKey()), ecdh };
|
|
62
|
+
}
|
|
63
|
+
ecdhGeneratePublicKeyAndSecret(peerPublicKey) {
|
|
64
|
+
const ecdh = this.#crypto.createECDH(CRYPTO_EC_CURVE);
|
|
65
|
+
ecdh.generateKeys();
|
|
66
|
+
return {
|
|
67
|
+
publicKey: Bytes.of(ecdh.getPublicKey()),
|
|
68
|
+
sharedSecret: Bytes.of(ecdh.computeSecret(Bytes.of(peerPublicKey)))
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
computeSha256(data) {
|
|
72
|
+
const hasher = this.#crypto.createHash(CRYPTO_HASH_ALGORITHM);
|
|
73
|
+
if (Array.isArray(data)) {
|
|
74
|
+
data.forEach((chunk) => hasher.update(Bytes.of(chunk)));
|
|
75
|
+
} else {
|
|
76
|
+
hasher.update(Bytes.of(data));
|
|
77
|
+
}
|
|
78
|
+
return Bytes.of(hasher.digest());
|
|
79
|
+
}
|
|
80
|
+
createPbkdf2Key(secret, salt, iteration, keyLength) {
|
|
81
|
+
return new Promise((resolver, rejecter) => {
|
|
82
|
+
this.#crypto.pbkdf2(
|
|
83
|
+
Bytes.of(secret),
|
|
84
|
+
Bytes.of(salt),
|
|
85
|
+
iteration,
|
|
86
|
+
keyLength,
|
|
87
|
+
CRYPTO_HASH_ALGORITHM,
|
|
88
|
+
(error, key) => {
|
|
89
|
+
if (error !== null) rejecter(error);
|
|
90
|
+
resolver(Bytes.of(key));
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
createHkdfKey(secret, salt, info, length = CRYPTO_SYMMETRIC_KEY_LENGTH) {
|
|
96
|
+
return new Promise((resolver, rejecter) => {
|
|
97
|
+
this.#crypto.hkdf(
|
|
98
|
+
CRYPTO_HASH_ALGORITHM,
|
|
99
|
+
Bytes.of(secret),
|
|
100
|
+
Bytes.of(salt),
|
|
101
|
+
Bytes.of(info),
|
|
102
|
+
length,
|
|
103
|
+
(error, key) => {
|
|
104
|
+
if (error !== null) rejecter(error);
|
|
105
|
+
resolver(Bytes.of(key));
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
signHmac(key, data) {
|
|
111
|
+
const hmac = this.#crypto.createHmac(CRYPTO_HASH_ALGORITHM, Bytes.of(key));
|
|
112
|
+
hmac.update(Bytes.of(data));
|
|
113
|
+
return Bytes.of(hmac.digest());
|
|
114
|
+
}
|
|
115
|
+
signEcdsa(privateKey, data, dsaEncoding = "ieee-p1363") {
|
|
116
|
+
const signer = this.#crypto.createSign(CRYPTO_HASH_ALGORITHM);
|
|
117
|
+
if (Array.isArray(data)) {
|
|
118
|
+
data.forEach((chunk) => signer.update(Bytes.of(chunk)));
|
|
119
|
+
} else {
|
|
120
|
+
signer.update(Bytes.of(data));
|
|
121
|
+
}
|
|
122
|
+
return Bytes.of(
|
|
123
|
+
signer.sign({
|
|
124
|
+
key: privateKey,
|
|
125
|
+
format: "jwk",
|
|
126
|
+
type: "pkcs8",
|
|
127
|
+
dsaEncoding
|
|
128
|
+
})
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
verifyEcdsa(publicKey, data, signature, dsaEncoding = "ieee-p1363") {
|
|
132
|
+
const verifier = this.#crypto.createVerify(CRYPTO_HASH_ALGORITHM);
|
|
133
|
+
verifier.update(Bytes.of(data));
|
|
134
|
+
const success = verifier.verify(
|
|
135
|
+
{
|
|
136
|
+
key: publicKey,
|
|
137
|
+
format: "jwk",
|
|
138
|
+
type: "spki",
|
|
139
|
+
dsaEncoding
|
|
140
|
+
},
|
|
141
|
+
Bytes.of(signature)
|
|
142
|
+
);
|
|
143
|
+
if (!success) throw new CryptoVerifyError("Signature verification failed");
|
|
144
|
+
}
|
|
145
|
+
createKeyPair() {
|
|
146
|
+
const ecdh = this.#crypto.createECDH(CRYPTO_EC_CURVE);
|
|
147
|
+
ecdh.generateKeys();
|
|
148
|
+
const privateKey = new Uint8Array(CRYPTO_EC_KEY_BYTES);
|
|
149
|
+
const nodePrivateKey = ecdh.getPrivateKey();
|
|
150
|
+
privateKey.set(nodePrivateKey, CRYPTO_EC_KEY_BYTES - nodePrivateKey.length);
|
|
151
|
+
return PrivateKey(privateKey, { publicKey: Bytes.of(ecdh.getPublicKey()) });
|
|
152
|
+
}
|
|
153
|
+
generateDhSecret(key, peerKey) {
|
|
154
|
+
const ecdh = this.#crypto.createECDH(CRYPTO_EC_CURVE);
|
|
155
|
+
ecdh.setPrivateKey(Bytes.of(key.privateBits));
|
|
156
|
+
return Bytes.of(ecdh.computeSecret(Bytes.of(peerKey.publicBits)));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
export {
|
|
160
|
+
NodeJsStyleCrypto
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=NodeJsStyleCrypto.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/crypto/NodeJsStyleCrypto.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa;AACtB,SAAS,eAAe;AAExB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AACP,SAAS,oBAAoB,yBAAyB;AACtD,SAAS,kBAA6B;AAsB/B,MAAM,0BAA0B,OAAO;AAAA,EAC1C,qBAAqB;AAAA,EAErB;AAAA,EAEA,YAAY,QAA6B;AACrC,UAAM;AAEN,SAAK,UAAU;AAAA,EACnB;AAAA,EAEA,QAAQ,KAAY,MAAa,OAAc,KAAoB;AAC/D,UAAM,SAAS,KAAK,QAAQ,eAAe,0BAA0B,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG;AAAA,MACjG,eAAe;AAAA,IACnB,CAAC;AACD,QAAI,QAAQ,QAAW;AACnB,aAAO,OAAO,MAAM,GAAG,GAAG,GAAG,EAAE,iBAAiB,KAAK,WAAW,CAAC;AAAA,IACrE;AACA,UAAM,YAAY,OAAO,OAAO,MAAM,GAAG,IAAI,CAAC;AAC9C,WAAO,MAAM;AACb,WAAO,MAAM,OAAO,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,WAAW,CAAC,CAAC;AAAA,EAC1E;AAAA,EAEA,QAAQ,KAAY,WAAkB,OAAc,KAAoB;AACpE,UAAM,SAAS,KAAK,QAAQ,iBAAiB,0BAA0B,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG;AAAA,MACnG,eAAe;AAAA,IACnB,CAAC;AACD,UAAM,OAAO,MAAM,GAAG,SAAS;AAC/B,UAAM,kBAAkB,KAAK,SAAS;AACtC,QAAI,QAAQ,QAAW;AACnB,aAAO,OAAO,MAAM,GAAG,GAAG,GAAG,EAAE,gBAAgB,CAAC;AAAA,IACpD;AACA,WAAO,WAAW,KAAK,MAAM,eAAe,CAAC;AAC7C,UAAM,SAAS,OAAO,OAAO,KAAK,MAAM,GAAG,eAAe,CAAC;AAC3D,QAAI;AACA,aAAO,MAAM;AAAA,IACjB,SAAS,GAAG;AACR,YAAM,IAAI,mBAAmB,GAAG,wBAAwB,uBAAuB,QAAQ,CAAC,EAAE,OAAO,EAAE;AAAA,IACvG;AACA,WAAO,MAAM,GAAG,MAAM;AAAA,EAC1B;AAAA,EAEA,YAAY,QAAuB;AAC/B,WAAO,MAAM,GAAG,KAAK,QAAQ,YAAY,MAAM,CAAC;AAAA,EACpD;AAAA,EAEA,wBAAyD;AACrD,UAAM,OAAO,KAAK,QAAQ,WAAW,eAAe;AACpD,SAAK,aAAa;AAClB,WAAO,EAAE,WAAW,MAAM,GAAG,KAAK,aAAa,CAAC,GAAG,KAAW;AAAA,EAClE;AAAA,EAEA,+BAA+B,eAG7B;AACE,UAAM,OAAO,KAAK,QAAQ,WAAW,eAAe;AACpD,SAAK,aAAa;AAClB,WAAO;AAAA,MACH,WAAW,MAAM,GAAG,KAAK,aAAa,CAAC;AAAA,MACvC,cAAc,MAAM,GAAG,KAAK,cAAc,MAAM,GAAG,aAAa,CAAC,CAAC;AAAA,IACtE;AAAA,EACJ;AAAA,EAEA,cAAc,MAA8B;AACxC,UAAM,SAAS,KAAK,QAAQ,WAAW,qBAAqB;AAC5D,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,WAAK,QAAQ,WAAS,OAAO,OAAO,MAAM,GAAG,KAAK,CAAC,CAAC;AAAA,IACxD,OAAO;AACH,aAAO,OAAO,MAAM,GAAG,IAAI,CAAC;AAAA,IAChC;AACA,WAAO,MAAM,GAAG,OAAO,OAAO,CAAC;AAAA,EACnC;AAAA,EAEA,gBAAgB,QAAe,MAAa,WAAmB,WAAmC;AAC9F,WAAO,IAAI,QAAe,CAAC,UAAU,aAAa;AAC9C,WAAK,QAAQ;AAAA,QACT,MAAM,GAAG,MAAM;AAAA,QACf,MAAM,GAAG,IAAI;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,OAAO,QAAQ;AACZ,cAAI,UAAU,KAAM,UAAS,KAAK;AAClC,mBAAS,MAAM,GAAG,GAAG,CAAC;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,cACI,QACA,MACA,MACA,SAAiB,6BACH;AACd,WAAO,IAAI,QAAe,CAAC,UAAU,aAAa;AAC9C,WAAK,QAAQ;AAAA,QACT;AAAA,QACA,MAAM,GAAG,MAAM;AAAA,QACf,MAAM,GAAG,IAAI;AAAA,QACb,MAAM,GAAG,IAAI;AAAA,QACb;AAAA,QACA,CAAC,OAAO,QAAQ;AACZ,cAAI,UAAU,KAAM,UAAS,KAAK;AAClC,mBAAS,MAAM,GAAG,GAAG,CAAC;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,SAAS,KAAY,MAAoB;AACrC,UAAM,OAAO,KAAK,QAAQ,WAAW,uBAAuB,MAAM,GAAG,GAAG,CAAC;AACzE,SAAK,OAAO,MAAM,GAAG,IAAI,CAAC;AAC1B,WAAO,MAAM,GAAG,KAAK,OAAO,CAAC;AAAA,EACjC;AAAA,EAEA,UAAU,YAAwB,MAAuB,cAAiC,cAAqB;AAC3G,UAAM,SAAS,KAAK,QAAQ,WAAW,qBAAqB;AAC5D,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,WAAK,QAAQ,WAAS,OAAO,OAAO,MAAM,GAAG,KAAK,CAAC,CAAC;AAAA,IACxD,OAAO;AACH,aAAO,OAAO,MAAM,GAAG,IAAI,CAAC;AAAA,IAChC;AACA,WAAO,MAAM;AAAA,MACT,OAAO,KAAK;AAAA,QACR,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEA,YAAY,WAAuB,MAAa,WAAkB,cAAiC,cAAc;AAC7G,UAAM,WAAW,KAAK,QAAQ,aAAa,qBAAqB;AAChE,aAAS,OAAO,MAAM,GAAG,IAAI,CAAC;AAC9B,UAAM,UAAU,SAAS;AAAA,MACrB;AAAA,QACI,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACJ;AAAA,MACA,MAAM,GAAG,SAAS;AAAA,IACtB;AACA,QAAI,CAAC,QAAS,OAAM,IAAI,kBAAkB,+BAA+B;AAAA,EAC7E;AAAA,EAEA,gBAAgB;AAEZ,UAAM,OAAO,KAAK,QAAQ,WAAW,eAAe;AACpD,SAAK,aAAa;AAIlB,UAAM,aAAa,IAAI,WAAW,mBAAmB;AACrD,UAAM,iBAAiB,KAAK,cAAc;AAC1C,eAAW,IAAI,gBAAgB,sBAAsB,eAAe,MAAM;AAE1E,WAAO,WAAW,YAAY,EAAE,WAAW,MAAM,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC;AAAA,EAC9E;AAAA,EAEA,iBAAiB,KAAiB,SAA2B;AACzD,UAAM,OAAO,KAAK,QAAQ,WAAW,eAAe;AACpD,SAAK,cAAc,MAAM,GAAG,IAAI,WAAW,CAAC;AAE5C,WAAO,MAAM,GAAG,KAAK,cAAc,MAAM,GAAG,QAAQ,UAAU,CAAC,CAAC;AAAA,EACpE;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
7
|
import { Bytes } from "#util/Bytes.js";
|
|
8
|
+
import { MaybePromise } from "#util/Promises.js";
|
|
8
9
|
import { Crypto, CryptoDsaEncoding } from "./Crypto.js";
|
|
9
10
|
import { PrivateKey, PublicKey } from "./Key.js";
|
|
10
11
|
import { WebCrypto } from "./WebCrypto.js";
|
|
@@ -29,7 +30,7 @@ export declare class StandardCrypto extends Crypto {
|
|
|
29
30
|
computeSha256(buffer: Bytes | Bytes[]): Promise<ArrayBuffer>;
|
|
30
31
|
createPbkdf2Key(secret: Bytes, salt: Bytes, iteration: number, keyLength: number): Promise<ArrayBuffer>;
|
|
31
32
|
createHkdfKey(secret: Bytes, salt: Bytes, info: Bytes, length?: number): Promise<Bytes>;
|
|
32
|
-
signHmac(secret: Bytes, data: Bytes):
|
|
33
|
+
signHmac(secret: Bytes, data: Bytes): MaybePromise<Bytes>;
|
|
33
34
|
signEcdsa(key: JsonWebKey, data: Bytes | Bytes[], dsaEncoding?: CryptoDsaEncoding): Promise<AllowSharedBufferSource>;
|
|
34
35
|
verifyEcdsa(key: JsonWebKey, data: Bytes, signature: Bytes, dsaEncoding?: CryptoDsaEncoding): Promise<void>;
|
|
35
36
|
createKeyPair(): Promise<PrivateKey>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,MAAM,EAA+B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAA2B,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAuB3C;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;;IACtC,kBAAkB,SAAQ;gBAId,MAAM,GAAE,SAA6B;IAYjD,SAAS,KAAK,MAAM,iBAEnB;IAED,MAAM,CAAC,QAAQ;IAIf,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAMlC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK;IASrE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK;IASrE,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE;IAO/B,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAchF,aAAa,CACf,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,MAAoC,GAC7C,OAAO,CAAC,KAAK,CAAC;IAcjB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IAMnD,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA+BjF,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,iBAAiB;IAgC3F,aAAa;cAaH,WAAW;IAkBrB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;cAiC3D,SAAS,CACrB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,GAAG,KAAK,EAC3B,SAAS,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,eAAe,EAC/G,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;CAQzC"}
|
|
@@ -99,9 +99,10 @@ class StandardCrypto extends Crypto {
|
|
|
99
99
|
8 * length
|
|
100
100
|
);
|
|
101
101
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
signHmac(secret, data) {
|
|
103
|
+
return this.importKey("raw", secret, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]).then(
|
|
104
|
+
(key) => this.#subtle.sign("HMAC", key, Bytes.exclusive(data))
|
|
105
|
+
);
|
|
105
106
|
}
|
|
106
107
|
async signEcdsa(key, data, dsaEncoding) {
|
|
107
108
|
if (Array.isArray(data)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/StandardCrypto.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY,UAAU,gBAAgB;AAC/C,SAAS,mBAAmB;AAC5B,SAAS,2BAA2B;AACpC,SAAS,aAAa;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY,UAAU,gBAAgB;AAC/C,SAAS,mBAAmB;AAC5B,SAAS,2BAA2B;AACpC,SAAS,aAAa;AAEtB,SAAS,oBAAoB;AAC7B,SAAS,WAAW;AACpB,SAAS,QAAQ,mCAAsD;AACvE,SAAS,mBAAmB,qBAAqB;AACjD,SAAS,WAAW,KAAK,eAAsC;AAM/D,MAAM,sBAAmC;AAAA,EACrC,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,MAAM,EAAE,MAAM,UAAU;AAC5B;AAEA,MAAM,wBAAgD,CAAC,iBAAiB;AAExE,MAAM,wBAAmD;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAWO,MAAM,uBAAuB,OAAO;AAAA,EACvC,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EAEA,YAAY,SAAoB,WAAW,QAAQ;AAC/C,UAAM,EAAE,OAAO,IAAI;AAEnB,oBAAgB,UAAU,QAAQ,qBAAqB;AACvD,oBAAgB,iBAAiB,QAAQ,qBAAqB;AAE9D,UAAM;AAEN,SAAK,UAAU;AACf,SAAK,UAAU;AAAA,EACnB;AAAA,EAEA,IAAc,SAAS;AACnB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,OAAO,WAAW;AACd,WAAO,IAAI,eAAe;AAAA,EAC9B;AAAA,EAEA,YAAY,QAAuB;AAC/B,UAAM,SAAS,IAAI,WAAW,MAAM;AACpC,SAAK,QAAQ,gBAAgB,MAAM;AACnC,WAAO;AAAA,EACX;AAAA,EAEA,QAAQ,KAAY,MAAa,OAAc,gBAAwB;AACnE,UAAM,MAAM,IAAI,GAAG;AACnB,WAAO,IAAI,QAAQ;AAAA,MACf,IAAI,MAAM,GAAG,IAAI;AAAA,MACjB,OAAO,MAAM,GAAG,KAAK;AAAA,MACrB,OAAO,mBAAmB,SAAY,MAAM,GAAG,cAAc,IAAI;AAAA,IACrE,CAAC;AAAA,EACL;AAAA,EAEA,QAAQ,KAAY,MAAa,OAAc,gBAAwB;AACnE,UAAM,MAAM,IAAI,GAAG;AACnB,WAAO,IAAI,QAAQ;AAAA,MACf,IAAI,MAAM,GAAG,IAAI;AAAA,MACjB,OAAO,MAAM,GAAG,KAAK;AAAA,MACrB,OAAO,mBAAmB,SAAY,MAAM,GAAG,cAAc,IAAI;AAAA,IACrE,CAAC;AAAA,EACL;AAAA,EAEA,cAAc,QAAyB;AACnC,QAAI,MAAM,QAAQ,MAAM,GAAG;AACvB,eAAS,MAAM,OAAO,GAAG,MAAM;AAAA,IACnC;AACA,WAAO,KAAK,QAAQ,OAAO,WAAW,MAAM,UAAU,MAAM,CAAC;AAAA,EACjE;AAAA,EAEA,MAAM,gBAAgB,QAAe,MAAa,WAAmB,WAAmB;AACpF,UAAM,MAAM,MAAM,KAAK,UAAU,OAAO,QAAQ,UAAU,OAAO,CAAC,YAAY,CAAC;AAC/E,WAAO,KAAK,QAAQ;AAAA,MAChB;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,MAAM,UAAU,IAAI;AAAA,QAC1B,YAAY;AAAA,MAChB;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IAChB;AAAA,EACJ;AAAA,EAEA,MAAM,cACF,QACA,MACA,MACA,SAAiB,6BACH;AACd,UAAM,MAAM,MAAM,KAAK,UAAU,OAAO,QAAQ,QAAQ,OAAO,CAAC,YAAY,CAAC;AAC7E,WAAO,KAAK,QAAQ;AAAA,MAChB;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,MAAM,UAAU,IAAI;AAAA,QAC1B,MAAM,MAAM,UAAU,IAAI;AAAA,MAC9B;AAAA,MACA;AAAA,MACA,IAAI;AAAA,IACR;AAAA,EACJ;AAAA,EAEA,SAAS,QAAe,MAAkC;AACtD,WAAO,KAAK,UAAU,OAAO,QAAQ,EAAE,MAAM,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;AAAA,MAAK,SAC1F,KAAK,QAAQ,KAAK,QAAQ,KAAK,MAAM,UAAU,IAAI,CAAC;AAAA,IACxD;AAAA,EACJ;AAAA,EAEA,MAAM,UAAU,KAAiB,MAAuB,aAAiC;AACrF,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,aAAO,MAAM,OAAO,GAAG,IAAI;AAAA,IAC/B;AAEA,UAAM,EAAE,KAAK,KAAK,GAAG,GAAG,EAAE,IAAI;AAE9B,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK;AAAA;AAAA,MACL,SAAS,CAAC,MAAM;AAAA,IACpB;AAEA,UAAM,YAAY,MAAM,KAAK,UAAU,OAAO,KAAK,qBAAqB,OAAO,CAAC,MAAM,CAAC;AAEvF,UAAM,YAAY,MAAM,GAAG,MAAM,KAAK,QAAQ,KAAK,qBAAqB,WAAW,MAAM,UAAU,IAAI,CAAC,CAAC;AAEzG,QAAI,gBAAgB,MAAO,QAAO;AAElC,UAAM,oBAAoB,UAAU,aAAa;AAEjD,WAAO,SAAS,OAAO;AAAA,MACnB,GAAG,WAAW,UAAU,MAAM,GAAG,iBAAiB,CAAC;AAAA,MACnD,GAAG,WAAW,UAAU,MAAM,iBAAiB,CAAC;AAAA,IACpD,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,YAAY,KAAiB,MAAa,WAAkB,aAAiC;AAC/F,UAAM,EAAE,KAAK,KAAK,GAAG,EAAE,IAAI;AAC3B,UAAM,EAAE,KAAK,KAAK,GAAG,EAAE;AACvB,UAAM,YAAY,MAAM,KAAK,UAAU,OAAO,KAAK,qBAAqB,OAAO,CAAC,QAAQ,CAAC;AAEzF,QAAI,gBAAgB,OAAO;AACvB,UAAI;AACA,cAAM,UAAU,SAAS,OAAO,SAAS;AAEzC,cAAM,IAAI,SAAS,cAAc,SAAS,YAAY,CAAC,GAAG,EAAE;AAC5D,cAAM,IAAI,SAAS,cAAc,SAAS,YAAY,CAAC,GAAG,EAAE;AAE5D,oBAAY,MAAM,OAAO,GAAG,CAAC;AAAA,MACjC,SAAS,OAAO;AACZ,iBAAS,OAAO,KAAK;AAErB,cAAM,IAAI,kBAAkB,yBAAyB,EAAE,MAAM,CAAC;AAAA,MAClE;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC;AAAA,MACA;AAAA,MACA,MAAM,UAAU,SAAS;AAAA,MACzB,MAAM,UAAU,IAAI;AAAA,IACxB;AAEA,QAAI,CAAC,UAAU;AACX,YAAM,IAAI,kBAAkB,+BAA+B;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,MAAM,gBAAgB;AAClB,UAAM,MAAM,MAAM,KAAK,YAAY;AAGnC,WAAO,IAAI;AAAA,MACP,KAAK,QAAQ;AAAA,MACb,KAAK,UAAU;AAAA,MACf,GAAG,IAAI;AAAA,MACP,GAAG,IAAI;AAAA,MACP,GAAG,IAAI;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEA,MAAgB,cAAc;AAC1B,UAAM,YAAY,MAAM,KAAK,QAAQ;AAAA,MACjC;AAAA;AAAA;AAAA,QAGI,MAAM;AAAA,QACN,YAAY;AAAA,MAChB;AAAA,MACA;AAAA;AAAA,MAGA,CAAC,WAAW;AAAA,IAChB;AAGA,WAAO,MAAM,KAAK,QAAQ,UAAU,OAAO,UAAU,UAAU;AAAA,EACnE;AAAA,EAEA,MAAM,iBAAiB,KAAiB,SAAoC;AACxE,UAAM,YAAY,MAAM,KAAK;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,YAAY;AAAA,MAChB;AAAA,MACA;AAAA,MACA,CAAC,YAAY;AAAA,IACjB;AAEA,UAAM,gBAAgB,MAAM,KAAK;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,YAAY;AAAA,MAChB;AAAA,MACA;AAAA,MACA,CAAC;AAAA,IACL;AAEA,WAAO,KAAK,QAAQ;AAAA,MAChB;AAAA,QACI,MAAM;AAAA,QACN,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAgB,UACZ,QACA,SACA,WACA,aACA,WACF;AACE,QAAI;AACA,aAAO,MAAM,KAAK,QAAQ,UAAU,QAAe,SAAgB,WAAW,aAAa,SAAS;AAAA,IACxG,SAAS,OAAO;AACZ,YAAM,IAAI,cAAc,eAAe,EAAE,MAAM,CAAC;AAAA,IACpD;AAAA,EACJ;AACJ;AAEA,SAAS,gBAA8B,MAAc,QAAW,iBAAuC;AACnG,MAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AAC/C,UAAM,IAAI;AAAA,MACN,OAAO,IAAI,iEAAiE,OAAO,MAAM;AAAA,IAC7F;AAAA,EACJ;AAEA,QAAM,iBAAiB,gBAAgB,OAAO,CAAAA,UAAQ,OAAO,OAAOA,KAAI,MAAM,UAAU;AACxF,MAAI,eAAe,QAAQ;AACvB,UAAM,IAAI;AAAA,MACN,OAAO,IAAI,sEAAsE,eAAe,WAAW,IAAI,KAAK,GAAG,IAAI,aAAa,OAAO,GAAG,cAAc,CAAC;AAAA,IACrK;AAAA,EACJ;AACJ;AAIA,IAAI,YAAY,cAAc,WAAW,QAAQ,QAAQ;AACrD,cAAY,QAAQ,IAAI,QAAQ,IAAI,eAAe,CAAC;AACxD;",
|
|
5
5
|
"names": ["name"]
|
|
6
6
|
}
|
|
@@ -8,6 +8,7 @@ export * from "./CryptoConstants.js";
|
|
|
8
8
|
export * from "./CryptoError.js";
|
|
9
9
|
export * from "./Key.js";
|
|
10
10
|
export * from "./MockCrypto.js";
|
|
11
|
+
export * from "./NodeJsStyleCrypto.js";
|
|
11
12
|
export * from "./Spake2p.js";
|
|
12
13
|
export * from "./StandardCrypto.js";
|
|
13
14
|
export * from "./WebCrypto.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
package/dist/esm/crypto/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from "./CryptoConstants.js";
|
|
|
8
8
|
export * from "./CryptoError.js";
|
|
9
9
|
export * from "./Key.js";
|
|
10
10
|
export * from "./MockCrypto.js";
|
|
11
|
+
export * from "./NodeJsStyleCrypto.js";
|
|
11
12
|
export * from "./Spake2p.js";
|
|
12
13
|
export * from "./StandardCrypto.js";
|
|
13
14
|
export * from "./WebCrypto.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/index.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/general",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20250826-531401faa",
|
|
4
4
|
"description": "Non-Matter support for Matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@noble/curves": "^1.9.7"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
39
|
+
"@matter/testing": "0.16.0-alpha.0-20250826-531401faa"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*",
|
package/src/crypto/Key.ts
CHANGED
|
@@ -211,7 +211,6 @@ export interface PrivateKey extends PublicKey {
|
|
|
211
211
|
privateKey: Bytes;
|
|
212
212
|
keyPair: BinaryKeyPair;
|
|
213
213
|
keyPairBits: BinaryKeyPair;
|
|
214
|
-
sharedSecretFor(peerKey: PublicKey): Bytes;
|
|
215
214
|
}
|
|
216
215
|
|
|
217
216
|
/**
|
|
@@ -579,7 +578,6 @@ export function PrivateKey(privateKey: Bytes | BinaryKeyPair, options?: Partial<
|
|
|
579
578
|
privateKey: priv,
|
|
580
579
|
publicKey: pub,
|
|
581
580
|
...options,
|
|
582
|
-
sharedSecretFor,
|
|
583
581
|
} as Key) as PrivateKey;
|
|
584
582
|
}
|
|
585
583
|
|
|
@@ -605,11 +603,13 @@ export function SymmetricKey(privateKey: Bytes, options?: Partial<Key>) {
|
|
|
605
603
|
});
|
|
606
604
|
}
|
|
607
605
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
606
|
+
export namespace Key {
|
|
607
|
+
/**
|
|
608
|
+
* Diffie-Hellman shared secret computation.
|
|
609
|
+
*
|
|
610
|
+
* We provide this for platforms without a native implementation.
|
|
611
|
+
*/
|
|
612
|
+
export function sharedSecretFor(key: PrivateKey, peerKey: PublicKey): Bytes {
|
|
613
|
+
return Bytes.of(getSharedSecret(Bytes.of(key.privateBits), Bytes.of(peerKey.publicBits)));
|
|
614
|
+
}
|
|
615
615
|
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Bytes } from "#util/Bytes.js";
|
|
8
|
+
import { asError } from "#util/Error.js";
|
|
9
|
+
import { Identity } from "#util/Type.js";
|
|
10
|
+
import {
|
|
11
|
+
Crypto,
|
|
12
|
+
CRYPTO_AUTH_TAG_LENGTH,
|
|
13
|
+
CRYPTO_EC_CURVE,
|
|
14
|
+
CRYPTO_EC_KEY_BYTES,
|
|
15
|
+
CRYPTO_ENCRYPT_ALGORITHM,
|
|
16
|
+
CRYPTO_HASH_ALGORITHM,
|
|
17
|
+
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
18
|
+
CryptoDsaEncoding,
|
|
19
|
+
} from "./Crypto.js";
|
|
20
|
+
import { CryptoDecryptError, CryptoVerifyError } from "./CryptoError.js";
|
|
21
|
+
import { PrivateKey, PublicKey } from "./Key.js";
|
|
22
|
+
|
|
23
|
+
// Note that this is a type-only import, not a runtime dependency.
|
|
24
|
+
import type * as NodeJsCryptoApi from "node:crypto";
|
|
25
|
+
|
|
26
|
+
// Ensure we don't reference global crypto accidentally
|
|
27
|
+
declare const crypto: never;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* A crypto API implemented in the style of Node.js.
|
|
31
|
+
*/
|
|
32
|
+
export interface NodeJsCryptoApiLike extends Identity<typeof NodeJsCryptoApi> {}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* A crypto implementation that uses the Node.js crypto API.
|
|
36
|
+
*
|
|
37
|
+
* It is Node.js "style" because there are many packages that emulate the Node.js API. As of now (mid-2025) these are
|
|
38
|
+
* sometimes more mature than the available Web Crypto implementation.
|
|
39
|
+
*
|
|
40
|
+
* This module does not import the Node.js crypto implementation directly. You must provide a crypto implementation to
|
|
41
|
+
* use it.
|
|
42
|
+
*/
|
|
43
|
+
export class NodeJsStyleCrypto extends Crypto {
|
|
44
|
+
implementationName = "Node.js";
|
|
45
|
+
|
|
46
|
+
#crypto: NodeJsCryptoApiLike;
|
|
47
|
+
|
|
48
|
+
constructor(crypto: NodeJsCryptoApiLike) {
|
|
49
|
+
super();
|
|
50
|
+
|
|
51
|
+
this.#crypto = crypto;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
encrypt(key: Bytes, data: Bytes, nonce: Bytes, aad?: Bytes): Bytes {
|
|
55
|
+
const cipher = this.#crypto.createCipheriv(CRYPTO_ENCRYPT_ALGORITHM, Bytes.of(key), Bytes.of(nonce), {
|
|
56
|
+
authTagLength: CRYPTO_AUTH_TAG_LENGTH,
|
|
57
|
+
});
|
|
58
|
+
if (aad !== undefined) {
|
|
59
|
+
cipher.setAAD(Bytes.of(aad), { plaintextLength: data.byteLength });
|
|
60
|
+
}
|
|
61
|
+
const encrypted = cipher.update(Bytes.of(data));
|
|
62
|
+
cipher.final();
|
|
63
|
+
return Bytes.concat(Bytes.of(encrypted), Bytes.of(cipher.getAuthTag()));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
decrypt(key: Bytes, encrypted: Bytes, nonce: Bytes, aad?: Bytes): Bytes {
|
|
67
|
+
const cipher = this.#crypto.createDecipheriv(CRYPTO_ENCRYPT_ALGORITHM, Bytes.of(key), Bytes.of(nonce), {
|
|
68
|
+
authTagLength: CRYPTO_AUTH_TAG_LENGTH,
|
|
69
|
+
});
|
|
70
|
+
const data = Bytes.of(encrypted);
|
|
71
|
+
const plaintextLength = data.length - CRYPTO_AUTH_TAG_LENGTH;
|
|
72
|
+
if (aad !== undefined) {
|
|
73
|
+
cipher.setAAD(Bytes.of(aad), { plaintextLength });
|
|
74
|
+
}
|
|
75
|
+
cipher.setAuthTag(data.slice(plaintextLength));
|
|
76
|
+
const result = cipher.update(data.slice(0, plaintextLength));
|
|
77
|
+
try {
|
|
78
|
+
cipher.final();
|
|
79
|
+
} catch (e) {
|
|
80
|
+
throw new CryptoDecryptError(`${CRYPTO_ENCRYPT_ALGORITHM} decryption failed: ${asError(e).message}`);
|
|
81
|
+
}
|
|
82
|
+
return Bytes.of(result);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
randomBytes(length: number): Bytes {
|
|
86
|
+
return Bytes.of(this.#crypto.randomBytes(length));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
ecdhGeneratePublicKey(): { publicKey: Bytes; ecdh: any } {
|
|
90
|
+
const ecdh = this.#crypto.createECDH(CRYPTO_EC_CURVE);
|
|
91
|
+
ecdh.generateKeys();
|
|
92
|
+
return { publicKey: Bytes.of(ecdh.getPublicKey()), ecdh: ecdh };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
ecdhGeneratePublicKeyAndSecret(peerPublicKey: Bytes): {
|
|
96
|
+
publicKey: Bytes;
|
|
97
|
+
sharedSecret: Bytes;
|
|
98
|
+
} {
|
|
99
|
+
const ecdh = this.#crypto.createECDH(CRYPTO_EC_CURVE);
|
|
100
|
+
ecdh.generateKeys();
|
|
101
|
+
return {
|
|
102
|
+
publicKey: Bytes.of(ecdh.getPublicKey()),
|
|
103
|
+
sharedSecret: Bytes.of(ecdh.computeSecret(Bytes.of(peerPublicKey))),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
computeSha256(data: Bytes | Bytes[]): Bytes {
|
|
108
|
+
const hasher = this.#crypto.createHash(CRYPTO_HASH_ALGORITHM);
|
|
109
|
+
if (Array.isArray(data)) {
|
|
110
|
+
data.forEach(chunk => hasher.update(Bytes.of(chunk)));
|
|
111
|
+
} else {
|
|
112
|
+
hasher.update(Bytes.of(data));
|
|
113
|
+
}
|
|
114
|
+
return Bytes.of(hasher.digest());
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
createPbkdf2Key(secret: Bytes, salt: Bytes, iteration: number, keyLength: number): Promise<Bytes> {
|
|
118
|
+
return new Promise<Bytes>((resolver, rejecter) => {
|
|
119
|
+
this.#crypto.pbkdf2(
|
|
120
|
+
Bytes.of(secret),
|
|
121
|
+
Bytes.of(salt),
|
|
122
|
+
iteration,
|
|
123
|
+
keyLength,
|
|
124
|
+
CRYPTO_HASH_ALGORITHM,
|
|
125
|
+
(error, key) => {
|
|
126
|
+
if (error !== null) rejecter(error);
|
|
127
|
+
resolver(Bytes.of(key));
|
|
128
|
+
},
|
|
129
|
+
);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
createHkdfKey(
|
|
134
|
+
secret: Bytes,
|
|
135
|
+
salt: Bytes,
|
|
136
|
+
info: Bytes,
|
|
137
|
+
length: number = CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
138
|
+
): Promise<Bytes> {
|
|
139
|
+
return new Promise<Bytes>((resolver, rejecter) => {
|
|
140
|
+
this.#crypto.hkdf(
|
|
141
|
+
CRYPTO_HASH_ALGORITHM,
|
|
142
|
+
Bytes.of(secret),
|
|
143
|
+
Bytes.of(salt),
|
|
144
|
+
Bytes.of(info),
|
|
145
|
+
length,
|
|
146
|
+
(error, key) => {
|
|
147
|
+
if (error !== null) rejecter(error);
|
|
148
|
+
resolver(Bytes.of(key));
|
|
149
|
+
},
|
|
150
|
+
);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
signHmac(key: Bytes, data: Bytes): Bytes {
|
|
155
|
+
const hmac = this.#crypto.createHmac(CRYPTO_HASH_ALGORITHM, Bytes.of(key));
|
|
156
|
+
hmac.update(Bytes.of(data));
|
|
157
|
+
return Bytes.of(hmac.digest());
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
signEcdsa(privateKey: JsonWebKey, data: Bytes | Bytes[], dsaEncoding: CryptoDsaEncoding = "ieee-p1363"): Bytes {
|
|
161
|
+
const signer = this.#crypto.createSign(CRYPTO_HASH_ALGORITHM);
|
|
162
|
+
if (Array.isArray(data)) {
|
|
163
|
+
data.forEach(chunk => signer.update(Bytes.of(chunk)));
|
|
164
|
+
} else {
|
|
165
|
+
signer.update(Bytes.of(data));
|
|
166
|
+
}
|
|
167
|
+
return Bytes.of(
|
|
168
|
+
signer.sign({
|
|
169
|
+
key: privateKey as any,
|
|
170
|
+
format: "jwk",
|
|
171
|
+
type: "pkcs8",
|
|
172
|
+
dsaEncoding,
|
|
173
|
+
}),
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
verifyEcdsa(publicKey: JsonWebKey, data: Bytes, signature: Bytes, dsaEncoding: CryptoDsaEncoding = "ieee-p1363") {
|
|
178
|
+
const verifier = this.#crypto.createVerify(CRYPTO_HASH_ALGORITHM);
|
|
179
|
+
verifier.update(Bytes.of(data));
|
|
180
|
+
const success = verifier.verify(
|
|
181
|
+
{
|
|
182
|
+
key: publicKey as any,
|
|
183
|
+
format: "jwk",
|
|
184
|
+
type: "spki",
|
|
185
|
+
dsaEncoding,
|
|
186
|
+
},
|
|
187
|
+
Bytes.of(signature),
|
|
188
|
+
);
|
|
189
|
+
if (!success) throw new CryptoVerifyError("Signature verification failed");
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
createKeyPair() {
|
|
193
|
+
// Note that we this key may be used for DH or DSA but we use an ECDH to generate
|
|
194
|
+
const ecdh = this.#crypto.createECDH(CRYPTO_EC_CURVE);
|
|
195
|
+
ecdh.generateKeys();
|
|
196
|
+
|
|
197
|
+
// The key exported from Node doesn't include most-significant bytes that are 0. This doesn't affect how we
|
|
198
|
+
// currently use keys but it's a little weird so 0 pad to avoid future confusion
|
|
199
|
+
const privateKey = new Uint8Array(CRYPTO_EC_KEY_BYTES);
|
|
200
|
+
const nodePrivateKey = ecdh.getPrivateKey();
|
|
201
|
+
privateKey.set(nodePrivateKey, CRYPTO_EC_KEY_BYTES - nodePrivateKey.length);
|
|
202
|
+
|
|
203
|
+
return PrivateKey(privateKey, { publicKey: Bytes.of(ecdh.getPublicKey()) });
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
generateDhSecret(key: PrivateKey, peerKey: PublicKey): Bytes {
|
|
207
|
+
const ecdh = this.#crypto.createECDH(CRYPTO_EC_CURVE);
|
|
208
|
+
ecdh.setPrivateKey(Bytes.of(key.privateBits));
|
|
209
|
+
|
|
210
|
+
return Bytes.of(ecdh.computeSecret(Bytes.of(peerKey.publicBits)));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
@@ -9,6 +9,7 @@ import { DerBigUint, DerCodec, DerError } from "#codec/DerCodec.js";
|
|
|
9
9
|
import { Environment } from "#environment/Environment.js";
|
|
10
10
|
import { ImplementationError } from "#MatterError.js";
|
|
11
11
|
import { Bytes } from "#util/Bytes.js";
|
|
12
|
+
import { MaybePromise } from "#util/Promises.js";
|
|
12
13
|
import { describeList } from "#util/String.js";
|
|
13
14
|
import { Ccm } from "./aes/Ccm.js";
|
|
14
15
|
import { Crypto, CRYPTO_SYMMETRIC_KEY_LENGTH, CryptoDsaEncoding } from "./Crypto.js";
|
|
@@ -135,9 +136,10 @@ export class StandardCrypto extends Crypto {
|
|
|
135
136
|
);
|
|
136
137
|
}
|
|
137
138
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
signHmac(secret: Bytes, data: Bytes): MaybePromise<Bytes> {
|
|
140
|
+
return this.importKey("raw", secret, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]).then(key =>
|
|
141
|
+
this.#subtle.sign("HMAC", key, Bytes.exclusive(data)),
|
|
142
|
+
);
|
|
141
143
|
}
|
|
142
144
|
|
|
143
145
|
async signEcdsa(key: JsonWebKey, data: Bytes | Bytes[], dsaEncoding?: CryptoDsaEncoding) {
|
package/src/crypto/index.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from "./CryptoConstants.js";
|
|
|
9
9
|
export * from "./CryptoError.js";
|
|
10
10
|
export * from "./Key.js";
|
|
11
11
|
export * from "./MockCrypto.js";
|
|
12
|
+
export * from "./NodeJsStyleCrypto.js";
|
|
12
13
|
export * from "./Spake2p.js";
|
|
13
14
|
export * from "./StandardCrypto.js";
|
|
14
15
|
export * from "./WebCrypto.js";
|