@matter/general 0.14.1-alpha.0-20250607-a93593303 → 0.15.0-alpha.0-20250613-a55f991d4
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/codec/DerCodec.d.ts +12 -17
- package/dist/cjs/codec/DerCodec.d.ts.map +1 -1
- package/dist/cjs/codec/DerCodec.js +90 -51
- package/dist/cjs/codec/DerCodec.js.map +1 -1
- package/dist/cjs/codec/DerTypes.js +1 -1
- package/dist/cjs/codec/DnsCodec.d.ts +5 -5
- package/dist/cjs/crypto/Crypto.d.ts +111 -62
- package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
- package/dist/cjs/crypto/Crypto.js +92 -31
- package/dist/cjs/crypto/Crypto.js.map +1 -1
- package/dist/cjs/crypto/CryptoError.d.ts +32 -0
- package/dist/cjs/crypto/CryptoError.d.ts.map +1 -0
- package/dist/cjs/crypto/CryptoError.js +44 -0
- package/dist/cjs/crypto/CryptoError.js.map +6 -0
- package/dist/cjs/crypto/Key.d.ts +2 -2
- package/dist/cjs/crypto/Key.d.ts.map +1 -1
- package/dist/cjs/crypto/Key.js +15 -16
- package/dist/cjs/crypto/Key.js.map +1 -1
- package/dist/cjs/crypto/Spake2p.js +5 -5
- package/dist/cjs/crypto/Spake2p.js.map +1 -1
- package/dist/cjs/crypto/StandardCrypto.d.ts +33 -0
- package/dist/cjs/crypto/StandardCrypto.d.ts.map +1 -0
- package/dist/cjs/crypto/StandardCrypto.js +208 -0
- package/dist/cjs/crypto/StandardCrypto.js.map +6 -0
- package/dist/cjs/crypto/aes/Aes.d.ts +21 -0
- package/dist/cjs/crypto/aes/Aes.d.ts.map +1 -0
- package/dist/cjs/crypto/aes/Aes.js +132 -0
- package/dist/cjs/crypto/aes/Aes.js.map +6 -0
- package/dist/cjs/crypto/aes/Ccm.d.ts +71 -0
- package/dist/cjs/crypto/aes/Ccm.d.ts.map +1 -0
- package/dist/cjs/crypto/aes/Ccm.js +194 -0
- package/dist/cjs/crypto/aes/Ccm.js.map +6 -0
- package/dist/cjs/crypto/aes/WordArray.d.ts +30 -0
- package/dist/cjs/crypto/aes/WordArray.d.ts.map +1 -0
- package/dist/cjs/crypto/aes/WordArray.js +91 -0
- package/dist/cjs/crypto/aes/WordArray.js.map +6 -0
- package/dist/cjs/crypto/index.d.ts +3 -0
- package/dist/cjs/crypto/index.d.ts.map +1 -1
- package/dist/cjs/crypto/index.js +3 -0
- package/dist/cjs/crypto/index.js.map +1 -1
- package/dist/cjs/crypto/nonentropic.d.ts +16 -0
- package/dist/cjs/crypto/nonentropic.d.ts.map +1 -0
- package/dist/cjs/crypto/nonentropic.js +70 -0
- package/dist/cjs/crypto/nonentropic.js.map +6 -0
- package/dist/cjs/environment/Environment.d.ts.map +1 -1
- package/dist/cjs/environment/Environment.js +1 -5
- package/dist/cjs/environment/Environment.js.map +1 -1
- package/dist/cjs/environment/RuntimeService.d.ts +2 -4
- package/dist/cjs/environment/RuntimeService.d.ts.map +1 -1
- package/dist/cjs/environment/RuntimeService.js +4 -4
- package/dist/cjs/environment/RuntimeService.js.map +1 -1
- package/dist/cjs/environment/VariableService.d.ts.map +1 -1
- package/dist/cjs/environment/VariableService.js +1 -0
- package/dist/cjs/environment/VariableService.js.map +1 -1
- package/dist/cjs/log/LogFormat.js +17 -11
- package/dist/cjs/log/LogFormat.js.map +1 -1
- package/dist/cjs/net/Network.d.ts +0 -1
- package/dist/cjs/net/Network.d.ts.map +1 -1
- package/dist/cjs/net/Network.js +0 -4
- package/dist/cjs/net/Network.js.map +1 -1
- package/dist/cjs/time/Time.d.ts.map +1 -1
- package/dist/cjs/time/Time.js +2 -2
- package/dist/cjs/time/Time.js.map +1 -1
- package/dist/cjs/util/Bytes.d.ts +6 -0
- package/dist/cjs/util/Bytes.d.ts.map +1 -1
- package/dist/cjs/util/Bytes.js +15 -1
- package/dist/cjs/util/Bytes.js.map +1 -1
- package/dist/cjs/util/DataWriter.d.ts +1 -1
- package/dist/cjs/util/DataWriter.js +2 -2
- package/dist/cjs/util/DataWriter.js.map +1 -1
- package/dist/cjs/util/DeepCopy.js +1 -1
- package/dist/cjs/util/DeepCopy.js.map +1 -1
- package/dist/cjs/util/GeneratedClass.d.ts +3 -3
- package/dist/cjs/util/GeneratedClass.d.ts.map +1 -1
- package/dist/cjs/util/GeneratedClass.js +99 -73
- package/dist/cjs/util/GeneratedClass.js.map +2 -2
- package/dist/cjs/util/Number.d.ts +0 -1
- package/dist/cjs/util/Number.d.ts.map +1 -1
- package/dist/cjs/util/Number.js +0 -4
- package/dist/cjs/util/Number.js.map +1 -1
- package/dist/esm/codec/DerCodec.d.ts +12 -17
- package/dist/esm/codec/DerCodec.d.ts.map +1 -1
- package/dist/esm/codec/DerCodec.js +90 -51
- package/dist/esm/codec/DerCodec.js.map +1 -1
- package/dist/esm/codec/DerTypes.js +2 -2
- package/dist/esm/codec/DnsCodec.d.ts +5 -5
- package/dist/esm/crypto/Crypto.d.ts +111 -62
- package/dist/esm/crypto/Crypto.d.ts.map +1 -1
- package/dist/esm/crypto/Crypto.js +93 -32
- package/dist/esm/crypto/Crypto.js.map +1 -1
- package/dist/esm/crypto/CryptoError.d.ts +32 -0
- package/dist/esm/crypto/CryptoError.d.ts.map +1 -0
- package/dist/esm/crypto/CryptoError.js +24 -0
- package/dist/esm/crypto/CryptoError.js.map +6 -0
- package/dist/esm/crypto/Key.d.ts +2 -2
- package/dist/esm/crypto/Key.d.ts.map +1 -1
- package/dist/esm/crypto/Key.js +15 -16
- package/dist/esm/crypto/Key.js.map +1 -1
- package/dist/esm/crypto/Spake2p.js +5 -5
- package/dist/esm/crypto/Spake2p.js.map +1 -1
- package/dist/esm/crypto/StandardCrypto.d.ts +33 -0
- package/dist/esm/crypto/StandardCrypto.d.ts.map +1 -0
- package/dist/esm/crypto/StandardCrypto.js +188 -0
- package/dist/esm/crypto/StandardCrypto.js.map +6 -0
- package/dist/esm/crypto/aes/Aes.d.ts +21 -0
- package/dist/esm/crypto/aes/Aes.d.ts.map +1 -0
- package/dist/esm/crypto/aes/Aes.js +112 -0
- package/dist/esm/crypto/aes/Aes.js.map +6 -0
- package/dist/esm/crypto/aes/Ccm.d.ts +71 -0
- package/dist/esm/crypto/aes/Ccm.d.ts.map +1 -0
- package/dist/esm/crypto/aes/Ccm.js +174 -0
- package/dist/esm/crypto/aes/Ccm.js.map +6 -0
- package/dist/esm/crypto/aes/WordArray.d.ts +30 -0
- package/dist/esm/crypto/aes/WordArray.d.ts.map +1 -0
- package/dist/esm/crypto/aes/WordArray.js +71 -0
- package/dist/esm/crypto/aes/WordArray.js.map +6 -0
- package/dist/esm/crypto/index.d.ts +3 -0
- package/dist/esm/crypto/index.d.ts.map +1 -1
- package/dist/esm/crypto/index.js +3 -0
- package/dist/esm/crypto/index.js.map +1 -1
- package/dist/esm/crypto/nonentropic.d.ts +16 -0
- package/dist/esm/crypto/nonentropic.d.ts.map +1 -0
- package/dist/esm/crypto/nonentropic.js +50 -0
- package/dist/esm/crypto/nonentropic.js.map +6 -0
- package/dist/esm/environment/Environment.d.ts.map +1 -1
- package/dist/esm/environment/Environment.js +1 -5
- package/dist/esm/environment/Environment.js.map +1 -1
- package/dist/esm/environment/RuntimeService.d.ts +2 -4
- package/dist/esm/environment/RuntimeService.d.ts.map +1 -1
- package/dist/esm/environment/RuntimeService.js +4 -4
- package/dist/esm/environment/RuntimeService.js.map +1 -1
- package/dist/esm/environment/VariableService.d.ts.map +1 -1
- package/dist/esm/environment/VariableService.js +1 -0
- package/dist/esm/environment/VariableService.js.map +1 -1
- package/dist/esm/log/LogFormat.js +17 -11
- package/dist/esm/log/LogFormat.js.map +1 -1
- package/dist/esm/net/Network.d.ts +0 -1
- package/dist/esm/net/Network.d.ts.map +1 -1
- package/dist/esm/net/Network.js +1 -5
- package/dist/esm/net/Network.js.map +1 -1
- package/dist/esm/time/Time.d.ts.map +1 -1
- package/dist/esm/time/Time.js +2 -2
- package/dist/esm/time/Time.js.map +1 -1
- package/dist/esm/util/Bytes.d.ts +6 -0
- package/dist/esm/util/Bytes.d.ts.map +1 -1
- package/dist/esm/util/Bytes.js +15 -1
- package/dist/esm/util/Bytes.js.map +1 -1
- package/dist/esm/util/DataWriter.d.ts +1 -1
- package/dist/esm/util/DataWriter.js +3 -3
- package/dist/esm/util/DataWriter.js.map +1 -1
- package/dist/esm/util/DeepCopy.js +1 -1
- package/dist/esm/util/DeepCopy.js.map +1 -1
- package/dist/esm/util/GeneratedClass.d.ts +3 -3
- package/dist/esm/util/GeneratedClass.d.ts.map +1 -1
- package/dist/esm/util/GeneratedClass.js +97 -71
- package/dist/esm/util/GeneratedClass.js.map +2 -2
- package/dist/esm/util/Number.d.ts +0 -1
- package/dist/esm/util/Number.d.ts.map +1 -1
- package/dist/esm/util/Number.js +0 -4
- package/dist/esm/util/Number.js.map +1 -1
- package/package.json +3 -3
- package/src/codec/DerCodec.ts +106 -52
- package/src/codec/DerTypes.ts +2 -2
- package/src/crypto/Crypto.ts +196 -76
- package/src/crypto/CryptoError.ts +32 -0
- package/src/crypto/Key.ts +17 -18
- package/src/crypto/Spake2p.ts +5 -5
- package/src/crypto/StandardCrypto.ts +252 -0
- package/src/crypto/aes/Aes.ts +210 -0
- package/src/crypto/aes/Ccm.ts +350 -0
- package/src/crypto/aes/README.md +4 -0
- package/src/crypto/aes/WordArray.ts +105 -0
- package/src/crypto/index.ts +3 -0
- package/src/crypto/nonentropic.ts +65 -0
- package/src/environment/Environment.ts +1 -6
- package/src/environment/RuntimeService.ts +5 -5
- package/src/environment/VariableService.ts +1 -0
- package/src/log/LogFormat.ts +19 -11
- package/src/net/Network.ts +1 -7
- package/src/time/Time.ts +4 -4
- package/src/util/Bytes.ts +19 -0
- package/src/util/DataWriter.ts +3 -3
- package/src/util/DeepCopy.ts +2 -2
- package/src/util/GeneratedClass.ts +161 -102
- package/src/util/Number.ts +0 -4
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Diagnostic } from "#log/Diagnostic.js";
|
|
7
|
+
import { Logger } from "#log/Logger.js";
|
|
6
8
|
import { Boot } from "#util/Boot.js";
|
|
7
9
|
import * as mod from "@noble/curves/abstract/modular";
|
|
8
10
|
import * as utils from "@noble/curves/abstract/utils";
|
|
9
11
|
import { p256 } from "@noble/curves/p256";
|
|
10
|
-
import {
|
|
12
|
+
import { NoProviderError } from "../MatterError.js";
|
|
11
13
|
import { Endian } from "../util/Bytes.js";
|
|
12
14
|
import { DataReader } from "../util/DataReader.js";
|
|
13
15
|
const ec = {
|
|
@@ -22,20 +24,65 @@ const CRYPTO_EC_CURVE = "prime256v1";
|
|
|
22
24
|
const CRYPTO_EC_KEY_BYTES = 32;
|
|
23
25
|
const CRYPTO_AUTH_TAG_LENGTH = 16;
|
|
24
26
|
const CRYPTO_SYMMETRIC_KEY_LENGTH = 16;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
const logger = Logger.get("Crypto");
|
|
28
|
+
let logImplementationName = true;
|
|
29
|
+
let defaultInstance;
|
|
30
|
+
let defaultProvider;
|
|
31
|
+
const Crypto = {
|
|
32
|
+
/**
|
|
33
|
+
* The default crypto implementation.
|
|
34
|
+
*/
|
|
35
|
+
get default() {
|
|
36
|
+
if (defaultInstance) {
|
|
37
|
+
return defaultInstance;
|
|
38
|
+
}
|
|
39
|
+
if (defaultProvider === void 0) {
|
|
40
|
+
throw new NoProviderError("There is no cryptography implementation installed");
|
|
41
|
+
}
|
|
42
|
+
defaultInstance = defaultProvider();
|
|
43
|
+
if (logImplementationName) {
|
|
44
|
+
logger.debug("Using", Diagnostic.strong(defaultInstance.implementationName), "cryptography implementation");
|
|
45
|
+
}
|
|
46
|
+
return defaultInstance;
|
|
47
|
+
},
|
|
48
|
+
get provider() {
|
|
49
|
+
return defaultProvider;
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Set the default crypto provider.
|
|
53
|
+
*/
|
|
54
|
+
set provider(provider) {
|
|
55
|
+
if (defaultProvider === provider) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
defaultProvider = void 0;
|
|
59
|
+
defaultProvider = provider;
|
|
60
|
+
},
|
|
61
|
+
get implementationName() {
|
|
62
|
+
return Crypto.default.implementationName;
|
|
63
|
+
},
|
|
64
|
+
encrypt(key, data, nonce, aad) {
|
|
65
|
+
return Crypto.default.encrypt(key, data, nonce, aad);
|
|
66
|
+
},
|
|
67
|
+
decrypt(key, data, nonce, aad) {
|
|
68
|
+
return Crypto.default.decrypt(key, data, nonce, aad);
|
|
69
|
+
},
|
|
70
|
+
getRandomData(length) {
|
|
71
|
+
return Crypto.default.getRandomData(length);
|
|
72
|
+
},
|
|
73
|
+
getRandom() {
|
|
74
|
+
return Crypto.default.getRandomData(CRYPTO_RANDOM_LENGTH);
|
|
75
|
+
},
|
|
76
|
+
getRandomUInt16() {
|
|
77
|
+
return new DataReader(Crypto.default.getRandomData(2), Endian.Little).readUInt16();
|
|
78
|
+
},
|
|
79
|
+
getRandomUInt32() {
|
|
80
|
+
return new DataReader(Crypto.default.getRandomData(4), Endian.Little).readUInt32();
|
|
81
|
+
},
|
|
82
|
+
getRandomBigUInt64() {
|
|
83
|
+
return new DataReader(Crypto.default.getRandomData(8), Endian.Little).readUInt64();
|
|
84
|
+
},
|
|
85
|
+
getRandomBigInt(size, maxValue) {
|
|
39
86
|
const { bytesToNumberBE } = ec;
|
|
40
87
|
if (maxValue === void 0) {
|
|
41
88
|
return bytesToNumberBE(Crypto.getRandomData(size));
|
|
@@ -44,23 +91,39 @@ class Crypto {
|
|
|
44
91
|
const random = bytesToNumberBE(Crypto.getRandomData(size));
|
|
45
92
|
if (random < maxValue) return random;
|
|
46
93
|
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
94
|
+
},
|
|
95
|
+
computeSha256(data) {
|
|
96
|
+
return Crypto.default.computeSha256(data);
|
|
97
|
+
},
|
|
98
|
+
createPbkdf2Key(secret, salt, iteration, keyLength) {
|
|
99
|
+
return Crypto.default.createPbkdf2Key(secret, salt, iteration, keyLength);
|
|
100
|
+
},
|
|
101
|
+
createHkdfKey(secret, salt, info, length) {
|
|
102
|
+
return Crypto.default.createHkdfKey(secret, salt, info, length);
|
|
103
|
+
},
|
|
104
|
+
signHmac(key, data) {
|
|
105
|
+
return Crypto.default.signHmac(key, data);
|
|
106
|
+
},
|
|
107
|
+
signEcdsa(privateKey, data, dsaEncoding) {
|
|
108
|
+
return Crypto.default.signEcdsa(privateKey, data, dsaEncoding);
|
|
109
|
+
},
|
|
110
|
+
verifyEcdsa(publicKey, data, signature, dsaEncoding) {
|
|
111
|
+
return Crypto.default.verifyEcdsa(publicKey, data, signature, dsaEncoding);
|
|
112
|
+
},
|
|
113
|
+
createKeyPair() {
|
|
114
|
+
return Crypto.default.createKeyPair();
|
|
115
|
+
},
|
|
116
|
+
generateDhSecret(key, peerKey) {
|
|
117
|
+
return Crypto.default.generateDhSecret(key, peerKey);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
Crypto;
|
|
59
121
|
Boot.init(() => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
122
|
+
logImplementationName = true;
|
|
123
|
+
defaultInstance = void 0;
|
|
124
|
+
defaultProvider = void 0;
|
|
63
125
|
if (typeof MatterHooks !== "undefined") {
|
|
126
|
+
logImplementationName = true;
|
|
64
127
|
MatterHooks.cryptoSetup?.(Crypto);
|
|
65
128
|
}
|
|
66
129
|
});
|
|
@@ -73,8 +136,6 @@ export {
|
|
|
73
136
|
CRYPTO_RANDOM_LENGTH,
|
|
74
137
|
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
75
138
|
Crypto,
|
|
76
|
-
CryptoDecryptError,
|
|
77
|
-
CryptoVerifyError,
|
|
78
139
|
ec
|
|
79
140
|
};
|
|
80
141
|
//# sourceMappingURL=Crypto.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Crypto.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY;AAErB,YAAY,SAAS;AACrB,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Project CHIP Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { MatterError } from "#MatterError.js";
|
|
7
|
+
/**
|
|
8
|
+
* Errors thrown by crypto implementations.
|
|
9
|
+
*/
|
|
10
|
+
export declare class CryptoError extends MatterError {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Thrown when a crypto algorithm encounters invalid input.
|
|
14
|
+
*/
|
|
15
|
+
export declare class CryptoInputError extends MatterError {
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Thrown when verification fails.
|
|
19
|
+
*/
|
|
20
|
+
export declare class CryptoVerifyError extends CryptoError {
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Thrown when decryption fails.
|
|
24
|
+
*/
|
|
25
|
+
export declare class CryptoDecryptError extends CryptoError {
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Thrown when cryptographic key parameters are invalid.
|
|
29
|
+
*/
|
|
30
|
+
export declare class KeyInputError extends CryptoInputError {
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=CryptoError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CryptoError.d.ts","sourceRoot":"","sources":["../../../src/crypto/CryptoError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAW;CAAG;AAE/C;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;CAAG;AAEpD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;CAAG;AAErD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;CAAG;AAEtD;;GAEG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;CAAG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Project CHIP Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { MatterError } from "#MatterError.js";
|
|
7
|
+
class CryptoError extends MatterError {
|
|
8
|
+
}
|
|
9
|
+
class CryptoInputError extends MatterError {
|
|
10
|
+
}
|
|
11
|
+
class CryptoVerifyError extends CryptoError {
|
|
12
|
+
}
|
|
13
|
+
class CryptoDecryptError extends CryptoError {
|
|
14
|
+
}
|
|
15
|
+
class KeyInputError extends CryptoInputError {
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
CryptoDecryptError,
|
|
19
|
+
CryptoError,
|
|
20
|
+
CryptoInputError,
|
|
21
|
+
CryptoVerifyError,
|
|
22
|
+
KeyInputError
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=CryptoError.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/crypto/CryptoError.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAKrB,MAAM,oBAAoB,YAAY;AAAC;AAKvC,MAAM,yBAAyB,YAAY;AAAC;AAK5C,MAAM,0BAA0B,YAAY;AAAC;AAK7C,MAAM,2BAA2B,YAAY;AAAC;AAK9C,MAAM,sBAAsB,iBAAiB;AAAC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/esm/crypto/Key.d.ts
CHANGED
|
@@ -157,11 +157,11 @@ export interface SymmetricKey extends Key {
|
|
|
157
157
|
*/
|
|
158
158
|
export declare function Key(properties: Partial<Key>): Key;
|
|
159
159
|
/**
|
|
160
|
-
*
|
|
160
|
+
* EC private key factory.
|
|
161
161
|
*/
|
|
162
162
|
export declare function PrivateKey(privateKey: Uint8Array | BinaryKeyPair, options?: Partial<Key>): PrivateKey;
|
|
163
163
|
/**
|
|
164
|
-
*
|
|
164
|
+
* EC public key factory.
|
|
165
165
|
*/
|
|
166
166
|
export declare function PublicKey(publicKey: Uint8Array, options?: Partial<Key>): PublicKey;
|
|
167
167
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/crypto/Key.js
CHANGED
|
@@ -8,12 +8,11 @@ import { DerCodec, DerType } from "../codec/DerCodec.js";
|
|
|
8
8
|
import { MatterError, NotImplementedError } from "../MatterError.js";
|
|
9
9
|
import { Bytes } from "../util/Bytes.js";
|
|
10
10
|
import { ec } from "./Crypto.js";
|
|
11
|
+
import { KeyInputError } from "./CryptoError.js";
|
|
11
12
|
const {
|
|
12
13
|
numberToBytesBE,
|
|
13
14
|
p256: { ProjectivePoint }
|
|
14
15
|
} = ec;
|
|
15
|
-
class KeyError extends MatterError {
|
|
16
|
-
}
|
|
17
16
|
const JWK_KEYS = [
|
|
18
17
|
"crv",
|
|
19
18
|
"d",
|
|
@@ -60,19 +59,19 @@ const CurveLookup = {
|
|
|
60
59
|
function checkDerVersion(type, node, version) {
|
|
61
60
|
const derVersion = node && node._tag === DerType.Integer && node._bytes && node._bytes.length === 1 && node._bytes[0];
|
|
62
61
|
if (derVersion !== version) {
|
|
63
|
-
throw new
|
|
62
|
+
throw new KeyInputError(`${type} key version mismatch`);
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
65
|
function getDerObjectID(type, node) {
|
|
67
66
|
const id = node && node._tag === DerType.ObjectIdentifier && node._bytes?.length > 1 && node._bytes;
|
|
68
67
|
if (id) return id;
|
|
69
|
-
throw new
|
|
68
|
+
throw new KeyInputError(`Missing object in ${type} key`);
|
|
70
69
|
}
|
|
71
70
|
function getDerCurve(type, node) {
|
|
72
71
|
const oid = getDerObjectID(type, node);
|
|
73
72
|
const curve = CurveLookup[Bytes.toHex(oid)];
|
|
74
73
|
if (curve) return curve;
|
|
75
|
-
throw new
|
|
74
|
+
throw new KeyInputError(`Unsupported ${type} EC curve`);
|
|
76
75
|
}
|
|
77
76
|
function getDerKey(type, node, derType = DerType.OctetString) {
|
|
78
77
|
const key = node && node._tag === derType && node._bytes?.length > 1 && node._bytes;
|
|
@@ -106,12 +105,12 @@ var Translators;
|
|
|
106
105
|
const algorithmElements = outer?._elements?.[1]?._elements;
|
|
107
106
|
const algorithm = getDerObjectID("PKCS #8", algorithmElements?.[0]);
|
|
108
107
|
if (Bytes.toHex(algorithm) !== "2a8648ce3d0201" /* ecPublicKey */) {
|
|
109
|
-
throw new
|
|
108
|
+
throw new KeyInputError("Unsupported PKCS #8 decryption algorithm");
|
|
110
109
|
}
|
|
111
110
|
const curve = getDerCurve("PKCS #8", algorithmElements?.[1]);
|
|
112
111
|
const innerBytes = outer?._elements?.[2]._bytes;
|
|
113
112
|
if (innerBytes === void 0 || innerBytes === null) {
|
|
114
|
-
throw new
|
|
113
|
+
throw new KeyInputError("Invalid PKCS #8 key");
|
|
115
114
|
}
|
|
116
115
|
const inner = DerCodec.decode(innerBytes);
|
|
117
116
|
const key = getDerKey("PKCS #8", inner?._elements?.[1]);
|
|
@@ -129,7 +128,7 @@ var Translators;
|
|
|
129
128
|
const algorithmElements = decoded?._elements?.[0]?._elements;
|
|
130
129
|
const algorithm = getDerObjectID("SPKI", algorithmElements?.[0]);
|
|
131
130
|
if (Bytes.toHex(algorithm) !== "2a8648ce3d0201" /* ecPublicKey */) {
|
|
132
|
-
throw new
|
|
131
|
+
throw new KeyInputError("Unsupported SPKI decryption algorithm");
|
|
133
132
|
}
|
|
134
133
|
const curve = getDerCurve("SPKI", algorithmElements?.[1]);
|
|
135
134
|
const key = getDerKey("SPKI", decoded?._elements?.[1], DerType.BitString);
|
|
@@ -144,16 +143,16 @@ var Translators;
|
|
|
144
143
|
Translators2.publicBits = {
|
|
145
144
|
set: function(input) {
|
|
146
145
|
if (!(input.length % 2)) {
|
|
147
|
-
throw new
|
|
146
|
+
throw new KeyInputError("Invalid public key encoding");
|
|
148
147
|
}
|
|
149
148
|
switch (input[0]) {
|
|
150
149
|
case 2:
|
|
151
150
|
case 3:
|
|
152
|
-
throw new
|
|
151
|
+
throw new KeyInputError("Unsupported public key compression");
|
|
153
152
|
case 4:
|
|
154
153
|
break;
|
|
155
154
|
case 5:
|
|
156
|
-
throw new
|
|
155
|
+
throw new KeyInputError("Illegal public key format specifier");
|
|
157
156
|
}
|
|
158
157
|
const coordinateLength = (input.length - 1) / 2;
|
|
159
158
|
inferCurve(this, coordinateLength);
|
|
@@ -220,7 +219,7 @@ function inferCurve(key, bytes) {
|
|
|
220
219
|
key.curve = "P-256" /* p256 */;
|
|
221
220
|
break;
|
|
222
221
|
default:
|
|
223
|
-
throw new
|
|
222
|
+
throw new KeyInputError(`Cannot infer named curve from key length ${bytes}`);
|
|
224
223
|
}
|
|
225
224
|
}
|
|
226
225
|
}
|
|
@@ -258,7 +257,7 @@ function Key(properties) {
|
|
|
258
257
|
get: () => {
|
|
259
258
|
const result = that[target];
|
|
260
259
|
if (result === void 0) {
|
|
261
|
-
throw new
|
|
260
|
+
throw new KeyInputError(`Key field ${target} is not defined`);
|
|
262
261
|
}
|
|
263
262
|
return result;
|
|
264
263
|
},
|
|
@@ -269,8 +268,8 @@ function Key(properties) {
|
|
|
269
268
|
assign(alias);
|
|
270
269
|
});
|
|
271
270
|
function derivePublicFromPrivate() {
|
|
272
|
-
if (that.type !== "EC" /* EC */) throw new
|
|
273
|
-
if (!that.private) throw new
|
|
271
|
+
if (that.type !== "EC" /* EC */) throw new KeyInputError("EC key type required to compute public point");
|
|
272
|
+
if (!that.private) throw new KeyInputError("EC private key required to compute public point");
|
|
274
273
|
const crv = that.crv;
|
|
275
274
|
let keyLength;
|
|
276
275
|
switch (crv) {
|
|
@@ -278,7 +277,7 @@ function Key(properties) {
|
|
|
278
277
|
keyLength = 32;
|
|
279
278
|
break;
|
|
280
279
|
default:
|
|
281
|
-
throw new
|
|
280
|
+
throw new KeyInputError(`Unsupported elliptic curve ${crv}`);
|
|
282
281
|
}
|
|
283
282
|
const ecKey = ProjectivePoint.fromPrivateKey(that.privateKey);
|
|
284
283
|
that.xBits = numberToBytesBE(ecKey.x, keyLength);
|
|
@@ -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;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["KeyType", "CurveType", "Asn1ObjectID", "Translators", "publicBits", "Aliases", "Base64Codecs", "AssertedAliases"]
|
|
6
6
|
}
|
|
@@ -26,7 +26,7 @@ class Spake2p {
|
|
|
26
26
|
static async computeW0W1({ iterations, salt }, pin) {
|
|
27
27
|
const pinWriter = new DataWriter(Endian.Little);
|
|
28
28
|
pinWriter.writeUInt32(pin);
|
|
29
|
-
const ws = await Crypto.
|
|
29
|
+
const ws = await Crypto.createPbkdf2Key(pinWriter.toByteArray(), salt, iterations, CRYPTO_W_SIZE_BYTES * 2);
|
|
30
30
|
const w0 = mod(bytesToNumberBE(ws.slice(0, 40)), P256_CURVE.n);
|
|
31
31
|
const w1 = mod(bytesToNumberBE(ws.slice(40, 80)), P256_CURVE.n);
|
|
32
32
|
return { w0, w1 };
|
|
@@ -76,11 +76,11 @@ class Spake2p {
|
|
|
76
76
|
const TT_HASH = await this.computeTranscriptHash(X, Y, Z, V);
|
|
77
77
|
const Ka = TT_HASH.slice(0, 16);
|
|
78
78
|
const Ke = TT_HASH.slice(16, 32);
|
|
79
|
-
const KcAB = await Crypto.
|
|
79
|
+
const KcAB = await Crypto.createHkdfKey(Ka, new Uint8Array(0), Bytes.fromString("ConfirmationKeys"), 32);
|
|
80
80
|
const KcA = KcAB.slice(0, 16);
|
|
81
81
|
const KcB = KcAB.slice(16, 32);
|
|
82
|
-
const hAY = await Crypto.
|
|
83
|
-
const hBX = await Crypto.
|
|
82
|
+
const hAY = await Crypto.signHmac(KcA, Y);
|
|
83
|
+
const hBX = await Crypto.signHmac(KcB, X);
|
|
84
84
|
return { Ke, hAY, hBX };
|
|
85
85
|
}
|
|
86
86
|
computeTranscriptHash(X, Y, Z, V) {
|
|
@@ -95,7 +95,7 @@ class Spake2p {
|
|
|
95
95
|
this.addToContext(TTwriter, Z);
|
|
96
96
|
this.addToContext(TTwriter, V);
|
|
97
97
|
this.addToContext(TTwriter, numberToBytesBE(this.w0, 32));
|
|
98
|
-
return Crypto.
|
|
98
|
+
return Crypto.computeSha256(TTwriter.toByteArray());
|
|
99
99
|
}
|
|
100
100
|
addToContext(TTwriter, data) {
|
|
101
101
|
TTwriter.writeUInt64(data.length);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Spake2p.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B,SAAS,OAAO,cAAc;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,QAAQ,UAAU;AAC3B,SAAS,+BAA+B;AAExC,MAAM;AAAA,EACF,MAAM,EAAE,iBAAiB,OAAO,WAAW;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACJ,IAAI;AAGJ,MAAM,IAAI,gBAAgB,QAAQ,oEAAoE;AACtG,MAAM,IAAI,gBAAgB,QAAQ,oEAAoE;AAEtG,MAAM,sBAAsB,0BAA0B;AAO/C,MAAM,QAAQ;AAAA,EAqBjB,YACqB,SACA,QACA,IACnB;AAHmB;AACA;AACA;AAAA,EAClB;AAAA,EAxBH,aAAa,YAAY,EAAE,YAAY,KAAK,GAAoB,KAAa;AACzE,UAAM,YAAY,IAAI,WAAW,OAAO,MAAM;AAC9C,cAAU,YAAY,GAAG;AACzB,UAAM,KAAK,MAAM,OAAO,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*
|
|
4
|
+
* Portions copyright 2022-2023 Project CHIP Authors
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
import { Crypto, CryptoDsaEncoding } from "./Crypto.js";
|
|
8
|
+
import { PrivateKey, PublicKey } from "./Key.js";
|
|
9
|
+
/**
|
|
10
|
+
* A {@link Crypto} implementation based on standard "crypto.subtle" with missing portions implemented using JS.
|
|
11
|
+
*
|
|
12
|
+
* WARNING: This code is unaudited. Use a trusted native alternative where available.
|
|
13
|
+
*
|
|
14
|
+
* This module is mostly based on {@link crypto.subtle}. This should be a reliable native implementation. However,
|
|
15
|
+
* Web Crypto doesn't support AES-CCM required by Matter so fall back to a JS implementation for that. See relevant
|
|
16
|
+
* warnings in the "aes" subdirectory.
|
|
17
|
+
*/
|
|
18
|
+
export declare class StandardCrypto implements Crypto {
|
|
19
|
+
implementationName: string;
|
|
20
|
+
static provider(): StandardCrypto;
|
|
21
|
+
getRandomData(length: number): Uint8Array;
|
|
22
|
+
encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, associatedData?: Uint8Array): Uint8Array<ArrayBufferLike>;
|
|
23
|
+
decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, associatedData?: Uint8Array): Uint8Array<ArrayBufferLike>;
|
|
24
|
+
computeSha256(buffer: Uint8Array | Uint8Array[]): Promise<Uint8Array<ArrayBuffer>>;
|
|
25
|
+
createPbkdf2Key(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): Promise<Uint8Array<ArrayBuffer>>;
|
|
26
|
+
createHkdfKey(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): Promise<Uint8Array<ArrayBuffer>>;
|
|
27
|
+
signHmac(secret: Uint8Array, data: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;
|
|
28
|
+
signEcdsa(key: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): Promise<Uint8Array<ArrayBuffer>>;
|
|
29
|
+
verifyEcdsa(key: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): Promise<void>;
|
|
30
|
+
createKeyPair(): Promise<PrivateKey>;
|
|
31
|
+
generateDhSecret(key: PrivateKey, peerKey: PublicKey): Promise<Uint8Array<ArrayBuffer>>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=StandardCrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,MAAM,EAA+B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAA2B,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAU1E;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,MAAM;IACzC,kBAAkB,SAAQ;IAE1B,MAAM,CAAC,QAAQ;IAIf,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAMzC,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;CAkC7D"}
|