@matter/node 0.16.10 → 0.16.11-alpha.0-20260225-033797f3c
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/behavior/system/http/HttpInterface.js +1 -1
- package/dist/cjs/behavior/system/http/HttpInterface.js.map +1 -1
- package/dist/cjs/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
- package/dist/cjs/behavior/system/mqtt/MqttInterface.js +2 -0
- package/dist/cjs/behavior/system/mqtt/MqttInterface.js.map +1 -1
- package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts +11 -3
- package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
- package/dist/cjs/behavior/system/remote/RemoteInterface.js +16 -9
- package/dist/cjs/behavior/system/remote/RemoteInterface.js.map +1 -1
- package/dist/cjs/behavior/system/remote/RemoteServer.d.ts +8 -0
- package/dist/cjs/behavior/system/remote/RemoteServer.d.ts.map +1 -1
- package/dist/cjs/behavior/system/remote/RemoteServer.js +58 -2
- package/dist/cjs/behavior/system/remote/RemoteServer.js.map +1 -1
- package/dist/cjs/behavior/system/websocket/WebSocketInterface.js +1 -1
- package/dist/cjs/behavior/system/websocket/WebSocketInterface.js.map +1 -1
- package/dist/esm/behavior/system/http/HttpInterface.js +1 -1
- package/dist/esm/behavior/system/http/HttpInterface.js.map +1 -1
- package/dist/esm/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
- package/dist/esm/behavior/system/mqtt/MqttInterface.js +2 -0
- package/dist/esm/behavior/system/mqtt/MqttInterface.js.map +1 -1
- package/dist/esm/behavior/system/remote/RemoteInterface.d.ts +11 -3
- package/dist/esm/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
- package/dist/esm/behavior/system/remote/RemoteInterface.js +16 -9
- package/dist/esm/behavior/system/remote/RemoteInterface.js.map +1 -1
- package/dist/esm/behavior/system/remote/RemoteServer.d.ts +8 -0
- package/dist/esm/behavior/system/remote/RemoteServer.d.ts.map +1 -1
- package/dist/esm/behavior/system/remote/RemoteServer.js +72 -3
- package/dist/esm/behavior/system/remote/RemoteServer.js.map +1 -1
- package/dist/esm/behavior/system/websocket/WebSocketInterface.js +1 -1
- package/dist/esm/behavior/system/websocket/WebSocketInterface.js.map +1 -1
- package/package.json +7 -7
- package/src/behavior/system/http/HttpInterface.ts +1 -1
- package/src/behavior/system/mqtt/MqttInterface.ts +2 -0
- package/src/behavior/system/remote/RemoteInterface.ts +27 -12
- package/src/behavior/system/remote/RemoteServer.ts +79 -2
- package/src/behavior/system/websocket/WebSocketInterface.ts +1 -1
|
@@ -41,7 +41,7 @@ class HttpInterface extends import_RemoteInterface.RemoteInterface {
|
|
|
41
41
|
static protocol = "http";
|
|
42
42
|
#http;
|
|
43
43
|
async start() {
|
|
44
|
-
this.#http = await this.env.get(import_general.HttpService).create(this
|
|
44
|
+
this.#http = await this.env.get(import_general.HttpService).create(this);
|
|
45
45
|
this.#http.http = this.#handleRequest.bind(this);
|
|
46
46
|
}
|
|
47
47
|
async stop() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/http/HttpInterface.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAYO;AACP,mBAAoD;AACpD,iBAAoB;AACpB,qBAAwB;AAIxB,6BAAgC;AAzBhC;AAAA;AAAA;AAAA;AAAA;AA2BA,MAAM,SAAS,sBAAO,IAAI,eAAe;AAKlC,MAAM,sBAAsB,uCAAgB;AAAA,EAC/C,OAAgB,WAAW;AAAA,EAC3B;AAAA,EAEA,MAAyB,QAAQ;AAC7B,SAAK,QAAQ,MAAM,KAAK,IAAI,IAAI,0BAAW,EAAE,OAAO,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["response"]
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MqttInterface.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/mqtt/MqttInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuBH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,eAAe;;IAC9C,OAAgB,QAAQ,SAAU;cAMT,KAAK;
|
|
1
|
+
{"version":3,"file":"MqttInterface.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/mqtt/MqttInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuBH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,eAAe;;IAC9C,OAAgB,QAAQ,SAAU;cAMT,KAAK;cA4BL,IAAI;CAmPhC"}
|
|
@@ -90,6 +90,8 @@ class MqttInterface extends import_RemoteInterface.RemoteInterface {
|
|
|
90
90
|
this.#endpoint = await this.env.get(import_general.MqttService).connect({
|
|
91
91
|
address: this.address,
|
|
92
92
|
environment: this.node.env,
|
|
93
|
+
certificate: this.certificate,
|
|
94
|
+
key: this.key,
|
|
93
95
|
will: {
|
|
94
96
|
topic: this.root.at("status").toString(),
|
|
95
97
|
payload: "offline"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/mqtt/MqttInterface.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAWO;AACP,mBAAoD;AACpD,yBAA4B;AAC5B,mBAA+B;AAC/B,iBAAoB;AACpB,qBAAwB;AACxB,sBAAyB;AAGzB,4BAA+B;AAC/B,6BAAgC;AA3BhC;AAAA;AAAA;AAAA;AAAA;AA6BA,MAAM,eAAe;AAWd,MAAM,sBAAsB,uCAAgB;AAAA,EAC/C,OAAgB,WAAW;AAAA,EAE3B;AAAA,EACA,SAAS,IAAI,qBAAM,IAAI;AAAA,EACvB,kBAAkB,oBAAI,IAAsC;AAAA,EAE5D,MAAyB,QAAQ;AAC7B,SAAK,YAAY,MAAM,KAAK,IAAI,IAAI,0BAAW,EAAE,QAAQ;AAAA,MACrD,SAAS,KAAK;AAAA,MACd,aAAa,KAAK,KAAK;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -11,15 +11,17 @@ import { ApiPath } from "./api/ApiPath.js";
|
|
|
11
11
|
*/
|
|
12
12
|
export declare abstract class RemoteInterface {
|
|
13
13
|
#private;
|
|
14
|
-
constructor(node
|
|
14
|
+
constructor({ node, address, certificate, key }: RemoteInterface.Configuration);
|
|
15
15
|
join(...name: unknown[]): Lifetime;
|
|
16
16
|
get root(): ApiPath;
|
|
17
17
|
get env(): import("#general").Environment;
|
|
18
18
|
get node(): ServerNode<ServerNode.RootEndpoint>;
|
|
19
19
|
get address(): AppAddress;
|
|
20
|
+
get certificate(): string | undefined;
|
|
21
|
+
get key(): string | undefined;
|
|
20
22
|
get isAborted(): boolean;
|
|
21
23
|
get abort(): AbortSignal;
|
|
22
|
-
static create<This extends new (
|
|
24
|
+
static create<This extends new (config: RemoteInterface.Configuration) => RemoteInterface>(this: This, config: RemoteInterface.Configuration): Promise<RemoteInterface>;
|
|
23
25
|
close(): Promise<void>;
|
|
24
26
|
protected assertProtocol(appProtocol: string): void;
|
|
25
27
|
protected addWorker(worker: Promise<void>): void;
|
|
@@ -36,7 +38,13 @@ export declare abstract class RemoteInterface {
|
|
|
36
38
|
export declare namespace RemoteInterface {
|
|
37
39
|
interface Type {
|
|
38
40
|
protocol: string;
|
|
39
|
-
create(
|
|
41
|
+
create(config: Configuration): Promise<RemoteInterface>;
|
|
42
|
+
}
|
|
43
|
+
interface Configuration {
|
|
44
|
+
node: ServerNode;
|
|
45
|
+
address: AppAddress;
|
|
46
|
+
certificate?: string;
|
|
47
|
+
key?: string;
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
//# sourceMappingURL=RemoteInterface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteInterface.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/remote/RemoteInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,UAAU,EAIV,QAAQ,EAGX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C;;GAEG;AACH,8BAAsB,eAAe;;
|
|
1
|
+
{"version":3,"file":"RemoteInterface.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/remote/RemoteInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,UAAU,EAIV,QAAQ,EAGX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C;;GAEG;AACH,8BAAsB,eAAe;;gBAUrB,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,eAAe,CAAC,aAAa;IAW9E,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE;IAIvB,IAAI,IAAI,YAEP;IAED,IAAI,GAAG,mCAEN;IAED,IAAI,IAAI,wCAEP;IAED,IAAI,OAAO,eAEV;IAED,IAAI,WAAW,uBAEd;IAED,IAAI,GAAG,uBAEN;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,KAAK,gBAER;WAEY,MAAM,CAAC,IAAI,SAAS,KAAK,MAAM,EAAE,eAAe,CAAC,aAAa,KAAK,eAAe,EAC3F,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,eAAe,CAAC,aAAa;IAYnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM;IAS5C,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;IAIzC,MAAM,CAAC,QAAQ,SAAM;IAErB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEzC;;OAEG;cACa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxC;AAED,yBAAiB,eAAe,CAAC;IAC7B,UAAiB,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;KAC3D;IAED,UAAiB,aAAa;QAC1B,IAAI,EAAE,UAAU,CAAC;QACjB,OAAO,EAAE,UAAU,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB;CACJ"}
|
|
@@ -81,17 +81,17 @@ class RemoteInterface {
|
|
|
81
81
|
#abort = new import_general.Abort();
|
|
82
82
|
#root;
|
|
83
83
|
#workers;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
);
|
|
89
|
-
}
|
|
84
|
+
#certificate;
|
|
85
|
+
#key;
|
|
86
|
+
constructor({ node, address, certificate, key }) {
|
|
87
|
+
this.assertProtocol(address.appProtocol);
|
|
90
88
|
this.#node = node;
|
|
91
89
|
this.#lifetime = node.env.join((0, import_general.decamelize)(this.constructor.name, " "));
|
|
92
90
|
this.#workers = new import_general.BasicMultiplex();
|
|
93
91
|
this.#address = address;
|
|
94
92
|
this.#root = new import_ApiPath.ApiPath(address);
|
|
93
|
+
this.#certificate = certificate;
|
|
94
|
+
this.#key = key;
|
|
95
95
|
}
|
|
96
96
|
join(...name) {
|
|
97
97
|
return this.#lifetime.join(...name);
|
|
@@ -108,14 +108,20 @@ class RemoteInterface {
|
|
|
108
108
|
get address() {
|
|
109
109
|
return this.#address;
|
|
110
110
|
}
|
|
111
|
+
get certificate() {
|
|
112
|
+
return this.#certificate;
|
|
113
|
+
}
|
|
114
|
+
get key() {
|
|
115
|
+
return this.#key;
|
|
116
|
+
}
|
|
111
117
|
get isAborted() {
|
|
112
118
|
return this.#abort.aborted;
|
|
113
119
|
}
|
|
114
120
|
get abort() {
|
|
115
121
|
return this.#abort.signal;
|
|
116
122
|
}
|
|
117
|
-
static async create(
|
|
118
|
-
const instance = new this(
|
|
123
|
+
static async create(config) {
|
|
124
|
+
const instance = new this(config);
|
|
119
125
|
try {
|
|
120
126
|
await instance.start();
|
|
121
127
|
} catch (e) {
|
|
@@ -144,7 +150,8 @@ class RemoteInterface {
|
|
|
144
150
|
}
|
|
145
151
|
}
|
|
146
152
|
assertProtocol(appProtocol) {
|
|
147
|
-
|
|
153
|
+
const baseProtocol = this.constructor.protocol;
|
|
154
|
+
if (appProtocol !== baseProtocol && appProtocol !== `${baseProtocol}s`) {
|
|
148
155
|
throw new import_general.ImplementationError(
|
|
149
156
|
`Invalid protocol ${this.address} for API endpoin type ${this.constructor.name}`
|
|
150
157
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/remote/RemoteInterface.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBASO;AAEP,qBAAwB;AAjBxB;AAAA;AAAA;AAAA;AAAA;AAmBA,MAAM,SAAS,sBAAO,IAAI,eAAe;AAKlC,MAAe,gBAAgB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,IAAI,qBAAM;AAAA,EACnB;AAAA,EACA;AAAA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBASO;AAEP,qBAAwB;AAjBxB;AAAA;AAAA;AAAA;AAAA;AAmBA,MAAM,SAAS,sBAAO,IAAI,eAAe;AAKlC,MAAe,gBAAgB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,IAAI,qBAAM;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,EAAE,MAAM,SAAS,aAAa,IAAI,GAAkC;AAC5E,SAAK,eAAe,QAAQ,WAAW;AACvC,SAAK,QAAQ;AACb,SAAK,YAAY,KAAK,IAAI,SAAK,2BAAW,KAAK,YAAY,MAAM,GAAG,CAAC;AACrE,SAAK,WAAW,IAAI,8BAAe;AACnC,SAAK,WAAW;AAChB,SAAK,QAAQ,IAAI,uBAAQ,OAAO;AAChC,SAAK,eAAe;AACpB,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,QAAQ,MAAiB;AACrB,WAAO,KAAK,UAAU,KAAK,GAAG,IAAI;AAAA,EACtC;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,MAAM;AACN,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,MAAM;AACN,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEA,aAAa,OAET,QACF;AACE,UAAM,WAAW,IAAI,KAAK,MAAM;AAChC,QAAI;AACA,YAAM,SAAS,MAAM;AAAA,IACzB,SAAS,GAAG;AACR,YAAM,SAAS,MAAM;AACrB,YAAM;AAAA,IACV;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,QAAuB;AAKzB;AAAA;AAJA,UAAI,KAAK,WAAW;AAChB;AAAA,MACJ;AAEA,YAAM,WAAW,qBAAK,UAAU,QAAQ;AAExC,WAAK,OAAO;AAEZ,UAAI;AACA,cAAM,KAAK,KAAK;AAAA,MACpB,SAAS,GAAG;AACR,eAAO,MAAM,kCAAkC,KAAK,OAAO,EAAE;AAAA,MACjE;AAAA,aARA;AAAA;AAAA;AAAA;AAAA;AAAA,EASJ;AAAA,EAEU,eAAe,aAAqB;AAC1C,UAAM,eAAgB,KAAK,YAAgD;AAC3E,QAAI,gBAAgB,gBAAgB,gBAAgB,GAAG,YAAY,KAAK;AACpE,YAAM,IAAI;AAAA,QACN,oBAAoB,KAAK,OAAO,yBAAyB,KAAK,YAAY,IAAI;AAAA,MAClF;AAAA,IACJ;AAAA,EACJ;AAAA,EAEU,UAAU,QAAuB;AACvC,SAAK,SAAS,IAAI,MAAM;AAAA,EAC5B;AAAA,EAEA,OAAO,WAAW;AAAA;AAAA;AAAA;AAAA,EAUlB,MAAgB,OAAsB;AAClC,UAAM,KAAK,SAAS,MAAM;AAAA,EAC9B;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -56,6 +56,14 @@ export declare namespace RemoteServer {
|
|
|
56
56
|
* also online.
|
|
57
57
|
*/
|
|
58
58
|
allowOfflineUse: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Certificate for encrypted endpoints in PEM format.
|
|
61
|
+
*/
|
|
62
|
+
certificate?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Private key for encrypted endpoints in PEM format.
|
|
65
|
+
*/
|
|
66
|
+
key?: string;
|
|
59
67
|
}
|
|
60
68
|
}
|
|
61
69
|
//# sourceMappingURL=RemoteServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteServer.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/remote/RemoteServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"RemoteServer.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/remote/RemoteServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAgBjD,OAAO,EAAE,aAAa,EAAgB,MAAM,QAAQ,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;GAWG;AACH,8BAAsB,YAAa,SAAQ,QAAQ;;IAC/C,gBAAyB,KAAK,QAAQ;IAEtC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC;IAEnC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;IAChC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;IAEnB,UAAU;IAyBhB,CAAC,MAAM,CAAC,YAAY,CAAC;IA4C9B,gBAAyB,MAAM,gBAW7B;CAmCL;AAED,yBAAiB,YAAY,CAAC;IAC1B,MAAa,QAAQ;QACjB,SAAS,CAAC,EAAE,eAAe,CAAC;KAC/B;IAED,MAAa,KAAK;QACd;;;;;;;;;;WAUG;QACH,OAAO,SAAM;QAEb;;WAEG;QACH,OAAO,UAAQ;QAEf;;;;;WAKG;QACH,eAAe,UAAQ;QAEvB;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB;CACJ"}
|
|
@@ -31,10 +31,17 @@ var import_ServerEndpointInitializer = require("#node/server/ServerEndpointIniti
|
|
|
31
31
|
* Copyright 2022-2026 Matter.js Authors
|
|
32
32
|
* SPDX-License-Identifier: Apache-2.0
|
|
33
33
|
*/
|
|
34
|
+
const logger = import_general.Logger.get("RemoteServer");
|
|
34
35
|
class RemoteServer extends import_Behavior.Behavior {
|
|
35
36
|
static early = true;
|
|
36
37
|
static interfaceType;
|
|
37
38
|
async initialize() {
|
|
39
|
+
if (this.state.key === void 0) {
|
|
40
|
+
this.state.key = await this.#createKey();
|
|
41
|
+
}
|
|
42
|
+
if (this.state.certificate === void 0) {
|
|
43
|
+
this.state.certificate = await this.#createCertificate(this.state.key);
|
|
44
|
+
}
|
|
38
45
|
if (!(this.env.get(import_EndpointInitializer.EndpointInitializer) instanceof import_ServerEndpointInitializer.ServerEndpointInitializer)) {
|
|
39
46
|
throw new import_general.ImplementationError("Remote server is not installed in a ServerNode");
|
|
40
47
|
}
|
|
@@ -57,8 +64,15 @@ class RemoteServer extends import_Behavior.Behavior {
|
|
|
57
64
|
throw new import_general.InternalError(`Remote server ${this.constructor.name} does not define a remote interface`);
|
|
58
65
|
}
|
|
59
66
|
const address = new import_general.AppAddress(this.state.address);
|
|
60
|
-
const
|
|
67
|
+
const { key, certificate } = this.state;
|
|
68
|
+
const intf = await interfaceType.create({
|
|
69
|
+
node: this.endpoint,
|
|
70
|
+
address,
|
|
71
|
+
key,
|
|
72
|
+
certificate
|
|
73
|
+
});
|
|
61
74
|
this.internal.interface = intf;
|
|
75
|
+
logger.info("Listening on", import_general.Diagnostic.strong(intf.address));
|
|
62
76
|
}
|
|
63
77
|
async #stop() {
|
|
64
78
|
const { interface: intf } = this.internal;
|
|
@@ -80,8 +94,42 @@ class RemoteServer extends import_Behavior.Behavior {
|
|
|
80
94
|
},
|
|
81
95
|
(0, import_model.FieldElement)({ name: "address", type: "string" }),
|
|
82
96
|
(0, import_model.FieldElement)({ name: "enabled", type: "bool" }),
|
|
83
|
-
(0, import_model.FieldElement)({ name: "allowOfflineUse", type: "bool" })
|
|
97
|
+
(0, import_model.FieldElement)({ name: "allowOfflineUse", type: "bool" }),
|
|
98
|
+
(0, import_model.FieldElement)({ name: "certificate", type: "octstr" }),
|
|
99
|
+
(0, import_model.FieldElement)({ name: "key", type: "octstr" })
|
|
84
100
|
);
|
|
101
|
+
async #createKey() {
|
|
102
|
+
const key = await this.env.get(import_general.Crypto).createKeyPair();
|
|
103
|
+
if (key.pem === void 0) {
|
|
104
|
+
throw new import_general.InternalError("PEM form of new private key is missing");
|
|
105
|
+
}
|
|
106
|
+
return key.pem;
|
|
107
|
+
}
|
|
108
|
+
async #createCertificate(pkcs8) {
|
|
109
|
+
const crypto = this.env.get(import_general.Crypto);
|
|
110
|
+
const key = (0, import_general.Key)({ pem: pkcs8, kty: import_general.KeyType.EC, crv: import_general.CurveType.p256 });
|
|
111
|
+
const notBefore = /* @__PURE__ */ new Date();
|
|
112
|
+
const notAfter = /* @__PURE__ */ new Date();
|
|
113
|
+
notAfter.setFullYear(notAfter.getFullYear() + 10);
|
|
114
|
+
const unsigned = {
|
|
115
|
+
serialNumber: crypto.randomBytes(20),
|
|
116
|
+
subject: { commonName: import_general.X520.CommonName("localhost") },
|
|
117
|
+
validity: {
|
|
118
|
+
notBefore,
|
|
119
|
+
notAfter
|
|
120
|
+
},
|
|
121
|
+
issuer: { commonName: import_general.X520.CommonName("matter.js") },
|
|
122
|
+
extensions: {
|
|
123
|
+
basicConstraints: {
|
|
124
|
+
isCa: true
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
signatureAlgorithm: import_general.X962.EcdsaWithSHA256,
|
|
128
|
+
publicKey: import_general.X962.PublicKeyEcPrime256v1(key.publicBits)
|
|
129
|
+
};
|
|
130
|
+
const certificate = await import_general.X509.sign(this.env.get(import_general.Crypto), key, unsigned);
|
|
131
|
+
return import_general.X509.certificateToPem(certificate);
|
|
132
|
+
}
|
|
85
133
|
}
|
|
86
134
|
((RemoteServer2) => {
|
|
87
135
|
class Internal {
|
|
@@ -112,6 +160,14 @@ class RemoteServer extends import_Behavior.Behavior {
|
|
|
112
160
|
* also online.
|
|
113
161
|
*/
|
|
114
162
|
allowOfflineUse = true;
|
|
163
|
+
/**
|
|
164
|
+
* Certificate for encrypted endpoints in PEM format.
|
|
165
|
+
*/
|
|
166
|
+
certificate;
|
|
167
|
+
/**
|
|
168
|
+
* Private key for encrypted endpoints in PEM format.
|
|
169
|
+
*/
|
|
170
|
+
key;
|
|
115
171
|
}
|
|
116
172
|
RemoteServer2.State = State;
|
|
117
173
|
})(RemoteServer || (RemoteServer = {}));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/remote/RemoteServer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,sBAAyB;AACzB,iCAAoC;AACpC,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["RemoteServer"]
|
|
6
6
|
}
|
|
@@ -84,7 +84,7 @@ class WebSocketInterface extends import_RemoteInterface.RemoteInterface {
|
|
|
84
84
|
#http;
|
|
85
85
|
#mutex = new import_general.Mutex(this);
|
|
86
86
|
async start() {
|
|
87
|
-
this.#http = await this.env.get(import_general.HttpService).create(this
|
|
87
|
+
this.#http = await this.env.get(import_general.HttpService).create(this);
|
|
88
88
|
this.#http.ws = this.#handleConnection.bind(this);
|
|
89
89
|
}
|
|
90
90
|
async stop() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/websocket/WebSocketInterface.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA2F;AAC3F,mBAAoD;AACpD,iBAAoB;AACpB,qBAAwB;AAExB,2BAA8B;AAC9B,4BAA+B;AAC/B,6BAAgC;AAbhC;AAAA;AAAA;AAAA;AAAA;AAeA,MAAM,eAAe;AAKd,MAAM,2BAA2B,uCAAgB;AAAA,EACpD,OAAgB,WAAW;AAAA,EAE3B;AAAA,EACA,SAAS,IAAI,qBAAM,IAAI;AAAA,EAEvB,MAAyB,QAAQ;AAC7B,SAAK,QAAQ,MAAM,KAAK,IAAI,IAAI,0BAAW,EAAE,OAAO,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["request"]
|
|
6
6
|
}
|
|
@@ -24,7 +24,7 @@ class HttpInterface extends RemoteInterface {
|
|
|
24
24
|
static protocol = "http";
|
|
25
25
|
#http;
|
|
26
26
|
async start() {
|
|
27
|
-
this.#http = await this.env.get(HttpService).create(this
|
|
27
|
+
this.#http = await this.env.get(HttpService).create(this);
|
|
28
28
|
this.#http.http = this.#handleRequest.bind(this);
|
|
29
29
|
}
|
|
30
30
|
async stop() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/http/HttpInterface.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,gBAAgB,2BAA2B;AACpD,SAAS,WAAW;AACpB,SAAS,eAAe;AAIxB,SAAS,uBAAuB;AAEhC,MAAM,SAAS,OAAO,IAAI,eAAe;AAKlC,MAAM,sBAAsB,gBAAgB;AAAA,EAC/C,OAAgB,WAAW;AAAA,EAC3B;AAAA,EAEA,MAAyB,QAAQ;AAC7B,SAAK,QAAQ,MAAM,KAAK,IAAI,IAAI,WAAW,EAAE,OAAO,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["response"]
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MqttInterface.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/mqtt/MqttInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuBH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,eAAe;;IAC9C,OAAgB,QAAQ,SAAU;cAMT,KAAK;
|
|
1
|
+
{"version":3,"file":"MqttInterface.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/mqtt/MqttInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuBH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,eAAe;;IAC9C,OAAgB,QAAQ,SAAU;cAMT,KAAK;cA4BL,IAAI;CAmPhC"}
|
|
@@ -77,6 +77,8 @@ class MqttInterface extends RemoteInterface {
|
|
|
77
77
|
this.#endpoint = await this.env.get(MqttService).connect({
|
|
78
78
|
address: this.address,
|
|
79
79
|
environment: this.node.env,
|
|
80
|
+
certificate: this.certificate,
|
|
81
|
+
key: this.key,
|
|
80
82
|
will: {
|
|
81
83
|
topic: this.root.at("status").toString(),
|
|
82
84
|
payload: "offline"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/mqtt/MqttInterface.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,KAAmB,gBAAwB;AACpD,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,WAAW;AACpB,SAAS,eAAe;AACxB,SAAS,gBAAgB;AAGzB,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAEhC,MAAM,eAAe;AAWd,MAAM,sBAAsB,gBAAgB;AAAA,EAC/C,OAAgB,WAAW;AAAA,EAE3B;AAAA,EACA,SAAS,IAAI,MAAM,IAAI;AAAA,EACvB,kBAAkB,oBAAI,IAAsC;AAAA,EAE5D,MAAyB,QAAQ;AAC7B,SAAK,YAAY,MAAM,KAAK,IAAI,IAAI,WAAW,EAAE,QAAQ;AAAA,MACrD,SAAS,KAAK;AAAA,MACd,aAAa,KAAK,KAAK;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -11,15 +11,17 @@ import { ApiPath } from "./api/ApiPath.js";
|
|
|
11
11
|
*/
|
|
12
12
|
export declare abstract class RemoteInterface {
|
|
13
13
|
#private;
|
|
14
|
-
constructor(node
|
|
14
|
+
constructor({ node, address, certificate, key }: RemoteInterface.Configuration);
|
|
15
15
|
join(...name: unknown[]): Lifetime;
|
|
16
16
|
get root(): ApiPath;
|
|
17
17
|
get env(): import("#general").Environment;
|
|
18
18
|
get node(): ServerNode<ServerNode.RootEndpoint>;
|
|
19
19
|
get address(): AppAddress;
|
|
20
|
+
get certificate(): string | undefined;
|
|
21
|
+
get key(): string | undefined;
|
|
20
22
|
get isAborted(): boolean;
|
|
21
23
|
get abort(): AbortSignal;
|
|
22
|
-
static create<This extends new (
|
|
24
|
+
static create<This extends new (config: RemoteInterface.Configuration) => RemoteInterface>(this: This, config: RemoteInterface.Configuration): Promise<RemoteInterface>;
|
|
23
25
|
close(): Promise<void>;
|
|
24
26
|
protected assertProtocol(appProtocol: string): void;
|
|
25
27
|
protected addWorker(worker: Promise<void>): void;
|
|
@@ -36,7 +38,13 @@ export declare abstract class RemoteInterface {
|
|
|
36
38
|
export declare namespace RemoteInterface {
|
|
37
39
|
interface Type {
|
|
38
40
|
protocol: string;
|
|
39
|
-
create(
|
|
41
|
+
create(config: Configuration): Promise<RemoteInterface>;
|
|
42
|
+
}
|
|
43
|
+
interface Configuration {
|
|
44
|
+
node: ServerNode;
|
|
45
|
+
address: AppAddress;
|
|
46
|
+
certificate?: string;
|
|
47
|
+
key?: string;
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
//# sourceMappingURL=RemoteInterface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteInterface.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/remote/RemoteInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,UAAU,EAIV,QAAQ,EAGX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C;;GAEG;AACH,8BAAsB,eAAe;;
|
|
1
|
+
{"version":3,"file":"RemoteInterface.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/remote/RemoteInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,UAAU,EAIV,QAAQ,EAGX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C;;GAEG;AACH,8BAAsB,eAAe;;gBAUrB,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,eAAe,CAAC,aAAa;IAW9E,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE;IAIvB,IAAI,IAAI,YAEP;IAED,IAAI,GAAG,mCAEN;IAED,IAAI,IAAI,wCAEP;IAED,IAAI,OAAO,eAEV;IAED,IAAI,WAAW,uBAEd;IAED,IAAI,GAAG,uBAEN;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,KAAK,gBAER;WAEY,MAAM,CAAC,IAAI,SAAS,KAAK,MAAM,EAAE,eAAe,CAAC,aAAa,KAAK,eAAe,EAC3F,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,eAAe,CAAC,aAAa;IAYnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM;IAS5C,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;IAIzC,MAAM,CAAC,QAAQ,SAAM;IAErB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEzC;;OAEG;cACa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxC;AAED,yBAAiB,eAAe,CAAC;IAC7B,UAAiB,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;KAC3D;IAED,UAAiB,aAAa;QAC1B,IAAI,EAAE,UAAU,CAAC;QACjB,OAAO,EAAE,UAAU,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB;CACJ"}
|
|
@@ -64,17 +64,17 @@ class RemoteInterface {
|
|
|
64
64
|
#abort = new Abort();
|
|
65
65
|
#root;
|
|
66
66
|
#workers;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
);
|
|
72
|
-
}
|
|
67
|
+
#certificate;
|
|
68
|
+
#key;
|
|
69
|
+
constructor({ node, address, certificate, key }) {
|
|
70
|
+
this.assertProtocol(address.appProtocol);
|
|
73
71
|
this.#node = node;
|
|
74
72
|
this.#lifetime = node.env.join(decamelize(this.constructor.name, " "));
|
|
75
73
|
this.#workers = new BasicMultiplex();
|
|
76
74
|
this.#address = address;
|
|
77
75
|
this.#root = new ApiPath(address);
|
|
76
|
+
this.#certificate = certificate;
|
|
77
|
+
this.#key = key;
|
|
78
78
|
}
|
|
79
79
|
join(...name) {
|
|
80
80
|
return this.#lifetime.join(...name);
|
|
@@ -91,14 +91,20 @@ class RemoteInterface {
|
|
|
91
91
|
get address() {
|
|
92
92
|
return this.#address;
|
|
93
93
|
}
|
|
94
|
+
get certificate() {
|
|
95
|
+
return this.#certificate;
|
|
96
|
+
}
|
|
97
|
+
get key() {
|
|
98
|
+
return this.#key;
|
|
99
|
+
}
|
|
94
100
|
get isAborted() {
|
|
95
101
|
return this.#abort.aborted;
|
|
96
102
|
}
|
|
97
103
|
get abort() {
|
|
98
104
|
return this.#abort.signal;
|
|
99
105
|
}
|
|
100
|
-
static async create(
|
|
101
|
-
const instance = new this(
|
|
106
|
+
static async create(config) {
|
|
107
|
+
const instance = new this(config);
|
|
102
108
|
try {
|
|
103
109
|
await instance.start();
|
|
104
110
|
} catch (e) {
|
|
@@ -127,7 +133,8 @@ class RemoteInterface {
|
|
|
127
133
|
}
|
|
128
134
|
}
|
|
129
135
|
assertProtocol(appProtocol) {
|
|
130
|
-
|
|
136
|
+
const baseProtocol = this.constructor.protocol;
|
|
137
|
+
if (appProtocol !== baseProtocol && appProtocol !== `${baseProtocol}s`) {
|
|
131
138
|
throw new ImplementationError(
|
|
132
139
|
`Invalid protocol ${this.address} for API endpoin type ${this.constructor.name}`
|
|
133
140
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/remote/RemoteInterface.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OAEG;AAEP,SAAS,eAAe;AAExB,MAAM,SAAS,OAAO,IAAI,eAAe;AAKlC,MAAe,gBAAgB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,IAAI,MAAM;AAAA,EACnB;AAAA,EACA;AAAA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OAEG;AAEP,SAAS,eAAe;AAExB,MAAM,SAAS,OAAO,IAAI,eAAe;AAKlC,MAAe,gBAAgB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,IAAI,MAAM;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,EAAE,MAAM,SAAS,aAAa,IAAI,GAAkC;AAC5E,SAAK,eAAe,QAAQ,WAAW;AACvC,SAAK,QAAQ;AACb,SAAK,YAAY,KAAK,IAAI,KAAK,WAAW,KAAK,YAAY,MAAM,GAAG,CAAC;AACrE,SAAK,WAAW,IAAI,eAAe;AACnC,SAAK,WAAW;AAChB,SAAK,QAAQ,IAAI,QAAQ,OAAO;AAChC,SAAK,eAAe;AACpB,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,QAAQ,MAAiB;AACrB,WAAO,KAAK,UAAU,KAAK,GAAG,IAAI;AAAA,EACtC;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,MAAM;AACN,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,MAAM;AACN,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEA,aAAa,OAET,QACF;AACE,UAAM,WAAW,IAAI,KAAK,MAAM;AAChC,QAAI;AACA,YAAM,SAAS,MAAM;AAAA,IACzB,SAAS,GAAG;AACR,YAAM,SAAS,MAAM;AACrB,YAAM;AAAA,IACV;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,QAAuB;AAKzB;AAAA;AAJA,UAAI,KAAK,WAAW;AAChB;AAAA,MACJ;AAEA,YAAM,WAAW,qBAAK,UAAU,QAAQ;AAExC,WAAK,OAAO;AAEZ,UAAI;AACA,cAAM,KAAK,KAAK;AAAA,MACpB,SAAS,GAAG;AACR,eAAO,MAAM,kCAAkC,KAAK,OAAO,EAAE;AAAA,MACjE;AAAA,aARA;AAAA;AAAA;AAAA;AAAA;AAAA,EASJ;AAAA,EAEU,eAAe,aAAqB;AAC1C,UAAM,eAAgB,KAAK,YAAgD;AAC3E,QAAI,gBAAgB,gBAAgB,gBAAgB,GAAG,YAAY,KAAK;AACpE,YAAM,IAAI;AAAA,QACN,oBAAoB,KAAK,OAAO,yBAAyB,KAAK,YAAY,IAAI;AAAA,MAClF;AAAA,IACJ;AAAA,EACJ;AAAA,EAEU,UAAU,QAAuB;AACvC,SAAK,SAAS,IAAI,MAAM;AAAA,EAC5B;AAAA,EAEA,OAAO,WAAW;AAAA;AAAA;AAAA;AAAA,EAUlB,MAAgB,OAAsB;AAClC,UAAM,KAAK,SAAS,MAAM;AAAA,EAC9B;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -56,6 +56,14 @@ export declare namespace RemoteServer {
|
|
|
56
56
|
* also online.
|
|
57
57
|
*/
|
|
58
58
|
allowOfflineUse: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Certificate for encrypted endpoints in PEM format.
|
|
61
|
+
*/
|
|
62
|
+
certificate?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Private key for encrypted endpoints in PEM format.
|
|
65
|
+
*/
|
|
66
|
+
key?: string;
|
|
59
67
|
}
|
|
60
68
|
}
|
|
61
69
|
//# sourceMappingURL=RemoteServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteServer.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/remote/RemoteServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"RemoteServer.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/system/remote/RemoteServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAgBjD,OAAO,EAAE,aAAa,EAAgB,MAAM,QAAQ,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;GAWG;AACH,8BAAsB,YAAa,SAAQ,QAAQ;;IAC/C,gBAAyB,KAAK,QAAQ;IAEtC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC;IAEnC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;IAChC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;IAEnB,UAAU;IAyBhB,CAAC,MAAM,CAAC,YAAY,CAAC;IA4C9B,gBAAyB,MAAM,gBAW7B;CAmCL;AAED,yBAAiB,YAAY,CAAC;IAC1B,MAAa,QAAQ;QACjB,SAAS,CAAC,EAAE,eAAe,CAAC;KAC/B;IAED,MAAa,KAAK;QACd;;;;;;;;;;WAUG;QACH,OAAO,SAAM;QAEb;;WAEG;QACH,OAAO,UAAQ;QAEf;;;;;WAKG;QACH,eAAe,UAAQ;QAEvB;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB;CACJ"}
|
|
@@ -5,13 +5,33 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Behavior } from "#behavior/Behavior.js";
|
|
7
7
|
import { EndpointInitializer } from "#endpoint/properties/EndpointInitializer.js";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
AppAddress,
|
|
10
|
+
Crypto,
|
|
11
|
+
CurveType,
|
|
12
|
+
Diagnostic,
|
|
13
|
+
ImplementationError,
|
|
14
|
+
InternalError,
|
|
15
|
+
Key,
|
|
16
|
+
KeyType,
|
|
17
|
+
Logger,
|
|
18
|
+
X509,
|
|
19
|
+
X520,
|
|
20
|
+
X962
|
|
21
|
+
} from "#general";
|
|
9
22
|
import { DatatypeModel, FieldElement } from "#model";
|
|
10
23
|
import { ServerEndpointInitializer } from "#node/server/ServerEndpointInitializer.js";
|
|
24
|
+
const logger = Logger.get("RemoteServer");
|
|
11
25
|
class RemoteServer extends Behavior {
|
|
12
26
|
static early = true;
|
|
13
27
|
static interfaceType;
|
|
14
28
|
async initialize() {
|
|
29
|
+
if (this.state.key === void 0) {
|
|
30
|
+
this.state.key = await this.#createKey();
|
|
31
|
+
}
|
|
32
|
+
if (this.state.certificate === void 0) {
|
|
33
|
+
this.state.certificate = await this.#createCertificate(this.state.key);
|
|
34
|
+
}
|
|
15
35
|
if (!(this.env.get(EndpointInitializer) instanceof ServerEndpointInitializer)) {
|
|
16
36
|
throw new ImplementationError("Remote server is not installed in a ServerNode");
|
|
17
37
|
}
|
|
@@ -34,8 +54,15 @@ class RemoteServer extends Behavior {
|
|
|
34
54
|
throw new InternalError(`Remote server ${this.constructor.name} does not define a remote interface`);
|
|
35
55
|
}
|
|
36
56
|
const address = new AppAddress(this.state.address);
|
|
37
|
-
const
|
|
57
|
+
const { key, certificate } = this.state;
|
|
58
|
+
const intf = await interfaceType.create({
|
|
59
|
+
node: this.endpoint,
|
|
60
|
+
address,
|
|
61
|
+
key,
|
|
62
|
+
certificate
|
|
63
|
+
});
|
|
38
64
|
this.internal.interface = intf;
|
|
65
|
+
logger.info("Listening on", Diagnostic.strong(intf.address));
|
|
39
66
|
}
|
|
40
67
|
async #stop() {
|
|
41
68
|
const { interface: intf } = this.internal;
|
|
@@ -57,8 +84,42 @@ class RemoteServer extends Behavior {
|
|
|
57
84
|
},
|
|
58
85
|
FieldElement({ name: "address", type: "string" }),
|
|
59
86
|
FieldElement({ name: "enabled", type: "bool" }),
|
|
60
|
-
FieldElement({ name: "allowOfflineUse", type: "bool" })
|
|
87
|
+
FieldElement({ name: "allowOfflineUse", type: "bool" }),
|
|
88
|
+
FieldElement({ name: "certificate", type: "octstr" }),
|
|
89
|
+
FieldElement({ name: "key", type: "octstr" })
|
|
61
90
|
);
|
|
91
|
+
async #createKey() {
|
|
92
|
+
const key = await this.env.get(Crypto).createKeyPair();
|
|
93
|
+
if (key.pem === void 0) {
|
|
94
|
+
throw new InternalError("PEM form of new private key is missing");
|
|
95
|
+
}
|
|
96
|
+
return key.pem;
|
|
97
|
+
}
|
|
98
|
+
async #createCertificate(pkcs8) {
|
|
99
|
+
const crypto = this.env.get(Crypto);
|
|
100
|
+
const key = Key({ pem: pkcs8, kty: KeyType.EC, crv: CurveType.p256 });
|
|
101
|
+
const notBefore = /* @__PURE__ */ new Date();
|
|
102
|
+
const notAfter = /* @__PURE__ */ new Date();
|
|
103
|
+
notAfter.setFullYear(notAfter.getFullYear() + 10);
|
|
104
|
+
const unsigned = {
|
|
105
|
+
serialNumber: crypto.randomBytes(20),
|
|
106
|
+
subject: { commonName: X520.CommonName("localhost") },
|
|
107
|
+
validity: {
|
|
108
|
+
notBefore,
|
|
109
|
+
notAfter
|
|
110
|
+
},
|
|
111
|
+
issuer: { commonName: X520.CommonName("matter.js") },
|
|
112
|
+
extensions: {
|
|
113
|
+
basicConstraints: {
|
|
114
|
+
isCa: true
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
signatureAlgorithm: X962.EcdsaWithSHA256,
|
|
118
|
+
publicKey: X962.PublicKeyEcPrime256v1(key.publicBits)
|
|
119
|
+
};
|
|
120
|
+
const certificate = await X509.sign(this.env.get(Crypto), key, unsigned);
|
|
121
|
+
return X509.certificateToPem(certificate);
|
|
122
|
+
}
|
|
62
123
|
}
|
|
63
124
|
((RemoteServer2) => {
|
|
64
125
|
class Internal {
|
|
@@ -89,6 +150,14 @@ class RemoteServer extends Behavior {
|
|
|
89
150
|
* also online.
|
|
90
151
|
*/
|
|
91
152
|
allowOfflineUse = true;
|
|
153
|
+
/**
|
|
154
|
+
* Certificate for encrypted endpoints in PEM format.
|
|
155
|
+
*/
|
|
156
|
+
certificate;
|
|
157
|
+
/**
|
|
158
|
+
* Private key for encrypted endpoints in PEM format.
|
|
159
|
+
*/
|
|
160
|
+
key;
|
|
92
161
|
}
|
|
93
162
|
RemoteServer2.State = State;
|
|
94
163
|
})(RemoteServer || (RemoteServer = {}));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/remote/RemoteServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AACpC,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["RemoteServer"]
|
|
6
6
|
}
|
|
@@ -61,7 +61,7 @@ class WebSocketInterface extends RemoteInterface {
|
|
|
61
61
|
#http;
|
|
62
62
|
#mutex = new Mutex(this);
|
|
63
63
|
async start() {
|
|
64
|
-
this.#http = await this.env.get(HttpService).create(this
|
|
64
|
+
this.#http = await this.env.get(HttpService).create(this);
|
|
65
65
|
this.#http.ws = this.#handleConnection.bind(this);
|
|
66
66
|
}
|
|
67
67
|
async stop() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/behavior/system/websocket/WebSocketInterface.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,YAAY,QAAQ,OAAqB,aAAa,OAAO,cAAc;AAC3F,SAAS,gBAAgB,2BAA2B;AACpD,SAAS,WAAW;AACpB,SAAS,eAAe;AAExB,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAEhC,MAAM,eAAe;AAKd,MAAM,2BAA2B,gBAAgB;AAAA,EACpD,OAAgB,WAAW;AAAA,EAE3B;AAAA,EACA,SAAS,IAAI,MAAM,IAAI;AAAA,EAEvB,MAAyB,QAAQ;AAC7B,SAAK,QAAQ,MAAM,KAAK,IAAI,IAAI,WAAW,EAAE,OAAO,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["request"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/node",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.11-alpha.0-20260225-033797f3c",
|
|
4
4
|
"description": "API for building Matter nodes",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"#*": "./src/*"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@matter/general": "0.16.
|
|
46
|
-
"@matter/model": "0.16.
|
|
47
|
-
"@matter/types": "0.16.
|
|
48
|
-
"@matter/protocol": "0.16.
|
|
45
|
+
"@matter/general": "0.16.11-alpha.0-20260225-033797f3c",
|
|
46
|
+
"@matter/model": "0.16.11-alpha.0-20260225-033797f3c",
|
|
47
|
+
"@matter/types": "0.16.11-alpha.0-20260225-033797f3c",
|
|
48
|
+
"@matter/protocol": "0.16.11-alpha.0-20260225-033797f3c"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@matter/tools": "0.16.
|
|
52
|
-
"@matter/testing": "0.16.
|
|
51
|
+
"@matter/tools": "0.16.11-alpha.0-20260225-033797f3c",
|
|
52
|
+
"@matter/testing": "0.16.11-alpha.0-20260225-033797f3c"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"dist/**/*",
|
|
@@ -35,7 +35,7 @@ export class HttpInterface extends RemoteInterface {
|
|
|
35
35
|
#http?: HttpEndpoint;
|
|
36
36
|
|
|
37
37
|
protected override async start() {
|
|
38
|
-
this.#http = await this.env.get(HttpService).create(this
|
|
38
|
+
this.#http = await this.env.get(HttpService).create(this);
|
|
39
39
|
this.#http.http = this.#handleRequest.bind(this);
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -49,6 +49,8 @@ export class MqttInterface extends RemoteInterface {
|
|
|
49
49
|
this.#endpoint = await this.env.get(MqttService).connect({
|
|
50
50
|
address: this.address,
|
|
51
51
|
environment: this.node.env,
|
|
52
|
+
certificate: this.certificate,
|
|
53
|
+
key: this.key,
|
|
52
54
|
|
|
53
55
|
will: {
|
|
54
56
|
topic: this.root.at("status").toString(),
|
|
@@ -29,18 +29,18 @@ export abstract class RemoteInterface {
|
|
|
29
29
|
#abort = new Abort();
|
|
30
30
|
#root: ApiPath;
|
|
31
31
|
#workers: Multiplex;
|
|
32
|
+
#certificate?: string;
|
|
33
|
+
#key?: string;
|
|
32
34
|
|
|
33
|
-
constructor(node
|
|
34
|
-
|
|
35
|
-
throw new ImplementationError(
|
|
36
|
-
`API endpoint type ${this.constructor.name} does not support address ${address}`,
|
|
37
|
-
);
|
|
38
|
-
}
|
|
35
|
+
constructor({ node, address, certificate, key }: RemoteInterface.Configuration) {
|
|
36
|
+
this.assertProtocol(address.appProtocol);
|
|
39
37
|
this.#node = node;
|
|
40
38
|
this.#lifetime = node.env.join(decamelize(this.constructor.name, " "));
|
|
41
39
|
this.#workers = new BasicMultiplex();
|
|
42
40
|
this.#address = address;
|
|
43
41
|
this.#root = new ApiPath(address);
|
|
42
|
+
this.#certificate = certificate;
|
|
43
|
+
this.#key = key;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
join(...name: unknown[]) {
|
|
@@ -63,6 +63,14 @@ export abstract class RemoteInterface {
|
|
|
63
63
|
return this.#address;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
get certificate() {
|
|
67
|
+
return this.#certificate;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
get key() {
|
|
71
|
+
return this.#key;
|
|
72
|
+
}
|
|
73
|
+
|
|
66
74
|
get isAborted() {
|
|
67
75
|
return this.#abort.aborted;
|
|
68
76
|
}
|
|
@@ -71,12 +79,11 @@ export abstract class RemoteInterface {
|
|
|
71
79
|
return this.#abort.signal;
|
|
72
80
|
}
|
|
73
81
|
|
|
74
|
-
static async create<This extends new (
|
|
82
|
+
static async create<This extends new (config: RemoteInterface.Configuration) => RemoteInterface>(
|
|
75
83
|
this: This,
|
|
76
|
-
|
|
77
|
-
address: AppAddress,
|
|
84
|
+
config: RemoteInterface.Configuration,
|
|
78
85
|
) {
|
|
79
|
-
const instance = new this(
|
|
86
|
+
const instance = new this(config);
|
|
80
87
|
try {
|
|
81
88
|
await instance.start();
|
|
82
89
|
} catch (e) {
|
|
@@ -103,7 +110,8 @@ export abstract class RemoteInterface {
|
|
|
103
110
|
}
|
|
104
111
|
|
|
105
112
|
protected assertProtocol(appProtocol: string) {
|
|
106
|
-
|
|
113
|
+
const baseProtocol = (this.constructor as unknown as RemoteInterface.Type).protocol;
|
|
114
|
+
if (appProtocol !== baseProtocol && appProtocol !== `${baseProtocol}s`) {
|
|
107
115
|
throw new ImplementationError(
|
|
108
116
|
`Invalid protocol ${this.address} for API endpoin type ${this.constructor.name}`,
|
|
109
117
|
);
|
|
@@ -132,6 +140,13 @@ export abstract class RemoteInterface {
|
|
|
132
140
|
export namespace RemoteInterface {
|
|
133
141
|
export interface Type {
|
|
134
142
|
protocol: string;
|
|
135
|
-
create(
|
|
143
|
+
create(config: Configuration): Promise<RemoteInterface>;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface Configuration {
|
|
147
|
+
node: ServerNode;
|
|
148
|
+
address: AppAddress;
|
|
149
|
+
certificate?: string;
|
|
150
|
+
key?: string;
|
|
136
151
|
}
|
|
137
152
|
}
|
|
@@ -6,12 +6,27 @@
|
|
|
6
6
|
|
|
7
7
|
import { Behavior } from "#behavior/Behavior.js";
|
|
8
8
|
import { EndpointInitializer } from "#endpoint/properties/EndpointInitializer.js";
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
AppAddress,
|
|
11
|
+
Crypto,
|
|
12
|
+
CurveType,
|
|
13
|
+
Diagnostic,
|
|
14
|
+
ImplementationError,
|
|
15
|
+
InternalError,
|
|
16
|
+
Key,
|
|
17
|
+
KeyType,
|
|
18
|
+
Logger,
|
|
19
|
+
X509,
|
|
20
|
+
X520,
|
|
21
|
+
X962,
|
|
22
|
+
} from "#general";
|
|
10
23
|
import { DatatypeModel, FieldElement } from "#model";
|
|
11
24
|
import type { ServerNode } from "#node/ServerNode.js";
|
|
12
25
|
import { ServerEndpointInitializer } from "#node/server/ServerEndpointInitializer.js";
|
|
13
26
|
import { RemoteInterface } from "./RemoteInterface.js";
|
|
14
27
|
|
|
28
|
+
const logger = Logger.get("RemoteServer");
|
|
29
|
+
|
|
15
30
|
/**
|
|
16
31
|
* Base class for {@link Behavior}s that enable remote access to a {@link ServerNode} via a non-Matter API.
|
|
17
32
|
*
|
|
@@ -33,6 +48,14 @@ export abstract class RemoteServer extends Behavior {
|
|
|
33
48
|
declare state: RemoteServer.State;
|
|
34
49
|
|
|
35
50
|
override async initialize() {
|
|
51
|
+
if (this.state.key === undefined) {
|
|
52
|
+
this.state.key = await this.#createKey();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (this.state.certificate === undefined) {
|
|
56
|
+
this.state.certificate = await this.#createCertificate(this.state.key);
|
|
57
|
+
}
|
|
58
|
+
|
|
36
59
|
if (!(this.env.get(EndpointInitializer) instanceof ServerEndpointInitializer)) {
|
|
37
60
|
throw new ImplementationError("Remote server is not installed in a ServerNode");
|
|
38
61
|
}
|
|
@@ -64,9 +87,17 @@ export abstract class RemoteServer extends Behavior {
|
|
|
64
87
|
}
|
|
65
88
|
|
|
66
89
|
const address = new AppAddress(this.state.address);
|
|
67
|
-
const
|
|
90
|
+
const { key, certificate } = this.state;
|
|
91
|
+
const intf = await interfaceType.create({
|
|
92
|
+
node: this.endpoint as ServerNode,
|
|
93
|
+
address,
|
|
94
|
+
key,
|
|
95
|
+
certificate,
|
|
96
|
+
});
|
|
68
97
|
|
|
69
98
|
this.internal.interface = intf;
|
|
99
|
+
|
|
100
|
+
logger.info("Listening on", Diagnostic.strong(intf.address));
|
|
70
101
|
}
|
|
71
102
|
|
|
72
103
|
async #stop() {
|
|
@@ -94,7 +125,43 @@ export abstract class RemoteServer extends Behavior {
|
|
|
94
125
|
FieldElement({ name: "address", type: "string" }),
|
|
95
126
|
FieldElement({ name: "enabled", type: "bool" }),
|
|
96
127
|
FieldElement({ name: "allowOfflineUse", type: "bool" }),
|
|
128
|
+
FieldElement({ name: "certificate", type: "octstr" }),
|
|
129
|
+
FieldElement({ name: "key", type: "octstr" }),
|
|
97
130
|
);
|
|
131
|
+
|
|
132
|
+
async #createKey() {
|
|
133
|
+
const key = await this.env.get(Crypto).createKeyPair();
|
|
134
|
+
if (key.pem === undefined) {
|
|
135
|
+
throw new InternalError("PEM form of new private key is missing");
|
|
136
|
+
}
|
|
137
|
+
return key.pem;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
async #createCertificate(pkcs8: string) {
|
|
141
|
+
const crypto = this.env.get(Crypto);
|
|
142
|
+
const key = Key({ pem: pkcs8, kty: KeyType.EC, crv: CurveType.p256 });
|
|
143
|
+
const notBefore = new Date();
|
|
144
|
+
const notAfter = new Date();
|
|
145
|
+
notAfter.setFullYear(notAfter.getFullYear() + 10);
|
|
146
|
+
const unsigned: X509.UnsignedCertificate = {
|
|
147
|
+
serialNumber: crypto.randomBytes(20),
|
|
148
|
+
subject: { commonName: X520.CommonName("localhost") },
|
|
149
|
+
validity: {
|
|
150
|
+
notBefore,
|
|
151
|
+
notAfter,
|
|
152
|
+
},
|
|
153
|
+
issuer: { commonName: X520.CommonName("matter.js") },
|
|
154
|
+
extensions: {
|
|
155
|
+
basicConstraints: {
|
|
156
|
+
isCa: true,
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
signatureAlgorithm: X962.EcdsaWithSHA256,
|
|
160
|
+
publicKey: X962.PublicKeyEcPrime256v1(key.publicBits!),
|
|
161
|
+
};
|
|
162
|
+
const certificate = await X509.sign(this.env.get(Crypto), key, unsigned);
|
|
163
|
+
return X509.certificateToPem(certificate);
|
|
164
|
+
}
|
|
98
165
|
}
|
|
99
166
|
|
|
100
167
|
export namespace RemoteServer {
|
|
@@ -128,5 +195,15 @@ export namespace RemoteServer {
|
|
|
128
195
|
* also online.
|
|
129
196
|
*/
|
|
130
197
|
allowOfflineUse = true;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Certificate for encrypted endpoints in PEM format.
|
|
201
|
+
*/
|
|
202
|
+
certificate?: string;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Private key for encrypted endpoints in PEM format.
|
|
206
|
+
*/
|
|
207
|
+
key?: string;
|
|
131
208
|
}
|
|
132
209
|
}
|
|
@@ -25,7 +25,7 @@ export class WebSocketInterface extends RemoteInterface {
|
|
|
25
25
|
#mutex = new Mutex(this);
|
|
26
26
|
|
|
27
27
|
protected override async start() {
|
|
28
|
-
this.#http = await this.env.get(HttpService).create(this
|
|
28
|
+
this.#http = await this.env.get(HttpService).create(this);
|
|
29
29
|
this.#http.ws = this.#handleConnection.bind(this);
|
|
30
30
|
}
|
|
31
31
|
|