@matter/nodejs 0.14.1-alpha.0-20250606-a9bcd03f9 → 0.15.0-alpha.0-20250612-ddd428561
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/config.d.ts +8 -0
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +22 -0
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/crypto/NodeJsCrypto.d.ts +10 -10
- package/dist/cjs/crypto/NodeJsCrypto.d.ts.map +1 -1
- package/dist/cjs/crypto/NodeJsCrypto.js +13 -10
- package/dist/cjs/crypto/NodeJsCrypto.js.map +1 -1
- package/dist/cjs/crypto/index.d.ts +0 -1
- package/dist/cjs/crypto/index.d.ts.map +1 -1
- package/dist/cjs/crypto/index.js +0 -1
- package/dist/cjs/crypto/index.js.map +1 -1
- package/dist/cjs/environment/NodeJsEnvironment.d.ts +5 -2
- package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +1 -1
- package/dist/cjs/environment/NodeJsEnvironment.js +19 -4
- package/dist/cjs/environment/NodeJsEnvironment.js.map +1 -1
- package/dist/cjs/environment/ProcessManager.d.ts.map +1 -1
- package/dist/cjs/environment/ProcessManager.js +2 -3
- package/dist/cjs/environment/ProcessManager.js.map +1 -1
- package/dist/cjs/environment/register.js +1 -3
- package/dist/cjs/environment/register.js.map +1 -1
- package/dist/cjs/net/index.d.ts +0 -1
- package/dist/cjs/net/index.d.ts.map +1 -1
- package/dist/cjs/net/index.js +0 -1
- package/dist/cjs/net/index.js.map +1 -1
- package/dist/esm/config.d.ts +8 -0
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +22 -0
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/crypto/NodeJsCrypto.d.ts +10 -10
- package/dist/esm/crypto/NodeJsCrypto.d.ts.map +1 -1
- package/dist/esm/crypto/NodeJsCrypto.js +13 -11
- package/dist/esm/crypto/NodeJsCrypto.js.map +1 -1
- package/dist/esm/crypto/index.d.ts +0 -1
- package/dist/esm/crypto/index.d.ts.map +1 -1
- package/dist/esm/crypto/index.js +0 -1
- package/dist/esm/crypto/index.js.map +1 -1
- package/dist/esm/environment/NodeJsEnvironment.d.ts +5 -2
- package/dist/esm/environment/NodeJsEnvironment.d.ts.map +1 -1
- package/dist/esm/environment/NodeJsEnvironment.js +21 -4
- package/dist/esm/environment/NodeJsEnvironment.js.map +1 -1
- package/dist/esm/environment/ProcessManager.d.ts.map +1 -1
- package/dist/esm/environment/ProcessManager.js +2 -3
- package/dist/esm/environment/ProcessManager.js.map +1 -1
- package/dist/esm/environment/register.js +2 -4
- package/dist/esm/environment/register.js.map +1 -1
- package/dist/esm/net/index.d.ts +0 -1
- package/dist/esm/net/index.d.ts.map +1 -1
- package/dist/esm/net/index.js +0 -1
- package/dist/esm/net/index.js.map +1 -1
- package/package.json +10 -10
- package/src/config.ts +26 -0
- package/src/crypto/NodeJsCrypto.ts +18 -11
- package/src/crypto/index.ts +0 -1
- package/src/environment/NodeJsEnvironment.ts +30 -7
- package/src/environment/ProcessManager.ts +2 -3
- package/src/environment/register.ts +2 -4
- package/src/net/index.ts +0 -1
- package/dist/cjs/crypto/register.d.ts +0 -7
- package/dist/cjs/crypto/register.d.ts.map +0 -1
- package/dist/cjs/crypto/register.js +0 -23
- package/dist/cjs/crypto/register.js.map +0 -6
- package/dist/cjs/net/register.d.ts +0 -7
- package/dist/cjs/net/register.d.ts.map +0 -1
- package/dist/cjs/net/register.js +0 -24
- package/dist/cjs/net/register.js.map +0 -6
- package/dist/esm/crypto/register.d.ts +0 -7
- package/dist/esm/crypto/register.d.ts.map +0 -1
- package/dist/esm/crypto/register.js +0 -22
- package/dist/esm/crypto/register.js.map +0 -6
- package/dist/esm/net/register.d.ts +0 -7
- package/dist/esm/net/register.d.ts.map +0 -1
- package/dist/esm/net/register.js +0 -23
- package/dist/esm/net/register.js.map +0 -6
- package/src/crypto/register.ts +0 -27
- package/src/net/register.ts +0 -31
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
CRYPTO_ENCRYPT_ALGORITHM,
|
|
12
12
|
CRYPTO_HASH_ALGORITHM,
|
|
13
13
|
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
14
|
-
Crypto,
|
|
15
14
|
CryptoDecryptError,
|
|
16
15
|
CryptoVerifyError,
|
|
17
16
|
PrivateKey,
|
|
18
17
|
asError
|
|
19
18
|
} from "#general";
|
|
20
19
|
import * as crypto from "node:crypto";
|
|
21
|
-
class NodeJsCrypto
|
|
20
|
+
class NodeJsCrypto {
|
|
21
|
+
implementationName = "Node.js";
|
|
22
22
|
encrypt(key, data, nonce, aad) {
|
|
23
23
|
const cipher = crypto.createCipheriv(CRYPTO_ENCRYPT_ALGORITHM, key, nonce, {
|
|
24
24
|
authTagLength: CRYPTO_AUTH_TAG_LENGTH
|
|
@@ -63,10 +63,7 @@ class NodeJsCrypto extends Crypto {
|
|
|
63
63
|
sharedSecret: new Uint8Array(ecdh.computeSecret(peerPublicKey))
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
-
|
|
67
|
-
return new Uint8Array(ecdh.computeSecret(peerPublicKey));
|
|
68
|
-
}
|
|
69
|
-
hash(data) {
|
|
66
|
+
computeSha256(data) {
|
|
70
67
|
const hasher = crypto.createHash(CRYPTO_HASH_ALGORITHM);
|
|
71
68
|
if (Array.isArray(data)) {
|
|
72
69
|
data.forEach((chunk) => hasher.update(chunk));
|
|
@@ -75,7 +72,7 @@ class NodeJsCrypto extends Crypto {
|
|
|
75
72
|
}
|
|
76
73
|
return new Uint8Array(hasher.digest());
|
|
77
74
|
}
|
|
78
|
-
|
|
75
|
+
createPbkdf2Key(secret, salt, iteration, keyLength) {
|
|
79
76
|
return new Promise((resolver, rejecter) => {
|
|
80
77
|
crypto.pbkdf2(secret, salt, iteration, keyLength, CRYPTO_HASH_ALGORITHM, (error, key) => {
|
|
81
78
|
if (error !== null) rejecter(error);
|
|
@@ -83,7 +80,7 @@ class NodeJsCrypto extends Crypto {
|
|
|
83
80
|
});
|
|
84
81
|
});
|
|
85
82
|
}
|
|
86
|
-
|
|
83
|
+
createHkdfKey(secret, salt, info, length = CRYPTO_SYMMETRIC_KEY_LENGTH) {
|
|
87
84
|
return new Promise((resolver, rejecter) => {
|
|
88
85
|
crypto.hkdf(CRYPTO_HASH_ALGORITHM, secret, salt, info, length, (error, key) => {
|
|
89
86
|
if (error !== null) rejecter(error);
|
|
@@ -91,12 +88,12 @@ class NodeJsCrypto extends Crypto {
|
|
|
91
88
|
});
|
|
92
89
|
});
|
|
93
90
|
}
|
|
94
|
-
|
|
91
|
+
signHmac(key, data) {
|
|
95
92
|
const hmac = crypto.createHmac(CRYPTO_HASH_ALGORITHM, key);
|
|
96
93
|
hmac.update(data);
|
|
97
94
|
return new Uint8Array(hmac.digest());
|
|
98
95
|
}
|
|
99
|
-
|
|
96
|
+
signEcdsa(privateKey, data, dsaEncoding = "ieee-p1363") {
|
|
100
97
|
const signer = crypto.createSign(CRYPTO_HASH_ALGORITHM);
|
|
101
98
|
if (Array.isArray(data)) {
|
|
102
99
|
data.forEach((chunk) => signer.update(chunk));
|
|
@@ -112,7 +109,7 @@ class NodeJsCrypto extends Crypto {
|
|
|
112
109
|
})
|
|
113
110
|
);
|
|
114
111
|
}
|
|
115
|
-
|
|
112
|
+
verifyEcdsa(publicKey, data, signature, dsaEncoding = "ieee-p1363") {
|
|
116
113
|
const verifier = crypto.createVerify(CRYPTO_HASH_ALGORITHM);
|
|
117
114
|
verifier.update(data);
|
|
118
115
|
const success = verifier.verify(
|
|
@@ -134,6 +131,11 @@ class NodeJsCrypto extends Crypto {
|
|
|
134
131
|
privateKey.set(nodePrivateKey, CRYPTO_EC_KEY_BYTES - nodePrivateKey.length);
|
|
135
132
|
return PrivateKey(privateKey, { publicKey: ecdh.getPublicKey() });
|
|
136
133
|
}
|
|
134
|
+
generateDhSecret(key, peerKey) {
|
|
135
|
+
const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
|
|
136
|
+
ecdh.setPrivateKey(key.privateBits);
|
|
137
|
+
return ecdh.computeSecret(peerKey.publicBits);
|
|
138
|
+
}
|
|
137
139
|
}
|
|
138
140
|
export {
|
|
139
141
|
NodeJsCrypto
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/NodeJsCrypto.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC"}
|
package/dist/esm/crypto/index.js
CHANGED
|
@@ -30,13 +30,16 @@ import { Environment, VariableService } from "#general";
|
|
|
30
30
|
* 4. Command line parameters
|
|
31
31
|
*
|
|
32
32
|
* The following variables are defined by this class additionally to {@link Environment}:
|
|
33
|
-
* * `environment` - Name of the environment
|
|
33
|
+
* * `environment` - Name of the environment. Default "default"
|
|
34
34
|
* * `path.root` - Path considered as root for any files to store, Fallback: ".", Default: APPDATA/.matter (Windows), HOME/.matter else (or .matter-<envname>)
|
|
35
35
|
* * `path.config` - Path to config file, Default: "config.json"
|
|
36
|
-
* * `trace.path` - Path of the trace file to write
|
|
36
|
+
* * `trace.path` - Path of the trace file to write. Default: "trace.jsonl" relative to path.root
|
|
37
37
|
* * `trace.enable` - Enable writing a trace file
|
|
38
38
|
* * `storage.path` - Where to store storage files, Default: "path.root"
|
|
39
39
|
* * `storage.clear` - Clear storage on start? Default: false
|
|
40
|
+
* * `nodejs.crypto` - Enables crypto implementation in this package. Default: true
|
|
41
|
+
* * `nodejs.network` - Enables network implementation in this package. Default: true
|
|
42
|
+
* * `nodejs.storage` - Enables file-based storage implementation in this package. Default: true
|
|
40
43
|
* * `runtime.signals` - By default register SIGINT and SIGUSR2 (diag) handlers, set to false if not wanted
|
|
41
44
|
* * `runtime.exitcode` - By default we set the process.exitcode to 0 (ok) or 1 (crash); set to false to disable
|
|
42
45
|
* * `runtime.unhandlederrors` - By default we log unhandled errors to matter.js log; set to false to disable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/NodeJsEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"NodeJsEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/NodeJsEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAIH,WAAW,EAMX,eAAe,EAClB,MAAM,UAAU,CAAC;AAQlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,iBAAiB,gBAmBhC;AAgFD,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe;;;EAsBnD;AAoBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;;EAiBhD"}
|
|
@@ -4,8 +4,11 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { config } from "#config.js";
|
|
7
|
+
import { NodeJsCrypto } from "#crypto/NodeJsCrypto.js";
|
|
7
8
|
import {
|
|
8
9
|
asError,
|
|
10
|
+
Boot,
|
|
11
|
+
Crypto,
|
|
9
12
|
Environment,
|
|
10
13
|
ImplementationError,
|
|
11
14
|
LogFormat,
|
|
@@ -22,6 +25,7 @@ import { ProcessManager } from "./ProcessManager.js";
|
|
|
22
25
|
function NodeJsEnvironment() {
|
|
23
26
|
const env = new Environment("default");
|
|
24
27
|
loadVariables(env);
|
|
28
|
+
configureCrypto(env);
|
|
25
29
|
configureRuntime(env);
|
|
26
30
|
configureStorage(env);
|
|
27
31
|
configureNetwork(env);
|
|
@@ -58,12 +62,28 @@ function loadVariables(env) {
|
|
|
58
62
|
await writeFile(configPath, JSON.stringify(configVars, void 0, 4));
|
|
59
63
|
};
|
|
60
64
|
}
|
|
65
|
+
function configureCrypto(env) {
|
|
66
|
+
if (!config.installCrypto || !(env.vars.boolean("nodejs.crypto") ?? true)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
Boot.init(() => {
|
|
70
|
+
Crypto.provider = () => new NodeJsCrypto();
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function configureNetwork(env) {
|
|
74
|
+
if (!config.installNetwork || !(env.vars.boolean("nodejs.network") ?? true)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
Boot.init(() => {
|
|
78
|
+
env.set(Network, new NodeJsNetwork());
|
|
79
|
+
});
|
|
80
|
+
}
|
|
61
81
|
function configureRuntime(env) {
|
|
62
82
|
const processManager = new ProcessManager(env);
|
|
63
83
|
env.set(ProcessManager, processManager);
|
|
64
84
|
}
|
|
65
85
|
function configureStorage(env) {
|
|
66
|
-
if (!config.initializeStorage) {
|
|
86
|
+
if (!config.initializeStorage || !(env.vars.boolean("nodejs.storage") ?? true)) {
|
|
67
87
|
return;
|
|
68
88
|
}
|
|
69
89
|
const service = env.get(StorageService);
|
|
@@ -72,9 +92,6 @@ function configureStorage(env) {
|
|
|
72
92
|
});
|
|
73
93
|
service.factory = (namespace) => new StorageBackendDisk(resolve(service.location ?? ".", namespace), env.vars.get("storage.clear", false));
|
|
74
94
|
}
|
|
75
|
-
function configureNetwork(env) {
|
|
76
|
-
env.set(Network, new NodeJsNetwork());
|
|
77
|
-
}
|
|
78
95
|
function loadConfigFile(vars) {
|
|
79
96
|
const configPath = vars.get("path.config", "config.json");
|
|
80
97
|
if (!existsSync(configPath)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/NodeJsEnvironment.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AACP,SAAS,YAAY,oBAAoB;AACzC,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAC9B,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessManager.d.ts","sourceRoot":"","sources":["../../../src/environment/ProcessManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAU,cAAc,EAAwB,MAAM,UAAU,CAAC;AAKnG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,YAAW,YAAY;;IAInC,SAAS,CAAC,GAAG,EAAE,WAAW;IAHtC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;gBAGZ,GAAG,EAAE,WAAW;IActC,KAAK;IAOL,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,SAAS,KAAK,gBAAgB,SAE7B;IAED,SAAS,KAAK,kBAAkB,SAE/B;IAED,SAAS,KAAK,wBAAwB,SAErC;IAED,SAAS,CAAC,aAAa,aAiBrB;IAEF,SAAS,CAAC,YAAY,aAMpB;IAEF,SAAS,CAAC,aAAa,aAIrB;IAEF,SAAS,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ProcessManager.d.ts","sourceRoot":"","sources":["../../../src/environment/ProcessManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAU,cAAc,EAAwB,MAAM,UAAU,CAAC;AAKnG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,YAAW,YAAY;;IAInC,SAAS,CAAC,GAAG,EAAE,WAAW;IAHtC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;gBAGZ,GAAG,EAAE,WAAW;IActC,KAAK;IAOL,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,SAAS,KAAK,gBAAgB,SAE7B;IAED,SAAS,KAAK,kBAAkB,SAE/B;IAED,SAAS,KAAK,wBAAwB,SAErC;IAED,SAAS,CAAC,aAAa,aAiBrB;IAEF,SAAS,CAAC,YAAY,aAMpB;IAEF,SAAS,CAAC,aAAa,aAIrB;IAEF,SAAS,CAAC,gBAAgB,aAIxB;IAEF,SAAS,CAAC,WAAW,aAInB;IAEF,SAAS,CAAC,iBAAiB,aAEzB;IAEF,SAAS,CAAC,wBAAwB,aAGhC;IAEF,SAAS,CAAC,0BAA0B,aAGlC;CAUL"}
|
|
@@ -66,9 +66,8 @@ class ProcessManager {
|
|
|
66
66
|
};
|
|
67
67
|
interruptHandler = () => {
|
|
68
68
|
this.uninstallInterruptHandlers();
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
69
|
+
this.installInterruptHandlers();
|
|
70
|
+
this.runtime.interrupt();
|
|
72
71
|
};
|
|
73
72
|
exitHandler = () => {
|
|
74
73
|
if (process.exitCode === 13) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/ProcessManager.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAoC,QAAQ,sBAA4C;AAGxF,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAuBnC,MAAM,eAAuC;AAAA,EAIhD,YAAsB,KAAkB;AAAlB;AAClB,SAAK,UAAU,IAAI,IAAI,cAAc;AAErC,SAAK,QAAQ,QAAQ,GAAG,KAAK,aAAa;AAC1C,SAAK,QAAQ,QAAQ,GAAG,KAAK,YAAY;AACzC,SAAK,QAAQ,QAAQ,GAAG,KAAK,aAAa;AAE1C,QAAI,KAAK,0BAA0B;AAC/B,cAAQ,YAAY,4BAA4B,WAAS;AACrD,eAAO,qBAAqB,KAAK;AAAA,MACrC,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAfU;AAAA,EACV,2BAA2B;AAAA,EAgB3B,QAAQ;AACJ,SAAK,QAAQ,QAAQ,IAAI,KAAK,aAAa;AAC3C,SAAK,QAAQ,QAAQ,IAAI,KAAK,YAAY;AAC1C,SAAK,QAAQ,QAAQ,IAAI,KAAK,aAAa;AAC3C,SAAK,eAAe;AAAA,EACxB;AAAA,EAEA,CAAC,OAAO,OAAO,IAAI;AACf,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,IAAc,mBAAmB;AAC7B,WAAO,KAAK,IAAI,KAAK,IAAI,mBAAmB,IAAI;AAAA,EACpD;AAAA,EAEA,IAAc,qBAAqB;AAC/B,WAAO,KAAK,IAAI,KAAK,IAAI,oBAAoB,IAAI;AAAA,EACrD;AAAA,EAEA,IAAc,2BAA2B;AACrC,WAAO,KAAK,IAAI,KAAK,IAAI,2BAA2B,IAAI;AAAA,EAC5D;AAAA,EAEU,gBAAgB,MAAM;AAC5B,SAAK,IAAI,KAAK,IAAI,MAAM;AACpB,UAAI,KAAK,kBAAkB;AACvB,YAAI,KAAK,0BAA0B;AAC/B;AAAA,QACJ;AAEA,aAAK,yBAAyB;AAE9B,gBAAQ,GAAG,WAAW,KAAK,iBAAiB;AAC5C,gBAAQ,GAAG,QAAQ,KAAK,WAAW;AAEnC,aAAK,2BAA2B;AAAA,MACpC,OAAO;AACH,aAAK,eAAe;AAAA,MACxB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEU,eAAe,MAAM;AAC3B,SAAK,eAAe;AAEpB,QAAI,KAAK,sBAAsB,QAAQ,aAAa,QAAW;AAC3D,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEU,gBAAgB,MAAM;AAC5B,QAAI,KAAK,oBAAoB;AACzB,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEU,mBAAmB,MAAM;AAC/B,SAAK,2BAA2B;AAChC,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAoC,QAAQ,sBAA4C;AAGxF,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAuBnC,MAAM,eAAuC;AAAA,EAIhD,YAAsB,KAAkB;AAAlB;AAClB,SAAK,UAAU,IAAI,IAAI,cAAc;AAErC,SAAK,QAAQ,QAAQ,GAAG,KAAK,aAAa;AAC1C,SAAK,QAAQ,QAAQ,GAAG,KAAK,YAAY;AACzC,SAAK,QAAQ,QAAQ,GAAG,KAAK,aAAa;AAE1C,QAAI,KAAK,0BAA0B;AAC/B,cAAQ,YAAY,4BAA4B,WAAS;AACrD,eAAO,qBAAqB,KAAK;AAAA,MACrC,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAfU;AAAA,EACV,2BAA2B;AAAA,EAgB3B,QAAQ;AACJ,SAAK,QAAQ,QAAQ,IAAI,KAAK,aAAa;AAC3C,SAAK,QAAQ,QAAQ,IAAI,KAAK,YAAY;AAC1C,SAAK,QAAQ,QAAQ,IAAI,KAAK,aAAa;AAC3C,SAAK,eAAe;AAAA,EACxB;AAAA,EAEA,CAAC,OAAO,OAAO,IAAI;AACf,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,IAAc,mBAAmB;AAC7B,WAAO,KAAK,IAAI,KAAK,IAAI,mBAAmB,IAAI;AAAA,EACpD;AAAA,EAEA,IAAc,qBAAqB;AAC/B,WAAO,KAAK,IAAI,KAAK,IAAI,oBAAoB,IAAI;AAAA,EACrD;AAAA,EAEA,IAAc,2BAA2B;AACrC,WAAO,KAAK,IAAI,KAAK,IAAI,2BAA2B,IAAI;AAAA,EAC5D;AAAA,EAEU,gBAAgB,MAAM;AAC5B,SAAK,IAAI,KAAK,IAAI,MAAM;AACpB,UAAI,KAAK,kBAAkB;AACvB,YAAI,KAAK,0BAA0B;AAC/B;AAAA,QACJ;AAEA,aAAK,yBAAyB;AAE9B,gBAAQ,GAAG,WAAW,KAAK,iBAAiB;AAC5C,gBAAQ,GAAG,QAAQ,KAAK,WAAW;AAEnC,aAAK,2BAA2B;AAAA,MACpC,OAAO;AACH,aAAK,eAAe;AAAA,MACxB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEU,eAAe,MAAM;AAC3B,SAAK,eAAe;AAEpB,QAAI,KAAK,sBAAsB,QAAQ,aAAa,QAAW;AAC3D,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEU,gBAAgB,MAAM;AAC5B,QAAI,KAAK,oBAAoB;AACzB,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEU,mBAAmB,MAAM;AAC/B,SAAK,2BAA2B;AAChC,SAAK,yBAAyB;AAC9B,SAAK,QAAQ,UAAU;AAAA,EAC3B;AAAA,EAEU,cAAc,MAAM;AAC1B,QAAI,QAAQ,aAAa,IAAI;AACzB,aAAO,MAAM,yEAAyE;AAAA,IAC1F;AAAA,EACJ;AAAA,EAEU,oBAAoB,MAAM;AAChC,SAAK,IAAI,SAAS;AAAA,EACtB;AAAA,EAEU,2BAA2B,MAAM;AACvC,YAAQ,GAAG,UAAU,KAAK,gBAAgB;AAC1C,YAAQ,GAAG,WAAW,KAAK,gBAAgB;AAAA,EAC/C;AAAA,EAEU,6BAA6B,MAAM;AACzC,YAAQ,IAAI,UAAU,KAAK,gBAAgB;AAC3C,YAAQ,IAAI,WAAW,KAAK,gBAAgB;AAAA,EAChD;AAAA,EAEA,iBAAiB;AACb,QAAI,KAAK,0BAA0B;AAC/B,WAAK,2BAA2B;AAChC,cAAQ,IAAI,WAAW,KAAK,iBAAiB;AAC7C,cAAQ,IAAI,QAAQ,KAAK,WAAW;AACpC,WAAK,2BAA2B;AAAA,IACpC;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { Environment } from "#general";
|
|
7
7
|
import { NodeJsEnvironment } from "./NodeJsEnvironment.js";
|
|
8
|
-
|
|
9
|
-
Environment.default = NodeJsEnvironment();
|
|
10
|
-
});
|
|
8
|
+
Environment.default = NodeJsEnvironment();
|
|
11
9
|
//# sourceMappingURL=register.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/register.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAElC,YAAY,UAAU,kBAAkB;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/net/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/net/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/net/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
|
package/dist/esm/net/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/nodejs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0-alpha.0-20250612-ddd428561",
|
|
4
4
|
"description": "Node.js platform support for matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -44,17 +44,17 @@
|
|
|
44
44
|
"#*": "./src/*"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@matter/general": "0.
|
|
48
|
-
"@matter/node": "0.
|
|
49
|
-
"@matter/protocol": "0.
|
|
50
|
-
"@matter/types": "0.
|
|
47
|
+
"@matter/general": "0.15.0-alpha.0-20250612-ddd428561",
|
|
48
|
+
"@matter/node": "0.15.0-alpha.0-20250612-ddd428561",
|
|
49
|
+
"@matter/protocol": "0.15.0-alpha.0-20250612-ddd428561",
|
|
50
|
+
"@matter/types": "0.15.0-alpha.0-20250612-ddd428561"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@matter/model": "0.
|
|
54
|
-
"@matter/protocol": "0.
|
|
55
|
-
"@matter/tools": "0.
|
|
56
|
-
"@matter/testing": "0.
|
|
57
|
-
"@project-chip/matter.js": "0.
|
|
53
|
+
"@matter/model": "0.15.0-alpha.0-20250612-ddd428561",
|
|
54
|
+
"@matter/protocol": "0.15.0-alpha.0-20250612-ddd428561",
|
|
55
|
+
"@matter/tools": "0.15.0-alpha.0-20250612-ddd428561",
|
|
56
|
+
"@matter/testing": "0.15.0-alpha.0-20250612-ddd428561",
|
|
57
|
+
"@project-chip/matter.js": "0.15.0-alpha.0-20250612-ddd428561",
|
|
58
58
|
"@types/bytebuffer": "^5.0.49"
|
|
59
59
|
},
|
|
60
60
|
"files": [
|
package/src/config.ts
CHANGED
|
@@ -15,6 +15,8 @@ let initializeStorage = true;
|
|
|
15
15
|
let trapProcessSignals = true;
|
|
16
16
|
let trapUnhandledErrors = true;
|
|
17
17
|
let setProcessExitCodeOnError = true;
|
|
18
|
+
let installCrypto = true;
|
|
19
|
+
let installNetwork = true;
|
|
18
20
|
|
|
19
21
|
export class NodeJsAlreadyInitializedError extends Error {}
|
|
20
22
|
|
|
@@ -120,6 +122,30 @@ export const config = {
|
|
|
120
122
|
loadConfigFile = value;
|
|
121
123
|
},
|
|
122
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Enables installation of native node.js crypto implementation (default: true).
|
|
127
|
+
*/
|
|
128
|
+
get installCrypto() {
|
|
129
|
+
return installCrypto;
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
set installCrypto(value: boolean) {
|
|
133
|
+
assertUninitialized("installNodeJsCrypto");
|
|
134
|
+
installCrypto = value;
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Enables installation of node.js networking into default environment.
|
|
139
|
+
*/
|
|
140
|
+
get installNetwork() {
|
|
141
|
+
return installNetwork;
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
set installNetwork(value: boolean) {
|
|
145
|
+
assertUninitialized("installNodeJsNetwork");
|
|
146
|
+
installNetwork = value;
|
|
147
|
+
},
|
|
148
|
+
|
|
123
149
|
/**
|
|
124
150
|
* Enables automatic initialization of storage on startup (default: true).
|
|
125
151
|
*
|
|
@@ -17,11 +17,14 @@ import {
|
|
|
17
17
|
CryptoDsaEncoding,
|
|
18
18
|
CryptoVerifyError,
|
|
19
19
|
PrivateKey,
|
|
20
|
+
PublicKey,
|
|
20
21
|
asError,
|
|
21
22
|
} from "#general";
|
|
22
23
|
import * as crypto from "node:crypto";
|
|
23
24
|
|
|
24
|
-
export class NodeJsCrypto
|
|
25
|
+
export class NodeJsCrypto implements Crypto {
|
|
26
|
+
implementationName = "Node.js";
|
|
27
|
+
|
|
25
28
|
encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array {
|
|
26
29
|
const cipher = crypto.createCipheriv(CRYPTO_ENCRYPT_ALGORITHM, key, nonce, {
|
|
27
30
|
authTagLength: CRYPTO_AUTH_TAG_LENGTH,
|
|
@@ -71,11 +74,7 @@ export class NodeJsCrypto extends Crypto {
|
|
|
71
74
|
};
|
|
72
75
|
}
|
|
73
76
|
|
|
74
|
-
|
|
75
|
-
return new Uint8Array(ecdh.computeSecret(peerPublicKey));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
hash(data: Uint8Array | Uint8Array[]): Uint8Array {
|
|
77
|
+
computeSha256(data: Uint8Array | Uint8Array[]): Uint8Array {
|
|
79
78
|
const hasher = crypto.createHash(CRYPTO_HASH_ALGORITHM);
|
|
80
79
|
if (Array.isArray(data)) {
|
|
81
80
|
data.forEach(chunk => hasher.update(chunk));
|
|
@@ -85,7 +84,7 @@ export class NodeJsCrypto extends Crypto {
|
|
|
85
84
|
return new Uint8Array(hasher.digest());
|
|
86
85
|
}
|
|
87
86
|
|
|
88
|
-
|
|
87
|
+
createPbkdf2Key(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): Promise<Uint8Array> {
|
|
89
88
|
return new Promise<Uint8Array>((resolver, rejecter) => {
|
|
90
89
|
crypto.pbkdf2(secret, salt, iteration, keyLength, CRYPTO_HASH_ALGORITHM, (error, key) => {
|
|
91
90
|
if (error !== null) rejecter(error);
|
|
@@ -94,7 +93,7 @@ export class NodeJsCrypto extends Crypto {
|
|
|
94
93
|
});
|
|
95
94
|
}
|
|
96
95
|
|
|
97
|
-
|
|
96
|
+
createHkdfKey(
|
|
98
97
|
secret: Uint8Array,
|
|
99
98
|
salt: Uint8Array,
|
|
100
99
|
info: Uint8Array,
|
|
@@ -108,13 +107,13 @@ export class NodeJsCrypto extends Crypto {
|
|
|
108
107
|
});
|
|
109
108
|
}
|
|
110
109
|
|
|
111
|
-
|
|
110
|
+
signHmac(key: Uint8Array, data: Uint8Array): Uint8Array {
|
|
112
111
|
const hmac = crypto.createHmac(CRYPTO_HASH_ALGORITHM, key);
|
|
113
112
|
hmac.update(data);
|
|
114
113
|
return new Uint8Array(hmac.digest());
|
|
115
114
|
}
|
|
116
115
|
|
|
117
|
-
|
|
116
|
+
signEcdsa(
|
|
118
117
|
privateKey: JsonWebKey,
|
|
119
118
|
data: Uint8Array | Uint8Array[],
|
|
120
119
|
dsaEncoding: CryptoDsaEncoding = "ieee-p1363",
|
|
@@ -135,7 +134,7 @@ export class NodeJsCrypto extends Crypto {
|
|
|
135
134
|
);
|
|
136
135
|
}
|
|
137
136
|
|
|
138
|
-
|
|
137
|
+
verifyEcdsa(
|
|
139
138
|
publicKey: JsonWebKey,
|
|
140
139
|
data: Uint8Array,
|
|
141
140
|
signature: Uint8Array,
|
|
@@ -156,6 +155,7 @@ export class NodeJsCrypto extends Crypto {
|
|
|
156
155
|
}
|
|
157
156
|
|
|
158
157
|
createKeyPair() {
|
|
158
|
+
// Note that we this key may be used for DH or DSA but we use an ECDH to generate
|
|
159
159
|
const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
|
|
160
160
|
ecdh.generateKeys();
|
|
161
161
|
|
|
@@ -167,4 +167,11 @@ export class NodeJsCrypto extends Crypto {
|
|
|
167
167
|
|
|
168
168
|
return PrivateKey(privateKey, { publicKey: ecdh.getPublicKey() });
|
|
169
169
|
}
|
|
170
|
+
|
|
171
|
+
generateDhSecret(key: PrivateKey, peerKey: PublicKey) {
|
|
172
|
+
const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
|
|
173
|
+
ecdh.setPrivateKey(key.privateBits);
|
|
174
|
+
|
|
175
|
+
return ecdh.computeSecret(peerKey.publicBits);
|
|
176
|
+
}
|
|
170
177
|
}
|
package/src/crypto/index.ts
CHANGED
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { config } from "#config.js";
|
|
8
|
+
import { NodeJsCrypto } from "#crypto/NodeJsCrypto.js";
|
|
8
9
|
import {
|
|
9
10
|
asError,
|
|
11
|
+
Boot,
|
|
12
|
+
Crypto,
|
|
10
13
|
Environment,
|
|
11
14
|
ImplementationError,
|
|
12
15
|
LogFormat,
|
|
@@ -48,13 +51,16 @@ import { ProcessManager } from "./ProcessManager.js";
|
|
|
48
51
|
* 4. Command line parameters
|
|
49
52
|
*
|
|
50
53
|
* The following variables are defined by this class additionally to {@link Environment}:
|
|
51
|
-
* * `environment` - Name of the environment
|
|
54
|
+
* * `environment` - Name of the environment. Default "default"
|
|
52
55
|
* * `path.root` - Path considered as root for any files to store, Fallback: ".", Default: APPDATA/.matter (Windows), HOME/.matter else (or .matter-<envname>)
|
|
53
56
|
* * `path.config` - Path to config file, Default: "config.json"
|
|
54
|
-
* * `trace.path` - Path of the trace file to write
|
|
57
|
+
* * `trace.path` - Path of the trace file to write. Default: "trace.jsonl" relative to path.root
|
|
55
58
|
* * `trace.enable` - Enable writing a trace file
|
|
56
59
|
* * `storage.path` - Where to store storage files, Default: "path.root"
|
|
57
60
|
* * `storage.clear` - Clear storage on start? Default: false
|
|
61
|
+
* * `nodejs.crypto` - Enables crypto implementation in this package. Default: true
|
|
62
|
+
* * `nodejs.network` - Enables network implementation in this package. Default: true
|
|
63
|
+
* * `nodejs.storage` - Enables file-based storage implementation in this package. Default: true
|
|
58
64
|
* * `runtime.signals` - By default register SIGINT and SIGUSR2 (diag) handlers, set to false if not wanted
|
|
59
65
|
* * `runtime.exitcode` - By default we set the process.exitcode to 0 (ok) or 1 (crash); set to false to disable
|
|
60
66
|
* * `runtime.unhandlederrors` - By default we log unhandled errors to matter.js log; set to false to disable
|
|
@@ -63,6 +69,7 @@ export function NodeJsEnvironment() {
|
|
|
63
69
|
const env = new Environment("default");
|
|
64
70
|
|
|
65
71
|
loadVariables(env);
|
|
72
|
+
configureCrypto(env);
|
|
66
73
|
configureRuntime(env);
|
|
67
74
|
configureStorage(env);
|
|
68
75
|
configureNetwork(env);
|
|
@@ -117,13 +124,33 @@ function loadVariables(env: Environment) {
|
|
|
117
124
|
};
|
|
118
125
|
}
|
|
119
126
|
|
|
127
|
+
function configureCrypto(env: Environment) {
|
|
128
|
+
if (!config.installCrypto || !(env.vars.boolean("nodejs.crypto") ?? true)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
Boot.init(() => {
|
|
133
|
+
Crypto.provider = () => new NodeJsCrypto();
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function configureNetwork(env: Environment) {
|
|
138
|
+
if (!config.installNetwork || !(env.vars.boolean("nodejs.network") ?? true)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
Boot.init(() => {
|
|
143
|
+
env.set(Network, new NodeJsNetwork());
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
120
147
|
function configureRuntime(env: Environment) {
|
|
121
148
|
const processManager = new ProcessManager(env);
|
|
122
149
|
env.set(ProcessManager, processManager);
|
|
123
150
|
}
|
|
124
151
|
|
|
125
152
|
function configureStorage(env: Environment) {
|
|
126
|
-
if (!config.initializeStorage) {
|
|
153
|
+
if (!config.initializeStorage || !(env.vars.boolean("nodejs.storage") ?? true)) {
|
|
127
154
|
return;
|
|
128
155
|
}
|
|
129
156
|
|
|
@@ -137,10 +164,6 @@ function configureStorage(env: Environment) {
|
|
|
137
164
|
new StorageBackendDisk(resolve(service.location ?? ".", namespace), env.vars.get("storage.clear", false));
|
|
138
165
|
}
|
|
139
166
|
|
|
140
|
-
function configureNetwork(env: Environment) {
|
|
141
|
-
env.set(Network, new NodeJsNetwork());
|
|
142
|
-
}
|
|
143
|
-
|
|
144
167
|
export function loadConfigFile(vars: VariableService) {
|
|
145
168
|
const configPath = vars.get("path.config", "config.json");
|
|
146
169
|
|
|
@@ -106,9 +106,8 @@ export class ProcessManager implements Destructable {
|
|
|
106
106
|
|
|
107
107
|
protected interruptHandler = () => {
|
|
108
108
|
this.uninstallInterruptHandlers();
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
109
|
+
this.installInterruptHandlers();
|
|
110
|
+
this.runtime.interrupt();
|
|
112
111
|
};
|
|
113
112
|
|
|
114
113
|
protected exitHandler = () => {
|
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { Environment } from "#general";
|
|
8
8
|
import { NodeJsEnvironment } from "./NodeJsEnvironment.js";
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
Environment.default = NodeJsEnvironment();
|
|
12
|
-
});
|
|
10
|
+
Environment.default = NodeJsEnvironment();
|
package/src/net/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/crypto/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|