@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.
@@ -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.#intermediateCert = typeof certValues.intermediateCert === "boolean" ? certValues.intermediateCert : false;
51
- const icac = this.#isValidStoredIcacCertificate(certValues);
52
- if (icac && this.#intermediateCert === false) {
53
- throw new ImplementationError(
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
- logger.info(`Created new credentials with ID ${this.#rootCertId}`);
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
- const config = {
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
- intermediateCert: this.#intermediateCert
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
- if (this.#isValidStoredIcacCertificate(certValues)) {
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": "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",
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,EAEA,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EA0BA,aAAa,OACT,QACA,SACA,0BACF;AACE,WAAO,SAAS,sBAAsB,QAAQ,SAAS,wBAAwB;AAAA,EACnF;AAAA,EAEA,YACI,QACA,SACA,0BACF;AACE,SAAK,UAAU;AAEf,SAAK,gBAAgB,aAAa,MAAM,YAAY;AAChD,UAAI,OAAO,YAAY,WAAW;AAC9B,mCAA2B;AAC3B,kBAAU;AAAA,MACd;AAEA,YAAM,aAAa,mBAAmB,iBAAiB,MAAM,QAAQ,OAAO,IAAK,WAAW,CAAC;AAI7F,YAAM,cAAc,4BAA4B,KAAK,8BAA8B,UAAU;AAE7F,UAAI,KAAK,8BAA8B,UAAU,GAAG;AAChD,aAAK,iBAAiB,YAAY,WAAW;AAC7C,eAAO;AAAA,UACH,qCAAqC,KAAK,WAAW,GAAG,KAAK,eAAe,SAAY,qBAAqB,KAAK,WAAW,MAAM,KAAK,EAAE;AAAA,QAC9I;AACA;AAAA,MACJ;AAEA,WAAK,eAAe,MAAM,KAAK,QAAQ,cAAc;AACrD,WAAK,qBAAqB,MAAM,GAAG,MAAM,KAAK,QAAQ,YAAY,KAAK,aAAa,SAAS,CAAC,EAAE;AAAA,QAC5F;AAAA,QACA;AAAA,MACJ;AACA,WAAK,iBAAiB,MAAM,KAAK,kBAAkB;AAEnD,UAAI,aAAa;AACb,aAAK,aAAa,MAAM,KAAK,mBAAmB;AAAA,MACpD;AAEA,aAAO;AAAA,QACH,mCAAmC,KAAK,WAAW,GAAG,KAAK,eAAe,SAAY,qBAAqB,KAAK,WAAW,MAAM,KAAK,EAAE;AAAA,MAC5I;AAEA,UAAI,mBAAmB,gBAAgB;AACnC,cAAM,QAAQ,IAAI,KAAK,kBAAkB,CAAC;AAAA,MAC9C;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,UAAU,IAAI,IAAI,cAAc,EAAE,cAAc,cAAc;AACpE,UAAM,WAAW,IAAI,qBAAqB,IAAI,IAAI,MAAM,GAAG,OAAO;AAClE,QAAI,IAAI,sBAAsB,QAAQ;AACtC,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,WAAkB;AAClB,WAAO,KAAK,cAAc,OAAO,aAAa,KAAK,cAAc;AAAA,EACrE;AAAA,EAEA,IAAI,WAA8B;AAC9B,QAAI,CAAC,KAAK,YAAY;AAClB,aAAO;AAAA,IACX;AACA,WAAO,KAAK,cAAc,OAAO,aAAa,KAAK,WAAW,SAAS;AAAA,EAC3E;AAAA,EAEA,IAAI,SAA6C;AAC7C,WAAO;AAAA,MACH,YAAY,KAAK;AAAA,MACjB,aAAa,KAAK,aAAa,OAAO,iBAAiB,KAAK,YAAY,EAAE;AAAA,MAC1E,mBAAmB,KAAK,aAAa,OAAO,uBAAuB,KAAK,kBAAkB;AAAA,MAC1F,eAAe,KAAK,aAAa,OAAO,mBAAmB,KAAK,cAAc;AAAA,MAC9E,mBAAmB,KAAK;AAAA,MACxB,GAAI,KAAK,eAAe,SAClB;AAAA,QACI,YAAY,KAAK,WAAW;AAAA,QAC5B,aAAa,KAAK,aAAa,OAAO,iBAAiB,KAAK,WAAW,OAAO,EAAE;AAAA,QAChF,mBAAmB,KAAK,aAAa,OAAO,uBAAuB,KAAK,WAAW,aAAa;AAAA,QAChG,eAAe,KAAK,aAAa,OAAO,mBAAmB,KAAK,WAAW,SAAS;AAAA,MACxF,IACA,CAAC;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,MAAM,oBAAoB;AACtB,UAAM,MAAM,KAAK;AACjB,UAAM,OAAO,IAAI,KAAK;AAAA,MAClB,cAAc,MAAM,QAAQ,MAAM,KAAK,WAAW,CAAC;AAAA,MACnD,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,yBAAyB;AAAA,MACzB,QAAQ,EAAE,QAAQ,KAAK,YAAY;AAAA,MACnC,WAAW,eAAe,KAAK,EAAE;AAAA,MACjC,UAAU,eAAe,KAAK,EAAE;AAAA,MAChC,SAAS,EAAE,QAAQ,KAAK,YAAY;AAAA,MACpC,wBAAwB,KAAK,wBAAwB;AAAA,MACrD,YAAY;AAAA,QACR,kBAAkB,EAAE,MAAM,KAAK;AAAA,QAC/B,UAAU;AAAA,UACN,aAAa;AAAA,UACb,SAAS;AAAA,QACb;AAAA,QACA,sBAAsB,KAAK;AAAA,QAC3B,wBAAwB,KAAK;AAAA,MACjC;AAAA,IACJ,CAAC;AACD,UAAM,KAAK,KAAK,KAAK,SAAS,KAAK,uBAAuB;AAC1D,WAAO,KAAK,YAAY;AAAA,EAC5B;AAAA,EAEA,MAAM,qBAAyC;AAC3C,UAAM,SAAS,KAAK;AACpB,UAAM,UAAU,MAAM,KAAK,QAAQ,cAAc;AACjD,UAAM,gBAAgB,MAAM,GAAG,MAAM,KAAK,QAAQ,YAAY,QAAQ,SAAS,CAAC,EAAE,MAAM,GAAG,EAAE;AAE7F,UAAM,MAAM,KAAK;AACjB,UAAM,OAAO,IAAI,KAAK;AAAA,MAClB,cAAc,MAAM,QAAQ,MAAM,MAAM,CAAC;AAAA,MACzC,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,yBAAyB;AAAA,MACzB,QAAQ,EAAE,QAAQ,KAAK,YAAY;AAAA,MACnC,WAAW,eAAe,KAAK,EAAE;AAAA,MACjC,UAAU,eAAe,KAAK,EAAE;AAAA,MAChC,SAAS,EAAE,QAAQ,OAAO;AAAA,MAC1B,wBAAwB,QAAQ;AAAA,MAChC,YAAY;AAAA,QACR,kBAAkB,EAAE,MAAM,KAAK;AAAA,QAC/B,UAAU;AAAA,UACN,aAAa;AAAA,UACb,SAAS;AAAA,QACb;AAAA,QACA,sBAAsB;AAAA,QACtB,wBAAwB,KAAK;AAAA,MACjC;AAAA,IACJ,CAAC;AACD,UAAM,KAAK,KAAK,KAAK,SAAS,KAAK,uBAAuB;AAE1D,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,KAAK,YAAY;AAAA,IAChC;AAAA,EACJ;AAAA,EAEA,MAAM,YACF,WACA,UACA,QACA,uBACF;AACE,UAAM,MAAM,KAAK;AACjB,UAAM,SAAS,KAAK;AAEpB,UAAM,EAAE,QAAQ,YAAY,eAAe,IAAI,KAAK,sBAAsB;AAE1E,UAAM,OAAO,IAAI,IAAI;AAAA,MACjB,cAAc,MAAM,QAAQ,MAAM,MAAM,CAAC;AAAA,MACzC,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,yBAAyB;AAAA,MACzB;AAAA,MACA,WAAW,eAAe,KAAK,EAAE;AAAA,MACjC,UAAU,eAAe,KAAK,EAAE;AAAA,MAChC,SAAS,EAAE,UAAU,QAAQ,sBAAsB;AAAA,MACnD,wBAAwB;AAAA,MACxB,YAAY;AAAA,QACR,kBAAkB,EAAE,MAAM,MAAM;AAAA,QAChC,UAAU;AAAA,UACN,kBAAkB;AAAA,QACtB;AAAA,QACA,kBAAkB,CAAC,GAAG,CAAC;AAAA,QACvB,sBAAsB,MAAM,GAAG,MAAM,KAAK,QAAQ,YAAY,SAAS,CAAC,EAAE,MAAM,GAAG,EAAE;AAAA,QACrF,wBAAwB;AAAA,MAC5B;AAAA,IACJ,CAAC;AACD,UAAM,KAAK,KAAK,KAAK,SAAS,UAAU;AACxC,WAAO,KAAK,YAAY;AAAA,EAC5B;AAAA,EAEA,IAAI,0BAA0B;AAC1B,QAAI,KAAK,iBAAiB,QAAW;AACjC,YAAM,IAAI,cAAc,iCAAiC;AAAA,IAC7D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,gCAAgC;AAChC,QAAI,KAAK,uBAAuB,QAAW;AACvC,YAAM,IAAI,cAAc,oCAAoC;AAAA,IAChE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,8BAA8B,YAA8C;AACxE,YACK,OAAO,WAAW,eAAe,YAAY,OAAO,WAAW,eAAe,cAC9E,MAAM,QAAQ,WAAW,WAAW,KAAK,OAAO,WAAW,gBAAgB,aAC5E,MAAM,QAAQ,WAAW,iBAAiB,KAC1C,MAAM,QAAQ,WAAW,aAAa,MACrC,OAAO,WAAW,sBAAsB,YAAY,OAAO,WAAW,sBAAsB;AAAA,EAErG;AAAA,EAEA,8BAA8B,YAA8C;AACxE,YACK,OAAO,WAAW,eAAe,YAAY,OAAO,WAAW,eAAe,cAC9E,MAAM,QAAQ,WAAW,WAAW,KAAK,OAAO,WAAW,gBAAgB,aAC5E,MAAM,QAAQ,WAAW,iBAAiB,KAC1C,MAAM,QAAQ,WAAW,aAAa;AAAA,EAE9C;AAAA,EAEA,iBAAiB,YAAqC,aAA6B;AAC/E,SAAK,cAAc,OAAO,WAAW,UAA6B;AAClE,SAAK,eAAe,WAAW,WAAW,WAA4B;AACtE,SAAK,qBAAqB,WAAW;AACrC,SAAK,iBAAiB,WAAW;AACjC,SAAK,qBAAqB,OAAO,WAAW,iBAAoC;AAEhF,UAAM,UAAU,KAAK,8BAA8B,UAAU;AAC7D,QAAI,gBAAgB,UAAa,gBAAgB,SAAS;AACtD,YAAM,IAAI;AAAA,QACN,gDAAgD,OAAO,yCAAyC,WAAW;AAAA,MAC/G;AAAA,IACJ;AAEA,QAAI,SAAS;AACT,WAAK,aAAa;AAAA,QACd,QAAQ,OAAO,WAAW,UAA6B;AAAA,QACvD,SAAS,WAAW,WAAW,WAA4B;AAAA,QAC3D,eAAe,WAAW;AAAA,QAC1B,WAAW,WAAW;AAAA,MAC1B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,oBAAsD;AAClD,UAAM,OAAyC;AAAA,MAC3C,YAAY,KAAK;AAAA,MACjB,aAAa,KAAK,wBAAwB;AAAA,MAC1C,mBAAmB,KAAK;AAAA,MACxB,eAAe,KAAK;AAAA,MACpB,mBAAmB,KAAK;AAAA,IAC5B;AAEA,QAAI,KAAK,YAAY;AACjB,WAAK,aAAa,KAAK,WAAW;AAClC,WAAK,cAAc,KAAK,WAAW,QAAQ;AAC3C,WAAK,oBAAoB,KAAK,WAAW;AACzC,WAAK,gBAAgB,KAAK,WAAW;AAAA,IACzC;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,wBAIE;AACE,QAAI,KAAK,YAAY;AACjB,aAAO;AAAA,QACH,QAAQ,EAAE,QAAQ,KAAK,WAAW,OAAO;AAAA,QACzC,YAAY,KAAK,WAAW;AAAA,QAC5B,gBAAgB,KAAK,WAAW;AAAA,MACpC;AAAA,IACJ;AAEA,WAAO;AAAA,MACH,QAAQ,EAAE,QAAQ,KAAK,YAAY;AAAA,MACnC,YAAY,KAAK;AAAA,MACjB,gBAAgB,KAAK;AAAA,IACzB;AAAA,EACJ;AAAA,EAEA,IAAI,4BAA4B;AAC5B,QAAI,KAAK,mBAAmB,QAAW;AACnC,YAAM,IAAI,cAAc,mCAAmC;AAAA,IAC/D;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Fabric.d.ts","sourceRoot":"","sources":["../../../src/fabric/Fabric.ts"],"names":[],"mappings":"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"}
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": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAC5B,SAAS,YAAY;AACrB,SAAS,WAAW;AACpB,SAAS,YAAY;AACrB;AAAA,EACI;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OAEG;AACP,SAAS,cAAc,2BAA2B;AAClD,SAAS,2BAA2B;AACpC,SAAS,mBAAmB;AAG5B;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AAEP,MAAM,SAAS,OAAO,IAAI,QAAQ;AAE3B,MAAM,uBAAuB,YAAY;AAAC;AAW1C,MAAM,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACT;AAAA,EACA;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,oBAAI,IAAmB;AAAA,EACnC;AAAA,EACA;AAAA,EAEA,WAAW,gBAAoB;AAAA,EAC/B,YAAY,gBAAoB;AAAA,EAChC,WAAW,gBAAoB;AAAA,EAExC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,QAAgB,QAAkC;AAC1D,SAAK,UAAU;AACf,SAAK,cAAc,OAAO;AAC1B,SAAK,WAAW,OAAO;AACvB,SAAK,SAAS,OAAO;AACrB,SAAK,aAAa,OAAO;AACzB,QAAI,mBAAmB,QAAQ;AAC3B,WAAK,WAAW,eAAe,OAAO,aAAa;AAAA,IACvD,OAAO;AACH,WAAK,WAAW,OAAO;AAAA,IAC3B;AACA,SAAK,iBAAiB,OAAO;AAC7B,SAAK,gBAAgB,OAAO;AAC5B,SAAK,WAAW,OAAO;AACvB,SAAK,wBAAwB,OAAO;AACpC,SAAK,mCAAmC,OAAO;AAC/C,SAAK,qBAAqB,OAAO;AACjC,SAAK,kBAAkB,OAAO;AAC9B,SAAK,4BAA4B,OAAO;AACxC,SAAK,QAAQ,OAAO;AACpB,SAAK,SAAS,OAAO;AACrB,SAAK,WAAW,WAAW,OAAO,OAAO;AACzC,SAAK,iBAAiB,IAAI,oBAAoB,IAAI;AAClD,SAAK,UAAU,IAAI,aAAa,IAAI;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,OAAO,QAAgB,QAAuB;AACvD,QAAI,EAAE,UAAU,iCAAiC,IAAI;AAGrD,QAAI,aAAa,QAAW;AACxB,YAAM,QAAQ,OAAO,iBAAiB,KAAK,eAAe,OAAO,QAAQ;AACzE,iBAAW,MAAM,eAAe,QAAQ,QAAQ,OAAO,UAAU,KAAK;AAAA,IAC1E;AAGA,QAAI,qCAAqC,QAAW;AAChD,yCAAmC,MAAM,OAAO;AAAA,QAC5C,OAAO;AAAA,QACP,MAAM,WAAW,UAAU,CAAC;AAAA,QAC5B;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO,IAAI,OAAO,QAAQ;AAAA,MACtB,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,SAA4B;AAC5B,UAAM,SAAS;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,YAAY,KAAK;AAAA,MACjB,UAAU,KAAK;AAAA,MACf,eAAe,KAAK;AAAA,MACpB,SAAS,KAAK,SAAS;AAAA,MACvB,cAAc,KAAK;AAAA,MACnB,UAAU,KAAK;AAAA,MACf,uBAAuB,KAAK;AAAA,MAC5B,kCAAkC,KAAK;AAAA,MACvC,oBAAoB,KAAK;AAAA,MACzB,iBAAiB,KAAK;AAAA,MACtB,0BAA0B,KAAK;AAAA,MAC/B,OAAO,KAAK;AAAA,IAChB;AAGA,IAAC,OAA+C,gBAAgB,MAAM,WAAW,KAAK,UAAU,CAAC;AAEjG,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,SAAS,OAAe;AAC1B,QAAI,MAAM,WAAW,KAAK,MAAM,SAAS,IAAI;AACzC,YAAM,IAAI,oBAAoB,wDAAwD;AAAA,IAC1F;AACA,QAAI,KAAK,WAAW,OAAO;AACvB;AAAA,IACJ;AACA,SAAK,SAAS;AACd,UAAM,KAAK,QAAQ;AAAA,EACvB;AAAA,EAEA,IAAI,2BAA2B;AAC3B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,6BACF,UACA,0BACA,MACF;AACE,QAAI,SAAS,UAAa,KAAK,uBAAuB,QAAW;AAC7D,YAAM,IAAI,eAAe,oBAAoB,yCAAyC;AAAA,IAC1F;AAEA,QAAI,6BAA6B,QAAW;AACxC,UAAI,yBAAyB,eAAe,GAAG;AAC3C,aAAK,4BAA4B;AAAA,MACrC,WAAW,yBAAyB,eAAe,IAAI;AAEnD,aAAK,4BAA4B;AAAA,MACrC,OAAO;AACH,cAAM,IAAI,eAAe,qBAAqB,wDAAwD;AAAA,MAC1G;AAAA,IACJ;AACA,QAAI,aAAa,QAAW;AACxB,WAAK,gBAAgB;AAAA,IACzB;AACA,QAAI,SAAS,QAAW;AACpB,UAAI,KAAK,eAAe,GAAG;AACvB,aAAK,QAAQ;AAAA,MACjB,OAAO;AACH,aAAK,QAAQ;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,MACH;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AACA,UAAM,KAAK,QAAQ;AAAA,EACvB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,gBAAgB;AAChB,QAAI,KAAK,mBAAmB,QAAW;AACnC,WAAK,iBAAiB,KAAK,eAAe,KAAK,QAAQ;AAAA,IAC3D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,QAAQ,SAAyB;AACjC,SAAK,WAAW;AAChB,SAAK,QAAQ,UAAU;AAAA,EAC3B;AAAA,EAEA,IAAI,UAAsC;AACtC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,gBAAgB;AAChB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,IAAI,aAAa;AACb,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,KAAK,MAAa;AACd,WAAO,KAAK,OAAO,UAAU,KAAK,UAAU,IAAI;AAAA,EACpD;AAAA,EAEA,MAAM,kBAAkB,iBAAwB,oBAA4B;AACxE,UAAM,WAAW,KAAK,QAAQ,KAAK,QAAQ;AAC3C,UAAM,UAAU,IAAI,QAAQ,eAAe;AAC3C,UAAM,UAAU,uBAAuB,SAAY,KAAK,QAAQ,kBAAkB,IAAI;AACtF,QAAI,YAAY,QAAW;AAEvB,YAAM,QAAQ,OAAO,KAAK,SAAS,QAAQ;AAAA,IAC/C;AAEA,UAAM,QAAQ,OAAO,KAAK,SAAS,UAAU,OAAO;AAAA,EACxD;AAAA,EAEA,gCAAgC,UAAoB,eAAsB;AACtE,WAAO,KAAK,aAAa,YAAY,MAAM,SAAS,KAAK,eAAe,aAAa;AAAA,EACzF;AAAA,EAEA,eAAe,SAAc;AACzB,WACI,MAAM,SAAS,KAAK,SAAS,WAAW,QAAQ,SAAS,KACzD,MAAM,SAAS,KAAK,SAAS,YAAY,QAAQ,UAAU;AAAA,EAEnE;AAAA,EAEA,cAAc,QAAgB,QAAe;AACzC,UAAM,SAAS,IAAI,WAAW,OAAO,MAAM;AAC3C,WAAO,eAAe,MAAM;AAC5B,WAAO,eAAe,KAAK,aAAa;AACxC,WAAO,YAAY,KAAK,QAAQ;AAChC,WAAO,YAAY,MAAM;AACzB,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,wBAAwB,QAAgB,QAAe;AACzD,WAAO,KAAK,QAAQ,SAAS,KAAK,OAAO,QAAQ,gBAAgB,CAAC,EAAE,KAAK,KAAK,cAAc,QAAQ,MAAM,CAAC;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,QAAgB,QAAe;AACnD,UAAM,OAAO,KAAK,cAAc,QAAQ,MAAM;AAE9C,UAAM,iBAAiB,KAAK,OAAO,QAAQ,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,MAAM,KAAK,QAAQ,SAAS,KAAK,IAAI,CAAC;AAC5G,WAAO,MAAM,QAAQ,IAAI,cAAc;AAAA,EAC3C;AAAA,EAEA,WAAW,SAAwB;AAC/B,SAAK,UAAU,IAAI,OAAO;AAAA,EAC9B;AAAA,EAEA,cAAc,SAAwB;AAClC,SAAK,UAAU,OAAO,OAAO;AAAA,EACjC;AAAA,EAEA,kBAAkB,YAAoB;AAClC,eAAW,WAAW,KAAK,WAAW;AAClC,UAAI,QAAQ,eAAe,YAAY;AACnC,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,gBAAgB,UAAsD;AAEtE,SAAK,mBAAmB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,MAAM,iBAAmC;AAC3C,UAAM,KAAK,SAAS,KAAK;AAEzB,eAAW,WAAW,CAAC,GAAG,KAAK,SAAS,GAAG;AACvC,YAAM,QAAQ,cAAc,YAAY;AACpC,cAAM,QAAQ,mBAAmB,IAAI;AAAA,MACzC,CAAC;AAAA,IACL;AAEA,UAAM,KAAK,OAAO,eAAe;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAO,iBAAmC;AAC5C,SAAK,cAAc;AAEnB,UAAM,KAAK,UAAU,KAAK;AAE1B,eAAW,WAAW,CAAC,GAAG,KAAK,SAAS,GAAG;AACvC,YAAM,QAAQ,mBAAmB,eAAe;AAAA,IACpD;AAEA,UAAM,KAAK,SAAS,KAAK;AAAA,EAC7B;AAAA,EAEA,QAAQ,WAAW,MAAM;AACrB,WAAO,KAAK,mBAAmB,QAAQ;AAAA,EAC3C;AAAA,EAEA,IAAI,sBAAgD;AAChD,WAAO;AAAA,MACH,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,YAAY,KAAK;AAAA,MACjB,cAAc,KAAK;AAAA,MACnB,OAAO,KAAK;AAAA,IAChB;AAAA,EACJ;AAAA,EAEA,UAAU,QAA6B;AACnC,WAAO,YAAY,EAAE,aAAa,KAAK,aAAa,OAAO,CAAC;AAAA,EAChE;AAAA,EAEA,eAAe,SAAkB;AAC7B,YAAQ,cAAc,OAAO;AAE7B,WAAO,YAAY,EAAE,aAAa,KAAK,aAAa,QAAQ,OAAO,YAAY,OAAO,EAAE,CAAC;AAAA,EAC7F;AACJ;AAEO,MAAM,cAAc;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EAET,YAAY,QAAgB,KAAiB;AACzC,SAAK,UAAU;AACf,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,aAAa,OAAO,QAAgB;AAChC,WAAO,IAAI,cAAc,QAAQ,MAAM,OAAO,cAAc,CAAC;AAAA,EACjE;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,kCAAkC;AAC9B,WAAO,YAAY,gCAAgC,KAAK,SAAS,KAAK,QAAQ;AAAA,EAClF;AAAA,EAEA,MAAM,YAAY,UAAiB;AAC/B,UAAM,OAAO,KAAK,QAAQ,QAAQ;AAClC,UAAM,KAAK,OAAO,KAAK,OAAO;AAC9B,SAAK,YAAY;AACjB,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,mBAAmB,iBAAwB,oBAA4B;AACzE,QAAI,uBAAuB,UAAa,mBAAmB,eAAe,GAAG;AACzE,2BAAqB;AAAA,IACzB;AACA,UAAM;AAAA,MACF,SAAS,EAAE,QAAQ,UAAU,sBAAsB;AAAA,MACnD;AAAA,IACJ,IAAI,IAAI,QAAQ,eAAe,EAAE;AACjC,WAAO;AAAA,MACH;AAAA,MACA,WAAW,KAAK,EAAE,QAAQ,OAAO,MAAM,MAAM,GAAG,UAAU,sBAAsB,CAAC;AAAA,IACrF;AACA,QAAI,0BAA0B,QAAW;AACrC,2BAAqB,mBAAmB,qBAAqB;AAAA,IACjE;AAEA,QAAI,CAAC,MAAM,SAAS,wBAAwB,KAAK,SAAS,SAAS,GAAG;AAClE,YAAM,IAAI,eAAe,mDAAmD;AAAA,IAChF;AAEA,QAAI,KAAK,cAAc,QAAW;AAC9B,YAAM,IAAI,gBAAgB,wCAAwC;AAAA,IACtE;AAEA,UAAM,WAAW,KAAK,QAAQ,KAAK,SAAS;AAC5C,UAAM,UAAU,IAAI,QAAQ,eAAe;AAC3C,UAAM,UAAU,uBAAuB,SAAY,KAAK,QAAQ,kBAAkB,IAAI;AACtF,QAAI,YAAY,QAAW;AACvB,YAAM,QAAQ,OAAO,KAAK,SAAS,QAAQ;AAAA,IAC/C;AACA,UAAM,QAAQ,OAAO,KAAK,SAAS,UAAU,OAAO;AAEpD,SAAK,mBAAmB;AACxB,SAAK,sBAAsB;AAC3B,SAAK,YAAY,SAAS,QAAQ;AAClC,SAAK,UAAU;AAEf,WAAO;AAAA,EACX;AAAA,EAEA,gBAAgB,cAAwB;AACpC,SAAK,gBAAgB;AACrB,WAAO;AAAA,EACX;AAAA,EAEA,cAAc,YAAoB;AAC9B,SAAK,cAAc;AACnB,WAAO;AAAA,EACX;AAAA,EAEA,yBAAyB,KAAY;AACjC,SAAK,yBAAyB;AAC9B,WAAO;AAAA,EACX;AAAA,EAEA,SAAS,OAAe;AACpB,QAAI,MAAM,WAAW,KAAK,MAAM,SAAS,IAAI;AACzC,YAAM,IAAI,oBAAoB,wDAAwD;AAAA,IAC1F;AACA,SAAK,SAAS;AACd,WAAO;AAAA,EACX;AAAA,EAEA,8BAA8B,QAAgB;AAC1C,SAAK,gBAAgB,OAAO;AAC5B,SAAK,cAAc,OAAO;AAC1B,SAAK,yBAAyB,OAAO;AACrC,SAAK,YAAY,OAAO;AACxB,SAAK,4BAA4B,OAAO;AACxC,SAAK,QAAQ,OAAO;AACpB,SAAK,SAAS,OAAO;AAAA,EACzB;AAAA,EAEA,IAAI,WAAW;AACX,QAAI,KAAK,cAAc,UAAa,KAAK,cAAc,QAAW;AAC9D,YAAM,IAAI,gBAAgB,8CAA8C;AAAA,IAC5E;AACA,WAAO,eAAe,QAAQ,KAAK,SAAS,KAAK,WAAW,KAAK,eAAe,KAAK,SAAS,CAAC;AAAA,EACnG;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,MAAM,aAA0B;AAClC,QAAI,KAAK,iBAAiB,OAAW,OAAM,IAAI,cAAc,sCAAsC;AACnG,QAAI,KAAK,gBAAgB,OAAW,OAAM,IAAI,cAAc,4BAA4B;AACxF,QAAI,KAAK,kBAAkB,OAAW,OAAM,IAAI,cAAc,0BAA0B;AACxF,QAAI,KAAK,cAAc,OAAW,OAAM,IAAI,cAAc,0BAA0B;AACpF,QAAI,KAAK,2BAA2B,OAAW,OAAM,IAAI,cAAc,uCAAuC;AAC9G,QAAI,KAAK,qBAAqB,UAAa,KAAK,cAAc,UAAa,KAAK,YAAY;AACxF,YAAM,IAAI,cAAc,iCAAiC;AAE7D,SAAK,eAAe;AAEpB,WAAO,MAAM,OAAO,OAAO,KAAK,SAAS;AAAA,MACrC,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,cAAc,KAAK;AAAA,MACnB,UAAU,KAAK;AAAA,MACf,uBAAuB,KAAK;AAAA;AAAA,MAC5B,oBAAoB,KAAK;AAAA,MACzB,iBAAiB,KAAK;AAAA,MACtB,0BAA0B,KAAK;AAAA,MAC/B,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAChB,CAAC;AAAA,EACL;AACJ;",
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
- * Obtain the default fabric for this authority.
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 a new fabric under our control.
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;AAC5E,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;;gBAMZ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,sBAAsB;IAUnD,IAAI,YAAY,kCAEf;IAED;;OAEG;IACH,IAAI,EAAE,yBAEL;IAED;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,4BAA4B;IAkBxD;;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;IA0CvD,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;CAQjD"}
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
- * Obtain the default fabric for this authority.
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
- const fabric = this.fabrics.find((fabric2) => Bytes.areEqual(fabric2.rootCert, caRootCert));
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 a new fabric under our control.
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": "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",
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-20251220-0bb8d9f89",
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-20251220-0bb8d9f89",
44
- "@matter/model": "0.16.0-alpha.0-20251220-0bb8d9f89",
45
- "@matter/types": "0.16.0-alpha.0-20251220-0bb8d9f89"
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-20251220-0bb8d9f89",
49
- "@matter/testing": "0.16.0-alpha.0-20251220-0bb8d9f89"
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 | CertificateAuthority.CreationConfiguration,
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 | CertificateAuthority.CreationConfiguration,
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.#intermediateCert =
87
- typeof certValues.intermediateCert === "boolean" ? certValues.intermediateCert : false;
88
-
89
- const icac = this.#isValidStoredIcacCertificate(certValues);
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
- logger.info(`Created new credentials with ID ${this.#rootCertId}`);
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
- const config: CertificateAuthority.Configuration = {
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
- intermediateCert: this.#intermediateCert,
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>): void {
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
- if (this.#isValidStoredIcacCertificate(certValues)) {
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;