@matter/general 0.15.1-alpha.0-20250630-daa5888a0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/crypto/StandardCrypto.d.ts.map +1 -1
- package/dist/cjs/crypto/StandardCrypto.js +20 -4
- package/dist/cjs/crypto/StandardCrypto.js.map +1 -1
- package/dist/esm/crypto/StandardCrypto.d.ts.map +1 -1
- package/dist/esm/crypto/StandardCrypto.js +20 -4
- package/dist/esm/crypto/StandardCrypto.js.map +1 -1
- package/package.json +2 -2
- package/src/crypto/StandardCrypto.ts +22 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,MAAM,EAA+B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAA2B,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAkB1E;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;;IACtC,kBAAkB,SAAQ;gBAGd,MAAM,GAAE,YAAwC;IAmB5D,MAAM,CAAC,QAAQ;IAIf,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAMvC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU;IAKzF,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU;IAKnF,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE;IAO/C,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAe1F,aAAa,CACf,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,MAAoC;IAgB1C,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;IAK7C,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA+B3F,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA2BrG,aAAa;IA2Bb,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;CAyD7D"}
|
|
@@ -25,6 +25,7 @@ var import_DerCodec = require("#codec/DerCodec.js");
|
|
|
25
25
|
var import_Environment = require("#environment/Environment.js");
|
|
26
26
|
var import_MatterError = require("#MatterError.js");
|
|
27
27
|
var import_Bytes = require("#util/Bytes.js");
|
|
28
|
+
var import_String = require("#util/String.js");
|
|
28
29
|
var import_Ccm = require("./aes/Ccm.js");
|
|
29
30
|
var import_Crypto = require("./Crypto.js");
|
|
30
31
|
var import_CryptoError = require("./CryptoError.js");
|
|
@@ -40,15 +41,30 @@ const SIGNATURE_ALGORITHM = {
|
|
|
40
41
|
namedCurve: "P-256",
|
|
41
42
|
hash: { name: "SHA-256" }
|
|
42
43
|
};
|
|
44
|
+
const requiredSubtleMethods = [
|
|
45
|
+
"digest",
|
|
46
|
+
"deriveBits",
|
|
47
|
+
"sign",
|
|
48
|
+
"verify",
|
|
49
|
+
"generateKey",
|
|
50
|
+
"exportKey",
|
|
51
|
+
"importKey"
|
|
52
|
+
];
|
|
43
53
|
class StandardCrypto extends import_Crypto.Crypto {
|
|
44
54
|
implementationName = "JS";
|
|
45
55
|
#subtle;
|
|
46
|
-
constructor(subtle = crypto?.subtle) {
|
|
47
|
-
if (subtle ===
|
|
56
|
+
constructor(subtle = globalThis.crypto?.subtle) {
|
|
57
|
+
if (typeof subtle !== "object" || subtle === null) {
|
|
48
58
|
throw new import_MatterError.ImplementationError(
|
|
49
59
|
"You cannot instantiate StandardCrypto in this runtime because crypto.subtle is not present"
|
|
50
60
|
);
|
|
51
61
|
}
|
|
62
|
+
const missingMethods = requiredSubtleMethods.filter((name) => typeof subtle[name] !== "function");
|
|
63
|
+
if (missingMethods.length) {
|
|
64
|
+
throw new import_MatterError.ImplementationError(
|
|
65
|
+
`SubtleCrypto implementation is missing required method${missingMethods.length === 1 ? "" : "s"} ${(0, import_String.describeList)("and", ...missingMethods)}`
|
|
66
|
+
);
|
|
67
|
+
}
|
|
52
68
|
super();
|
|
53
69
|
this.#subtle = subtle;
|
|
54
70
|
}
|
|
@@ -210,7 +226,7 @@ class StandardCrypto extends import_Crypto.Crypto {
|
|
|
210
226
|
}
|
|
211
227
|
}
|
|
212
228
|
}
|
|
213
|
-
if (crypto
|
|
214
|
-
import_Environment.Environment.default.set(import_Crypto.Crypto, new StandardCrypto(crypto.subtle));
|
|
229
|
+
if ("crypto" in globalThis && globalThis.crypto?.subtle) {
|
|
230
|
+
import_Environment.Environment.default.set(import_Crypto.Crypto, new StandardCrypto(globalThis.crypto.subtle));
|
|
215
231
|
}
|
|
216
232
|
//# sourceMappingURL=StandardCrypto.js.map
|
|
@@ -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;AACtB,iBAAoB;AACpB,oBAAuE;AACvE,yBAAiD;AACjD,iBAA+D;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,MAAM,EAA+B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAA2B,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAkB1E;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;;IACtC,kBAAkB,SAAQ;gBAGd,MAAM,GAAE,YAAwC;IAmB5D,MAAM,CAAC,QAAQ;IAIf,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAMvC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU;IAKzF,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU;IAKnF,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE;IAO/C,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAe1F,aAAa,CACf,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,MAAoC;IAgB1C,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;IAK7C,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA+B3F,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA2BrG,aAAa;IA2Bb,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;CAyD7D"}
|
|
@@ -8,6 +8,7 @@ import { DerBigUint, DerCodec, DerError } from "#codec/DerCodec.js";
|
|
|
8
8
|
import { Environment } from "#environment/Environment.js";
|
|
9
9
|
import { ImplementationError } from "#MatterError.js";
|
|
10
10
|
import { Bytes } from "#util/Bytes.js";
|
|
11
|
+
import { describeList } from "#util/String.js";
|
|
11
12
|
import { Ccm } from "./aes/Ccm.js";
|
|
12
13
|
import { Crypto, CRYPTO_SYMMETRIC_KEY_LENGTH } from "./Crypto.js";
|
|
13
14
|
import { CryptoVerifyError, KeyInputError } from "./CryptoError.js";
|
|
@@ -17,15 +18,30 @@ const SIGNATURE_ALGORITHM = {
|
|
|
17
18
|
namedCurve: "P-256",
|
|
18
19
|
hash: { name: "SHA-256" }
|
|
19
20
|
};
|
|
21
|
+
const requiredSubtleMethods = [
|
|
22
|
+
"digest",
|
|
23
|
+
"deriveBits",
|
|
24
|
+
"sign",
|
|
25
|
+
"verify",
|
|
26
|
+
"generateKey",
|
|
27
|
+
"exportKey",
|
|
28
|
+
"importKey"
|
|
29
|
+
];
|
|
20
30
|
class StandardCrypto extends Crypto {
|
|
21
31
|
implementationName = "JS";
|
|
22
32
|
#subtle;
|
|
23
|
-
constructor(subtle = crypto?.subtle) {
|
|
24
|
-
if (subtle ===
|
|
33
|
+
constructor(subtle = globalThis.crypto?.subtle) {
|
|
34
|
+
if (typeof subtle !== "object" || subtle === null) {
|
|
25
35
|
throw new ImplementationError(
|
|
26
36
|
"You cannot instantiate StandardCrypto in this runtime because crypto.subtle is not present"
|
|
27
37
|
);
|
|
28
38
|
}
|
|
39
|
+
const missingMethods = requiredSubtleMethods.filter((name) => typeof subtle[name] !== "function");
|
|
40
|
+
if (missingMethods.length) {
|
|
41
|
+
throw new ImplementationError(
|
|
42
|
+
`SubtleCrypto implementation is missing required method${missingMethods.length === 1 ? "" : "s"} ${describeList("and", ...missingMethods)}`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
29
45
|
super();
|
|
30
46
|
this.#subtle = subtle;
|
|
31
47
|
}
|
|
@@ -187,8 +203,8 @@ class StandardCrypto extends Crypto {
|
|
|
187
203
|
}
|
|
188
204
|
}
|
|
189
205
|
}
|
|
190
|
-
if (crypto
|
|
191
|
-
Environment.default.set(Crypto, new StandardCrypto(crypto.subtle));
|
|
206
|
+
if ("crypto" in globalThis && globalThis.crypto?.subtle) {
|
|
207
|
+
Environment.default.set(Crypto, new StandardCrypto(globalThis.crypto.subtle));
|
|
192
208
|
}
|
|
193
209
|
export {
|
|
194
210
|
StandardCrypto
|
|
@@ -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;AACtB,SAAS,WAAW;AACpB,SAAS,QAAQ,mCAAsD;AACvE,SAAS,mBAAmB,qBAAqB;AACjD,SAAS,WAAW,KAAK,eAAsC;AAE/D,MAAM,sBAAmC;AAAA,EACrC,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,MAAM,EAAE,MAAM,UAAU;AAC5B;AAWO,MAAM,uBAAuB,OAAO;AAAA,EACvC,qBAAqB;AAAA,EACrB;AAAA,EAEA,YAAY,SAAuB,QAAQ,QAAQ;AAC/C,QAAI,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/general",
|
|
3
|
-
"version": "0.15.1
|
|
3
|
+
"version": "0.15.1",
|
|
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.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@matter/testing": "0.15.1
|
|
39
|
+
"@matter/testing": "0.15.1"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*",
|
|
@@ -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 { describeList } from "#util/String.js";
|
|
12
13
|
import { Ccm } from "./aes/Ccm.js";
|
|
13
14
|
import { Crypto, CRYPTO_SYMMETRIC_KEY_LENGTH, CryptoDsaEncoding } from "./Crypto.js";
|
|
14
15
|
import { CryptoVerifyError, KeyInputError } from "./CryptoError.js";
|
|
@@ -20,6 +21,16 @@ const SIGNATURE_ALGORITHM = <EcdsaParams>{
|
|
|
20
21
|
hash: { name: "SHA-256" },
|
|
21
22
|
};
|
|
22
23
|
|
|
24
|
+
const requiredSubtleMethods: Array<keyof SubtleCrypto> = [
|
|
25
|
+
"digest",
|
|
26
|
+
"deriveBits",
|
|
27
|
+
"sign",
|
|
28
|
+
"verify",
|
|
29
|
+
"generateKey",
|
|
30
|
+
"exportKey",
|
|
31
|
+
"importKey",
|
|
32
|
+
];
|
|
33
|
+
|
|
23
34
|
/**
|
|
24
35
|
* A {@link Crypto} implementation that uses only JS standards.
|
|
25
36
|
*
|
|
@@ -33,13 +44,20 @@ export class StandardCrypto extends Crypto {
|
|
|
33
44
|
implementationName = "JS";
|
|
34
45
|
#subtle: SubtleCrypto;
|
|
35
46
|
|
|
36
|
-
constructor(subtle: SubtleCrypto = crypto?.subtle) {
|
|
37
|
-
if (subtle ===
|
|
47
|
+
constructor(subtle: SubtleCrypto = globalThis.crypto?.subtle) {
|
|
48
|
+
if (typeof subtle !== "object" || subtle === null) {
|
|
38
49
|
throw new ImplementationError(
|
|
39
50
|
"You cannot instantiate StandardCrypto in this runtime because crypto.subtle is not present",
|
|
40
51
|
);
|
|
41
52
|
}
|
|
42
53
|
|
|
54
|
+
const missingMethods = requiredSubtleMethods.filter(name => typeof subtle[name] !== "function");
|
|
55
|
+
if (missingMethods.length) {
|
|
56
|
+
throw new ImplementationError(
|
|
57
|
+
`SubtleCrypto implementation is missing required method${missingMethods.length === 1 ? "" : "s"} ${describeList("and", ...missingMethods)}`,
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
43
61
|
super();
|
|
44
62
|
|
|
45
63
|
this.#subtle = subtle;
|
|
@@ -258,6 +276,6 @@ export class StandardCrypto extends Crypto {
|
|
|
258
276
|
|
|
259
277
|
// If available, unconditionally add to Environment as it has not been exported yet so there can be no other
|
|
260
278
|
// implementation present
|
|
261
|
-
if (crypto?.subtle
|
|
262
|
-
Environment.default.set(Crypto, new StandardCrypto(crypto.subtle));
|
|
279
|
+
if ("crypto" in globalThis && globalThis.crypto?.subtle) {
|
|
280
|
+
Environment.default.set(Crypto, new StandardCrypto(globalThis.crypto.subtle));
|
|
263
281
|
}
|