@matter/protocol 0.16.0-alpha.0-20251220-0bb8d9f89 → 0.16.0-alpha.0-20251221-3dce6fa1b
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/certificate/CertificateAuthority.d.ts +18 -7
- package/dist/cjs/certificate/CertificateAuthority.d.ts.map +1 -1
- package/dist/cjs/certificate/CertificateAuthority.js +32 -35
- package/dist/cjs/certificate/CertificateAuthority.js.map +1 -1
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +11 -0
- package/dist/cjs/fabric/Fabric.js.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.d.ts +4 -3
- package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.js +35 -4
- package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
- package/dist/esm/certificate/CertificateAuthority.d.ts +18 -7
- package/dist/esm/certificate/CertificateAuthority.d.ts.map +1 -1
- package/dist/esm/certificate/CertificateAuthority.js +32 -35
- package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +11 -0
- package/dist/esm/fabric/Fabric.js.map +1 -1
- package/dist/esm/fabric/FabricAuthority.d.ts +4 -3
- package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/esm/fabric/FabricAuthority.js +35 -4
- package/dist/esm/fabric/FabricAuthority.js.map +1 -1
- package/package.json +6 -6
- package/src/certificate/CertificateAuthority.ts +65 -47
- package/src/fabric/Fabric.ts +18 -0
- package/src/fabric/FabricAuthority.ts +39 -4
- package/src/session/case/CaseServer.ts +2 -2
|
@@ -31,7 +31,6 @@ class CertificateAuthority {
|
|
|
31
31
|
#rootCertBytes;
|
|
32
32
|
#nextCertificateId = BigInt(1);
|
|
33
33
|
#construction;
|
|
34
|
-
#intermediateCert;
|
|
35
34
|
#icacProps;
|
|
36
35
|
get crypto() {
|
|
37
36
|
return this.#crypto;
|
|
@@ -39,42 +38,37 @@ class CertificateAuthority {
|
|
|
39
38
|
get construction() {
|
|
40
39
|
return this.#construction;
|
|
41
40
|
}
|
|
42
|
-
static async create(crypto, options) {
|
|
43
|
-
return asyncNew(CertificateAuthority, crypto, options);
|
|
41
|
+
static async create(crypto, options, generateIntermediateCert) {
|
|
42
|
+
return asyncNew(CertificateAuthority, crypto, options, generateIntermediateCert);
|
|
44
43
|
}
|
|
45
|
-
constructor(crypto, options) {
|
|
44
|
+
constructor(crypto, options, generateIntermediateCert) {
|
|
46
45
|
this.#crypto = crypto;
|
|
47
46
|
this.#construction = Construction(this, async () => {
|
|
47
|
+
if (typeof options === "boolean") {
|
|
48
|
+
generateIntermediateCert = options;
|
|
49
|
+
options = void 0;
|
|
50
|
+
}
|
|
48
51
|
const certValues = options instanceof StorageContext ? await options.values() : options ?? {};
|
|
52
|
+
const requireIcac = generateIntermediateCert ?? this.#isValidStoredIcacCertificate(certValues);
|
|
49
53
|
if (this.#isValidStoredRootCertificate(certValues)) {
|
|
50
|
-
this.#
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"CA intermediateCert property is false but icac properties exist in storage"
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
if (!icac && this.#intermediateCert === true) {
|
|
58
|
-
throw new ImplementationError(
|
|
59
|
-
"CA intermediateCert property is true but icac properties do not exist in storage"
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
this.#loadFromStorage(certValues);
|
|
63
|
-
logger.info(`Loaded stored credentials with ID ${this.#rootCertId}`);
|
|
54
|
+
this.#loadFromStorage(certValues, requireIcac);
|
|
55
|
+
logger.info(
|
|
56
|
+
`Loaded stored credentials with ID ${this.#rootCertId}${this.#icacProps !== void 0 ? ` and ICAC with ID ${this.#icacProps.certId}` : ""}`
|
|
57
|
+
);
|
|
64
58
|
return;
|
|
65
59
|
}
|
|
66
|
-
const config = options instanceof StorageContext ? void 0 : options;
|
|
67
|
-
this.#intermediateCert = config?.intermediateCert ?? false;
|
|
68
60
|
this.#rootKeyPair = await this.#crypto.createKeyPair();
|
|
69
61
|
this.#rootKeyIdentifier = Bytes.of(await this.#crypto.computeHash(this.#rootKeyPair.publicKey)).slice(
|
|
70
62
|
0,
|
|
71
63
|
20
|
|
72
64
|
);
|
|
73
65
|
this.#rootCertBytes = await this.#generateRootCert();
|
|
74
|
-
|
|
75
|
-
if (this.#intermediateCert) {
|
|
66
|
+
if (requireIcac) {
|
|
76
67
|
this.#icacProps = await this.#generateIcacProps();
|
|
77
68
|
}
|
|
69
|
+
logger.info(
|
|
70
|
+
`Created new credentials with ID ${this.#rootCertId}${this.#icacProps !== void 0 ? ` and ICAC with ID ${this.#icacProps.certId}` : ""}`
|
|
71
|
+
);
|
|
78
72
|
if (options instanceof StorageContext) {
|
|
79
73
|
await options.set(this.#buildStorageData());
|
|
80
74
|
}
|
|
@@ -96,21 +90,19 @@ class CertificateAuthority {
|
|
|
96
90
|
return this.#construction.assert("icac cert", this.#icacProps.certBytes);
|
|
97
91
|
}
|
|
98
92
|
get config() {
|
|
99
|
-
|
|
93
|
+
return {
|
|
100
94
|
rootCertId: this.#rootCertId,
|
|
101
95
|
rootKeyPair: this.construction.assert("root key pair", this.#rootKeyPair).keyPair,
|
|
102
96
|
rootKeyIdentifier: this.construction.assert("root key identifier", this.#rootKeyIdentifier),
|
|
103
97
|
rootCertBytes: this.construction.assert("root cert bytes", this.#rootCertBytes),
|
|
104
98
|
nextCertificateId: this.#nextCertificateId,
|
|
105
|
-
|
|
99
|
+
...this.#icacProps !== void 0 ? {
|
|
100
|
+
icacCertId: this.#icacProps.certId,
|
|
101
|
+
icacKeyPair: this.construction.assert("icac key pair", this.#icacProps.keyPair).keyPair,
|
|
102
|
+
icacKeyIdentifier: this.construction.assert("icac key identifier", this.#icacProps.keyIdentifier),
|
|
103
|
+
icacCertBytes: this.construction.assert("icac cert bytes", this.#icacProps.certBytes)
|
|
104
|
+
} : {}
|
|
106
105
|
};
|
|
107
|
-
if (this.#icacProps) {
|
|
108
|
-
config.icacCertId = this.#icacProps.certId;
|
|
109
|
-
config.icacKeyPair = this.construction.assert("icac key pair", this.#icacProps.keyPair).keyPair;
|
|
110
|
-
config.icacKeyIdentifier = this.construction.assert("icac key identifier", this.#icacProps.keyIdentifier);
|
|
111
|
-
config.icacCertBytes = this.construction.assert("icac cert bytes", this.#icacProps.certBytes);
|
|
112
|
-
}
|
|
113
|
-
return config;
|
|
114
106
|
}
|
|
115
107
|
async #generateRootCert() {
|
|
116
108
|
const now = Time.now;
|
|
@@ -215,13 +207,19 @@ class CertificateAuthority {
|
|
|
215
207
|
#isValidStoredIcacCertificate(certValues) {
|
|
216
208
|
return (typeof certValues.icacCertId === "number" || typeof certValues.icacCertId === "bigint") && (Bytes.isBytes(certValues.icacKeyPair) || typeof certValues.icacKeyPair === "object") && Bytes.isBytes(certValues.icacKeyIdentifier) && Bytes.isBytes(certValues.icacCertBytes);
|
|
217
209
|
}
|
|
218
|
-
#loadFromStorage(certValues) {
|
|
210
|
+
#loadFromStorage(certValues, requireIcac) {
|
|
219
211
|
this.#rootCertId = BigInt(certValues.rootCertId);
|
|
220
212
|
this.#rootKeyPair = PrivateKey(certValues.rootKeyPair);
|
|
221
213
|
this.#rootKeyIdentifier = certValues.rootKeyIdentifier;
|
|
222
214
|
this.#rootCertBytes = certValues.rootCertBytes;
|
|
223
215
|
this.#nextCertificateId = BigInt(certValues.nextCertificateId);
|
|
224
|
-
|
|
216
|
+
const hasIcac = this.#isValidStoredIcacCertificate(certValues);
|
|
217
|
+
if (requireIcac !== void 0 && requireIcac !== hasIcac) {
|
|
218
|
+
throw new ImplementationError(
|
|
219
|
+
`Stored credentials contain ICAC certificate: ${hasIcac}, but configuration expected it to be ${requireIcac}`
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
if (hasIcac) {
|
|
225
223
|
this.#icacProps = {
|
|
226
224
|
certId: BigInt(certValues.icacCertId),
|
|
227
225
|
keyPair: PrivateKey(certValues.icacKeyPair),
|
|
@@ -236,8 +234,7 @@ class CertificateAuthority {
|
|
|
236
234
|
rootKeyPair: this.#initializedRootKeyPair.keyPair,
|
|
237
235
|
rootKeyIdentifier: this.#initializedRootKeyIdentifier,
|
|
238
236
|
rootCertBytes: this.#initializedRootCertBytes,
|
|
239
|
-
nextCertificateId: this.#nextCertificateId
|
|
240
|
-
intermediateCert: this.#intermediateCert
|
|
237
|
+
nextCertificateId: this.#nextCertificateId
|
|
241
238
|
};
|
|
242
239
|
if (this.#icacProps) {
|
|
243
240
|
data.icacCertId = this.#icacProps.certId;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/certificate/CertificateAuthority.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EAEI;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,WAAW;AACpB,SAAS,YAAY;AAErB,MAAM,SAAS,OAAO,IAAI,sBAAsB;AAoBzC,MAAM,qBAAqB;AAAA,EAC9B;AAAA,EACA,cAAc,OAAO,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB,OAAO,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fabric.d.ts","sourceRoot":"","sources":["../../../src/fabric/Fabric.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EACH,eAAe,EACf,aAAa,EACb,KAAK,EACL,MAAM,EAMN,GAAG,EAEH,WAAW,EAEX,YAAY,EACZ,UAAU,EACV,cAAc,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAuB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAEH,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,MAAM,EAEN,QAAQ,EACX,MAAM,QAAQ,CAAC;AAIhB,qBAAa,cAAe,SAAQ,WAAW;CAAG;AAElD,MAAM,MAAM,wBAAwB,GAAG;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,QAAQ,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,MAAM;;IAEf,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAGlC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC;IACtC,QAAQ,CAAC,gCAAgC,EAAE,KAAK,CAAC;IACjD,QAAQ,CAAC,kBAAkB,EAAE,KAAK,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC;IAiBhC;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB;IA0B5D;;;;OAIG;WACU,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM;IAyBzD,IAAI,MAAM,WAET;IAED;;;;OAIG;IACH,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,CAuB9B;IAED,IAAI,KAAK,WAER;IAEK,QAAQ,CAAC,KAAK,EAAE,MAAM;IAW5B,IAAI,wBAAwB,wCAE3B;IAEK,4BAA4B,CAC9B,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,wBAAwB,EAAE,KAAK,GAAG,SAAS,EAC3C,IAAI,EAAE,KAAK,GAAG,SAAS;IAmC3B,IAAI,IAAI,wCAEP;IAED,IAAI,aAAa,4BAKhB;IAED,IAAI,YAAY,aAEf;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAGlC;IAED,IAAI,OAAO,IAAI,cAAc,GAAG,SAAS,CAExC;IAED,IAAI,MAAM,iBAET;IAED,IAAI,aAAa,wBAEhB;IAED,IAAI,SAAS,4BAEZ;IAED,IAAI,UAAU,wBAEb;IAED,IAAI,OAAO,8BAEV;IAED,IAAI,QAAQ,8BAEX;IAED,IAAI,OAAO,8BAEV;IAED,IAAI,CAAC,IAAI,EAAE,KAAK;IAIV,iBAAiB,CAAC,eAAe,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"Fabric.d.ts","sourceRoot":"","sources":["../../../src/fabric/Fabric.ts"],"names":[],"mappings":"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"}
|
|
@@ -236,6 +236,13 @@ class Fabric {
|
|
|
236
236
|
return this.crypto.signEcdsa(this.#keyPair, data);
|
|
237
237
|
}
|
|
238
238
|
async verifyCredentials(operationalCert, intermediateCACert) {
|
|
239
|
+
if (intermediateCACert !== void 0 && intermediateCACert.byteLength === 0) {
|
|
240
|
+
intermediateCACert = void 0;
|
|
241
|
+
}
|
|
242
|
+
if (intermediateCACert !== void 0 && Bytes.areEqual(this.rootCert, intermediateCACert)) {
|
|
243
|
+
logger.info("Intermediate CA certificate is identical to root certificate; omitting ICAC");
|
|
244
|
+
intermediateCACert = void 0;
|
|
245
|
+
}
|
|
239
246
|
const rootCert = Rcac.fromTlv(this.rootCert);
|
|
240
247
|
const nocCert = Noc.fromTlv(operationalCert);
|
|
241
248
|
const icaCert = intermediateCACert !== void 0 ? Icac.fromTlv(intermediateCACert) : void 0;
|
|
@@ -400,6 +407,10 @@ class FabricBuilder {
|
|
|
400
407
|
if (this.#rootCert === void 0) {
|
|
401
408
|
throw new MatterFlowError("Root certificate needs to be set first");
|
|
402
409
|
}
|
|
410
|
+
if (intermediateCACert !== void 0 && Bytes.areEqual(this.#rootCert, intermediateCACert)) {
|
|
411
|
+
logger.info("Intermediate CA certificate is identical to root certificate; omitting ICAC");
|
|
412
|
+
intermediateCACert = void 0;
|
|
413
|
+
}
|
|
403
414
|
const rootCert = Rcac.fromTlv(this.#rootCert);
|
|
404
415
|
const nocCert = Noc.fromTlv(operationalCert);
|
|
405
416
|
const icaCert = intermediateCACert !== void 0 ? Icac.fromTlv(intermediateCACert) : void 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/fabric/Fabric.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -40,9 +40,10 @@ export declare class FabricAuthority {
|
|
|
40
40
|
*/
|
|
41
41
|
get ca(): CertificateAuthority;
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
43
|
+
* Get the default fabric for this authority.
|
|
44
|
+
* When rotateNoc is true (the default), the NOC key pair is rotated once per runtime when the fabric already exists.
|
|
44
45
|
*/
|
|
45
|
-
defaultFabric(config: FabricAuthorityConfiguration): Promise<Fabric>;
|
|
46
|
+
defaultFabric(config: FabricAuthorityConfiguration, rotateNoc?: boolean): Promise<Fabric>;
|
|
46
47
|
/**
|
|
47
48
|
* List all controlled fabrics.
|
|
48
49
|
*/
|
|
@@ -56,7 +57,7 @@ export declare class FabricAuthority {
|
|
|
56
57
|
*/
|
|
57
58
|
hasControlOf(fabric: Fabric): boolean;
|
|
58
59
|
/**
|
|
59
|
-
* Create
|
|
60
|
+
* Create new fabric under our control.
|
|
60
61
|
*/
|
|
61
62
|
createFabric(config: FabricAuthorityConfiguration): Promise<Fabric>;
|
|
62
63
|
static [Environmental.create](env: Environment): FabricAuthority;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricAuthority.d.ts","sourceRoot":"","sources":["../../../src/fabric/FabricAuthority.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"FabricAuthority.d.ts","sourceRoot":"","sources":["../../../src/fabric/FabricAuthority.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EACH,eAAe,EAEf,YAAY,EAEZ,WAAW,EACX,aAAa,EAGhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvF,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,sFAAsF;IACtF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;IAClC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,oBAAoB,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;CAC1B;AAED,eAAO,MAAM,uBAAuB,UAAmB,CAAC;AAExD;;GAEG;AACH,qBAAa,eAAe;;gBAOZ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,sBAAsB;IAUnD,IAAI,YAAY,kCAEf;IAED;;OAEG;IACH,IAAI,EAAE,yBAEL;IAED;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE,4BAA4B,EAAE,SAAS,UAAO;IAqB1E;;OAEG;IACH,IAAI,OAAO,aAEV;IAED;;OAEG;IACH,IAAI,WAAW,oCAEd;IAED;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM;IAI3B;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,4BAA4B;IAuEvD,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;CAQjD"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { CertificateAuthority } from "#certificate/CertificateAuthority.js";
|
|
7
|
+
import { Noc } from "#certificate/kinds/Noc.js";
|
|
7
8
|
import {
|
|
8
9
|
AsyncObservable,
|
|
9
10
|
Bytes,
|
|
@@ -23,6 +24,8 @@ class FabricAuthority {
|
|
|
23
24
|
#ca;
|
|
24
25
|
#fabrics;
|
|
25
26
|
#fabricAdded = new AsyncObservable();
|
|
27
|
+
#rotatedFabricIndices = /* @__PURE__ */ new Set();
|
|
28
|
+
// Remember which we already rotated in this run
|
|
26
29
|
constructor({ ca, fabrics }) {
|
|
27
30
|
this.#ca = ca;
|
|
28
31
|
this.#fabrics = fabrics;
|
|
@@ -41,12 +44,16 @@ class FabricAuthority {
|
|
|
41
44
|
return this.#ca;
|
|
42
45
|
}
|
|
43
46
|
/**
|
|
44
|
-
*
|
|
47
|
+
* Get the default fabric for this authority.
|
|
48
|
+
* When rotateNoc is true (the default), the NOC key pair is rotated once per runtime when the fabric already exists.
|
|
45
49
|
*/
|
|
46
|
-
async defaultFabric(config) {
|
|
50
|
+
async defaultFabric(config, rotateNoc = true) {
|
|
47
51
|
const caRootCert = this.#ca.rootCert;
|
|
48
|
-
|
|
52
|
+
let fabric = this.fabrics.find((fabric2) => Bytes.areEqual(fabric2.rootCert, caRootCert));
|
|
49
53
|
if (fabric !== void 0) {
|
|
54
|
+
if (rotateNoc) {
|
|
55
|
+
fabric = await this.#rotateFabricNocKey(fabric);
|
|
56
|
+
}
|
|
50
57
|
if (fabric.label !== config.adminFabricLabel) {
|
|
51
58
|
await fabric.setLabel(config.adminFabricLabel);
|
|
52
59
|
}
|
|
@@ -73,7 +80,7 @@ class FabricAuthority {
|
|
|
73
80
|
return Bytes.areEqual(fabric.rootCert, this.#ca.rootCert);
|
|
74
81
|
}
|
|
75
82
|
/**
|
|
76
|
-
* Create
|
|
83
|
+
* Create new fabric under our control.
|
|
77
84
|
*/
|
|
78
85
|
async createFabric(config) {
|
|
79
86
|
const rootNodeId = config.adminNodeId ?? NodeId.randomOperationalNodeId(this.#fabrics.crypto);
|
|
@@ -104,6 +111,30 @@ class FabricAuthority {
|
|
|
104
111
|
await this.#fabricAdded.emit(fabric);
|
|
105
112
|
return fabric;
|
|
106
113
|
}
|
|
114
|
+
async #rotateFabricNocKey(fabric) {
|
|
115
|
+
if (this.#rotatedFabricIndices.has(fabric.fabricIndex)) {
|
|
116
|
+
return fabric;
|
|
117
|
+
}
|
|
118
|
+
const builder = await FabricBuilder.create(this.#fabrics.crypto);
|
|
119
|
+
builder.initializeFromFabricForUpdate(fabric);
|
|
120
|
+
const {
|
|
121
|
+
subject: { nodeId, fabricId, caseAuthenticatedTags }
|
|
122
|
+
} = Noc.fromTlv(fabric.operationalCert).cert;
|
|
123
|
+
if (nodeId !== fabric.rootNodeId) {
|
|
124
|
+
throw new ImplementationError(
|
|
125
|
+
`Cannot rotate NOC for fabric ${fabric.fabricIndex} because root node ID changed`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
await builder.setOperationalCert(
|
|
129
|
+
await this.#ca.generateNoc(builder.publicKey, fabricId, nodeId, caseAuthenticatedTags),
|
|
130
|
+
fabric.intermediateCACert
|
|
131
|
+
);
|
|
132
|
+
const newFabric = await builder.build(fabric.fabricIndex);
|
|
133
|
+
logger.info(`Rotated NOC for fabric ${fabric.fabricIndex}`);
|
|
134
|
+
await this.#fabrics.replaceFabric(newFabric);
|
|
135
|
+
this.#rotatedFabricIndices.add(fabric.fabricIndex);
|
|
136
|
+
return newFabric;
|
|
137
|
+
}
|
|
107
138
|
static [Environmental.create](env) {
|
|
108
139
|
const instance = new FabricAuthority({
|
|
109
140
|
ca: env.get(CertificateAuthority),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/fabric/FabricAuthority.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,4BAA4B;AACrC;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAA+B,UAAuB,QAAQ,gBAAgB;AAC9E,SAAiB,qBAAqB;AACtC,SAAS,qBAAqB;AAE9B,MAAM,SAAS,OAAO,IAAI,iBAAiB;AAwBpC,MAAM,0BAA0B,SAAS,KAAM;AAK/C,MAAM,gBAAgB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,IAAI,gBAA0B;AAAA,EAE7C,YAAY,EAAE,IAAI,QAAQ,GAA2B;AACjD,SAAK,MAAM;AACX,SAAK,WAAW;AAEhB,SAAK,gBAAgB,aAAa,MAAM,YAAY;AAChD,YAAM,KAAK,IAAI;AACf,YAAM,KAAK,SAAS;AAAA,IACxB,CAAC;AAAA,EACL;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,KAAK;AACL,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["fabric"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/protocol",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20251221-3dce6fa1b",
|
|
4
4
|
"description": "Low-level APIs for Matter interaction",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"#*": "./src/*"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
44
|
-
"@matter/model": "0.16.0-alpha.0-
|
|
45
|
-
"@matter/types": "0.16.0-alpha.0-
|
|
43
|
+
"@matter/general": "0.16.0-alpha.0-20251221-3dce6fa1b",
|
|
44
|
+
"@matter/model": "0.16.0-alpha.0-20251221-3dce6fa1b",
|
|
45
|
+
"@matter/types": "0.16.0-alpha.0-20251221-3dce6fa1b"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
49
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
48
|
+
"@matter/tools": "0.16.0-alpha.0-20251221-3dce6fa1b",
|
|
49
|
+
"@matter/testing": "0.16.0-alpha.0-20251221-3dce6fa1b"
|
|
50
50
|
},
|
|
51
51
|
"files": [
|
|
52
52
|
"dist/**/*",
|
|
@@ -55,7 +55,6 @@ export class CertificateAuthority {
|
|
|
55
55
|
#rootCertBytes?: Bytes;
|
|
56
56
|
#nextCertificateId = BigInt(1);
|
|
57
57
|
#construction: Construction<CertificateAuthority>;
|
|
58
|
-
#intermediateCert?: boolean;
|
|
59
58
|
#icacProps?: IcacProps;
|
|
60
59
|
|
|
61
60
|
get crypto() {
|
|
@@ -66,46 +65,65 @@ export class CertificateAuthority {
|
|
|
66
65
|
return this.#construction;
|
|
67
66
|
}
|
|
68
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Creates a new CertificateAuthority instance and use the provided storage to store and retrieve the values.
|
|
70
|
+
* A new certificate is only created when the storage does not contain any credentials.
|
|
71
|
+
* Use the generateIntermediateCert parameter to specify if an ICAC should be created too. The parameter, when set,
|
|
72
|
+
* must match to the storage content if a certificate is stored!
|
|
73
|
+
*/
|
|
74
|
+
static create(
|
|
75
|
+
crypto: Crypto,
|
|
76
|
+
storage: StorageContext,
|
|
77
|
+
generateIntermediateCert?: boolean,
|
|
78
|
+
): Promise<CertificateAuthority>;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Creates a new CertificateAuthority instance with the provided configuration. The used certificate is loaded from
|
|
82
|
+
* the configuration object.
|
|
83
|
+
*/
|
|
84
|
+
static create(crypto: Crypto, options: CertificateAuthority.Configuration): Promise<CertificateAuthority>;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Creates a new CertificateAuthority instance with the provided configuration. The configuration is not stored.
|
|
88
|
+
* Use the generateIntermediateCert parameter to specify if an ICAC should be created too.
|
|
89
|
+
*/
|
|
90
|
+
static create(crypto: Crypto, generateIntermediateCert?: boolean): Promise<CertificateAuthority>;
|
|
91
|
+
|
|
69
92
|
static async create(
|
|
70
93
|
crypto: Crypto,
|
|
71
|
-
options?: StorageContext | CertificateAuthority.Configuration |
|
|
94
|
+
options?: StorageContext | CertificateAuthority.Configuration | boolean,
|
|
95
|
+
generateIntermediateCert?: boolean,
|
|
72
96
|
) {
|
|
73
|
-
return asyncNew(CertificateAuthority, crypto, options);
|
|
97
|
+
return asyncNew(CertificateAuthority, crypto, options, generateIntermediateCert);
|
|
74
98
|
}
|
|
75
99
|
|
|
76
100
|
constructor(
|
|
77
101
|
crypto: Crypto,
|
|
78
|
-
options?: StorageContext | CertificateAuthority.Configuration |
|
|
102
|
+
options?: StorageContext | CertificateAuthority.Configuration | boolean,
|
|
103
|
+
generateIntermediateCert?: boolean,
|
|
79
104
|
) {
|
|
80
105
|
this.#crypto = crypto;
|
|
81
106
|
|
|
82
107
|
this.#construction = Construction(this, async () => {
|
|
108
|
+
if (typeof options === "boolean") {
|
|
109
|
+
generateIntermediateCert = options;
|
|
110
|
+
options = undefined;
|
|
111
|
+
}
|
|
112
|
+
|
|
83
113
|
const certValues = options instanceof StorageContext ? await options.values() : (options ?? {});
|
|
84
114
|
|
|
115
|
+
// When generateIntermediateCert is set, we ensure it, or if a valid ICAC is stored then we require it
|
|
116
|
+
// else we check whats in the storage and default to false
|
|
117
|
+
const requireIcac = generateIntermediateCert ?? this.#isValidStoredIcacCertificate(certValues);
|
|
118
|
+
|
|
85
119
|
if (this.#isValidStoredRootCertificate(certValues)) {
|
|
86
|
-
this.#
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (icac && this.#intermediateCert === false) {
|
|
91
|
-
throw new ImplementationError(
|
|
92
|
-
"CA intermediateCert property is false but icac properties exist in storage",
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
if (!icac && this.#intermediateCert === true) {
|
|
96
|
-
throw new ImplementationError(
|
|
97
|
-
"CA intermediateCert property is true but icac properties do not exist in storage",
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
this.#loadFromStorage(certValues);
|
|
102
|
-
logger.info(`Loaded stored credentials with ID ${this.#rootCertId}`);
|
|
120
|
+
this.#loadFromStorage(certValues, requireIcac);
|
|
121
|
+
logger.info(
|
|
122
|
+
`Loaded stored credentials with ID ${this.#rootCertId}${this.#icacProps !== undefined ? ` and ICAC with ID ${this.#icacProps.certId}` : ""}`,
|
|
123
|
+
);
|
|
103
124
|
return;
|
|
104
125
|
}
|
|
105
126
|
|
|
106
|
-
const config = options instanceof StorageContext ? undefined : options;
|
|
107
|
-
this.#intermediateCert = config?.intermediateCert ?? false;
|
|
108
|
-
|
|
109
127
|
this.#rootKeyPair = await this.#crypto.createKeyPair();
|
|
110
128
|
this.#rootKeyIdentifier = Bytes.of(await this.#crypto.computeHash(this.#rootKeyPair.publicKey)).slice(
|
|
111
129
|
0,
|
|
@@ -113,12 +131,14 @@ export class CertificateAuthority {
|
|
|
113
131
|
);
|
|
114
132
|
this.#rootCertBytes = await this.#generateRootCert();
|
|
115
133
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (this.#intermediateCert) {
|
|
134
|
+
if (requireIcac) {
|
|
119
135
|
this.#icacProps = await this.#generateIcacProps();
|
|
120
136
|
}
|
|
121
137
|
|
|
138
|
+
logger.info(
|
|
139
|
+
`Created new credentials with ID ${this.#rootCertId}${this.#icacProps !== undefined ? ` and ICAC with ID ${this.#icacProps.certId}` : ""}`,
|
|
140
|
+
);
|
|
141
|
+
|
|
122
142
|
if (options instanceof StorageContext) {
|
|
123
143
|
await options.set(this.#buildStorageData());
|
|
124
144
|
}
|
|
@@ -144,23 +164,21 @@ export class CertificateAuthority {
|
|
|
144
164
|
}
|
|
145
165
|
|
|
146
166
|
get config(): CertificateAuthority.Configuration {
|
|
147
|
-
|
|
167
|
+
return {
|
|
148
168
|
rootCertId: this.#rootCertId,
|
|
149
169
|
rootKeyPair: this.construction.assert("root key pair", this.#rootKeyPair).keyPair,
|
|
150
170
|
rootKeyIdentifier: this.construction.assert("root key identifier", this.#rootKeyIdentifier),
|
|
151
171
|
rootCertBytes: this.construction.assert("root cert bytes", this.#rootCertBytes),
|
|
152
172
|
nextCertificateId: this.#nextCertificateId,
|
|
153
|
-
|
|
173
|
+
...(this.#icacProps !== undefined
|
|
174
|
+
? {
|
|
175
|
+
icacCertId: this.#icacProps.certId,
|
|
176
|
+
icacKeyPair: this.construction.assert("icac key pair", this.#icacProps.keyPair).keyPair,
|
|
177
|
+
icacKeyIdentifier: this.construction.assert("icac key identifier", this.#icacProps.keyIdentifier),
|
|
178
|
+
icacCertBytes: this.construction.assert("icac cert bytes", this.#icacProps.certBytes),
|
|
179
|
+
}
|
|
180
|
+
: {}),
|
|
154
181
|
};
|
|
155
|
-
|
|
156
|
-
if (this.#icacProps) {
|
|
157
|
-
config.icacCertId = this.#icacProps.certId;
|
|
158
|
-
config.icacKeyPair = this.construction.assert("icac key pair", this.#icacProps.keyPair).keyPair;
|
|
159
|
-
config.icacKeyIdentifier = this.construction.assert("icac key identifier", this.#icacProps.keyIdentifier);
|
|
160
|
-
config.icacCertBytes = this.construction.assert("icac cert bytes", this.#icacProps.certBytes);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
return config;
|
|
164
182
|
}
|
|
165
183
|
|
|
166
184
|
async #generateRootCert() {
|
|
@@ -293,14 +311,21 @@ export class CertificateAuthority {
|
|
|
293
311
|
);
|
|
294
312
|
}
|
|
295
313
|
|
|
296
|
-
#loadFromStorage(certValues: Record<string, unknown
|
|
314
|
+
#loadFromStorage(certValues: Record<string, unknown>, requireIcac?: boolean): void {
|
|
297
315
|
this.#rootCertId = BigInt(certValues.rootCertId as bigint | number);
|
|
298
316
|
this.#rootKeyPair = PrivateKey(certValues.rootKeyPair as BinaryKeyPair);
|
|
299
317
|
this.#rootKeyIdentifier = certValues.rootKeyIdentifier as Bytes;
|
|
300
318
|
this.#rootCertBytes = certValues.rootCertBytes as Bytes;
|
|
301
319
|
this.#nextCertificateId = BigInt(certValues.nextCertificateId as bigint | number);
|
|
302
320
|
|
|
303
|
-
|
|
321
|
+
const hasIcac = this.#isValidStoredIcacCertificate(certValues);
|
|
322
|
+
if (requireIcac !== undefined && requireIcac !== hasIcac) {
|
|
323
|
+
throw new ImplementationError(
|
|
324
|
+
`Stored credentials contain ICAC certificate: ${hasIcac}, but configuration expected it to be ${requireIcac}`,
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
if (hasIcac) {
|
|
304
329
|
this.#icacProps = {
|
|
305
330
|
certId: BigInt(certValues.icacCertId as bigint | number),
|
|
306
331
|
keyPair: PrivateKey(certValues.icacKeyPair as BinaryKeyPair),
|
|
@@ -317,7 +342,6 @@ export class CertificateAuthority {
|
|
|
317
342
|
rootKeyIdentifier: this.#initializedRootKeyIdentifier,
|
|
318
343
|
rootCertBytes: this.#initializedRootCertBytes,
|
|
319
344
|
nextCertificateId: this.#nextCertificateId,
|
|
320
|
-
intermediateCert: this.#intermediateCert,
|
|
321
345
|
};
|
|
322
346
|
|
|
323
347
|
if (this.#icacProps) {
|
|
@@ -366,17 +390,12 @@ interface IcacProps {
|
|
|
366
390
|
}
|
|
367
391
|
|
|
368
392
|
export namespace CertificateAuthority {
|
|
369
|
-
export type CreationConfiguration = {
|
|
370
|
-
intermediateCert?: boolean;
|
|
371
|
-
};
|
|
372
|
-
|
|
373
393
|
export type Configuration = {
|
|
374
394
|
rootCertId: bigint;
|
|
375
395
|
rootKeyPair: BinaryKeyPair;
|
|
376
396
|
rootKeyIdentifier: Bytes;
|
|
377
397
|
rootCertBytes: Bytes;
|
|
378
398
|
nextCertificateId: bigint;
|
|
379
|
-
intermediateCert?: boolean;
|
|
380
399
|
icacCertId?: bigint;
|
|
381
400
|
icacKeyPair?: BinaryKeyPair;
|
|
382
401
|
icacKeyIdentifier?: Bytes;
|
|
@@ -389,7 +408,6 @@ export namespace CertificateAuthority {
|
|
|
389
408
|
rootKeyIdentifier: Bytes;
|
|
390
409
|
rootCertBytes: Bytes;
|
|
391
410
|
nextCertificateId: bigint;
|
|
392
|
-
intermediateCert?: boolean;
|
|
393
411
|
icacCertId?: bigint;
|
|
394
412
|
icacKeyPair?: BinaryKeyPair;
|
|
395
413
|
icacKeyIdentifier?: Bytes;
|