@matter/protocol 0.15.0-alpha.0-20250616-4b3754906 → 0.15.0-alpha.0-20250619-df2264f15

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.
Files changed (207) hide show
  1. package/dist/cjs/certificate/AttestationCertificateManager.d.ts.map +1 -1
  2. package/dist/cjs/certificate/AttestationCertificateManager.js +26 -22
  3. package/dist/cjs/certificate/AttestationCertificateManager.js.map +1 -1
  4. package/dist/cjs/certificate/CertificateAuthority.d.ts +1 -2
  5. package/dist/cjs/certificate/CertificateAuthority.d.ts.map +1 -1
  6. package/dist/cjs/certificate/CertificateAuthority.js +22 -29
  7. package/dist/cjs/certificate/CertificateAuthority.js.map +1 -1
  8. package/dist/cjs/certificate/DeviceCertification.d.ts.map +1 -1
  9. package/dist/cjs/certificate/DeviceCertification.js +2 -6
  10. package/dist/cjs/certificate/DeviceCertification.js.map +1 -1
  11. package/dist/cjs/certificate/index.d.ts +7 -2
  12. package/dist/cjs/certificate/index.d.ts.map +1 -1
  13. package/dist/cjs/certificate/index.js +14 -2
  14. package/dist/cjs/certificate/index.js.map +1 -1
  15. package/dist/cjs/certificate/kinds/AttestationCertificates.d.ts +34 -0
  16. package/dist/cjs/certificate/kinds/AttestationCertificates.d.ts.map +1 -0
  17. package/dist/cjs/certificate/kinds/AttestationCertificates.js +64 -0
  18. package/dist/cjs/certificate/kinds/AttestationCertificates.js.map +6 -0
  19. package/dist/cjs/certificate/kinds/CertificationDeclaration.d.ts +23 -0
  20. package/dist/cjs/certificate/kinds/CertificationDeclaration.d.ts.map +1 -0
  21. package/dist/cjs/certificate/kinds/CertificationDeclaration.js +86 -0
  22. package/dist/cjs/certificate/kinds/CertificationDeclaration.js.map +6 -0
  23. package/dist/cjs/certificate/kinds/Icac.d.ts +29 -0
  24. package/dist/cjs/certificate/kinds/Icac.d.ts.map +1 -0
  25. package/dist/cjs/certificate/kinds/Icac.js +138 -0
  26. package/dist/cjs/certificate/kinds/Icac.js.map +6 -0
  27. package/dist/cjs/certificate/kinds/Noc.d.ts +27 -0
  28. package/dist/cjs/certificate/kinds/Noc.d.ts.map +1 -0
  29. package/dist/cjs/certificate/kinds/Noc.js +148 -0
  30. package/dist/cjs/certificate/kinds/Noc.js.map +6 -0
  31. package/dist/cjs/certificate/kinds/OperationalBase.d.ts +24 -0
  32. package/dist/cjs/certificate/kinds/OperationalBase.d.ts.map +1 -0
  33. package/dist/cjs/certificate/kinds/OperationalBase.js +68 -0
  34. package/dist/cjs/certificate/kinds/OperationalBase.js.map +6 -0
  35. package/dist/cjs/certificate/kinds/Rcac.d.ts +25 -0
  36. package/dist/cjs/certificate/kinds/Rcac.d.ts.map +1 -0
  37. package/dist/cjs/certificate/kinds/Rcac.js +119 -0
  38. package/dist/cjs/certificate/kinds/Rcac.js.map +6 -0
  39. package/dist/cjs/certificate/kinds/X509Base.d.ts +92 -0
  40. package/dist/cjs/certificate/kinds/X509Base.d.ts.map +1 -0
  41. package/dist/cjs/certificate/kinds/X509Base.js +344 -0
  42. package/dist/cjs/certificate/kinds/X509Base.js.map +6 -0
  43. package/dist/cjs/certificate/kinds/common.d.ts +18 -0
  44. package/dist/cjs/certificate/kinds/common.d.ts.map +1 -0
  45. package/dist/cjs/certificate/kinds/common.js +42 -0
  46. package/dist/cjs/certificate/kinds/common.js.map +6 -0
  47. package/dist/cjs/certificate/kinds/definitions/asn.d.ts +25 -0
  48. package/dist/cjs/certificate/kinds/definitions/asn.d.ts.map +1 -0
  49. package/dist/cjs/certificate/kinds/definitions/asn.js +83 -0
  50. package/dist/cjs/certificate/kinds/definitions/asn.js.map +6 -0
  51. package/dist/cjs/certificate/kinds/definitions/attestation.d.ts +44 -0
  52. package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -0
  53. package/dist/cjs/certificate/kinds/definitions/attestation.js +22 -0
  54. package/dist/cjs/certificate/kinds/definitions/attestation.js.map +6 -0
  55. package/dist/cjs/certificate/kinds/definitions/base.d.ts +52 -0
  56. package/dist/cjs/certificate/kinds/definitions/base.d.ts.map +1 -0
  57. package/dist/cjs/certificate/kinds/definitions/base.js +43 -0
  58. package/dist/cjs/certificate/kinds/definitions/base.js.map +6 -0
  59. package/dist/cjs/certificate/kinds/definitions/certification-declaration.d.ts +18 -0
  60. package/dist/cjs/certificate/kinds/definitions/certification-declaration.d.ts.map +1 -0
  61. package/dist/cjs/certificate/kinds/definitions/certification-declaration.js +50 -0
  62. package/dist/cjs/certificate/kinds/definitions/certification-declaration.js.map +6 -0
  63. package/dist/cjs/certificate/kinds/definitions/operational.d.ts +368 -0
  64. package/dist/cjs/certificate/kinds/definitions/operational.d.ts.map +1 -0
  65. package/dist/cjs/certificate/kinds/definitions/operational.js +149 -0
  66. package/dist/cjs/certificate/kinds/definitions/operational.js.map +6 -0
  67. package/dist/cjs/certificate/kinds/index.d.ts +12 -0
  68. package/dist/cjs/certificate/kinds/index.d.ts.map +1 -0
  69. package/dist/cjs/certificate/kinds/index.js +29 -0
  70. package/dist/cjs/certificate/kinds/index.js.map +6 -0
  71. package/dist/cjs/fabric/Fabric.d.ts +1 -2
  72. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  73. package/dist/cjs/fabric/Fabric.js +28 -31
  74. package/dist/cjs/fabric/Fabric.js.map +1 -1
  75. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  76. package/dist/cjs/peer/ControllerCommissioningFlow.js +2 -1
  77. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  78. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  79. package/dist/cjs/session/case/CaseClient.js +3 -3
  80. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  81. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  82. package/dist/cjs/session/case/CaseServer.js +2 -2
  83. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  84. package/dist/esm/certificate/AttestationCertificateManager.d.ts.map +1 -1
  85. package/dist/esm/certificate/AttestationCertificateManager.js +20 -16
  86. package/dist/esm/certificate/AttestationCertificateManager.js.map +1 -1
  87. package/dist/esm/certificate/CertificateAuthority.d.ts +1 -2
  88. package/dist/esm/certificate/CertificateAuthority.d.ts.map +1 -1
  89. package/dist/esm/certificate/CertificateAuthority.js +18 -30
  90. package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
  91. package/dist/esm/certificate/DeviceCertification.d.ts.map +1 -1
  92. package/dist/esm/certificate/DeviceCertification.js +2 -6
  93. package/dist/esm/certificate/DeviceCertification.js.map +1 -1
  94. package/dist/esm/certificate/index.d.ts +7 -2
  95. package/dist/esm/certificate/index.d.ts.map +1 -1
  96. package/dist/esm/certificate/index.js +10 -2
  97. package/dist/esm/certificate/index.js.map +1 -1
  98. package/dist/esm/certificate/kinds/AttestationCertificates.d.ts +34 -0
  99. package/dist/esm/certificate/kinds/AttestationCertificates.d.ts.map +1 -0
  100. package/dist/esm/certificate/kinds/AttestationCertificates.js +44 -0
  101. package/dist/esm/certificate/kinds/AttestationCertificates.js.map +6 -0
  102. package/dist/esm/certificate/kinds/CertificationDeclaration.d.ts +23 -0
  103. package/dist/esm/certificate/kinds/CertificationDeclaration.d.ts.map +1 -0
  104. package/dist/esm/certificate/kinds/CertificationDeclaration.js +66 -0
  105. package/dist/esm/certificate/kinds/CertificationDeclaration.js.map +6 -0
  106. package/dist/esm/certificate/kinds/Icac.d.ts +29 -0
  107. package/dist/esm/certificate/kinds/Icac.d.ts.map +1 -0
  108. package/dist/esm/certificate/kinds/Icac.js +118 -0
  109. package/dist/esm/certificate/kinds/Icac.js.map +6 -0
  110. package/dist/esm/certificate/kinds/Noc.d.ts +27 -0
  111. package/dist/esm/certificate/kinds/Noc.d.ts.map +1 -0
  112. package/dist/esm/certificate/kinds/Noc.js +128 -0
  113. package/dist/esm/certificate/kinds/Noc.js.map +6 -0
  114. package/dist/esm/certificate/kinds/OperationalBase.d.ts +24 -0
  115. package/dist/esm/certificate/kinds/OperationalBase.d.ts.map +1 -0
  116. package/dist/esm/certificate/kinds/OperationalBase.js +48 -0
  117. package/dist/esm/certificate/kinds/OperationalBase.js.map +6 -0
  118. package/dist/esm/certificate/kinds/Rcac.d.ts +25 -0
  119. package/dist/esm/certificate/kinds/Rcac.d.ts.map +1 -0
  120. package/dist/esm/certificate/kinds/Rcac.js +99 -0
  121. package/dist/esm/certificate/kinds/Rcac.js.map +6 -0
  122. package/dist/esm/certificate/kinds/X509Base.d.ts +92 -0
  123. package/dist/esm/certificate/kinds/X509Base.d.ts.map +1 -0
  124. package/dist/esm/certificate/kinds/X509Base.js +347 -0
  125. package/dist/esm/certificate/kinds/X509Base.js.map +6 -0
  126. package/dist/esm/certificate/kinds/common.d.ts +18 -0
  127. package/dist/esm/certificate/kinds/common.d.ts.map +1 -0
  128. package/dist/esm/certificate/kinds/common.js +22 -0
  129. package/dist/esm/certificate/kinds/common.js.map +6 -0
  130. package/dist/esm/certificate/kinds/definitions/asn.d.ts +25 -0
  131. package/dist/esm/certificate/kinds/definitions/asn.d.ts.map +1 -0
  132. package/dist/esm/certificate/kinds/definitions/asn.js +63 -0
  133. package/dist/esm/certificate/kinds/definitions/asn.js.map +6 -0
  134. package/dist/esm/certificate/kinds/definitions/attestation.d.ts +44 -0
  135. package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -0
  136. package/dist/esm/certificate/kinds/definitions/attestation.js +6 -0
  137. package/dist/esm/certificate/kinds/definitions/attestation.js.map +6 -0
  138. package/dist/esm/certificate/kinds/definitions/base.d.ts +52 -0
  139. package/dist/esm/certificate/kinds/definitions/base.d.ts.map +1 -0
  140. package/dist/esm/certificate/kinds/definitions/base.js +23 -0
  141. package/dist/esm/certificate/kinds/definitions/base.js.map +6 -0
  142. package/dist/esm/certificate/kinds/definitions/certification-declaration.d.ts +18 -0
  143. package/dist/esm/certificate/kinds/definitions/certification-declaration.d.ts.map +1 -0
  144. package/dist/esm/certificate/kinds/definitions/certification-declaration.js +41 -0
  145. package/dist/esm/certificate/kinds/definitions/certification-declaration.js.map +6 -0
  146. package/dist/esm/certificate/kinds/definitions/operational.d.ts +368 -0
  147. package/dist/esm/certificate/kinds/definitions/operational.d.ts.map +1 -0
  148. package/dist/esm/certificate/kinds/definitions/operational.js +148 -0
  149. package/dist/esm/certificate/kinds/definitions/operational.js.map +6 -0
  150. package/dist/esm/certificate/kinds/index.d.ts +12 -0
  151. package/dist/esm/certificate/kinds/index.d.ts.map +1 -0
  152. package/dist/esm/certificate/kinds/index.js +12 -0
  153. package/dist/esm/certificate/kinds/index.js.map +6 -0
  154. package/dist/esm/fabric/Fabric.d.ts +1 -2
  155. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  156. package/dist/esm/fabric/Fabric.js +28 -36
  157. package/dist/esm/fabric/Fabric.js.map +1 -1
  158. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  159. package/dist/esm/peer/ControllerCommissioningFlow.js +2 -1
  160. package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
  161. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  162. package/dist/esm/session/case/CaseClient.js +3 -3
  163. package/dist/esm/session/case/CaseClient.js.map +1 -1
  164. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  165. package/dist/esm/session/case/CaseServer.js +2 -2
  166. package/dist/esm/session/case/CaseServer.js.map +1 -1
  167. package/package.json +6 -6
  168. package/src/certificate/AttestationCertificateManager.ts +20 -16
  169. package/src/certificate/CertificateAuthority.ts +18 -35
  170. package/src/certificate/DeviceCertification.ts +2 -6
  171. package/src/certificate/index.ts +7 -2
  172. package/src/certificate/kinds/AttestationCertificates.ts +48 -0
  173. package/src/certificate/kinds/CertificationDeclaration.ts +91 -0
  174. package/src/certificate/kinds/Icac.ts +156 -0
  175. package/src/certificate/kinds/Noc.ts +164 -0
  176. package/src/certificate/kinds/OperationalBase.ts +72 -0
  177. package/src/certificate/kinds/Rcac.ts +126 -0
  178. package/src/certificate/kinds/X509Base.ts +380 -0
  179. package/src/certificate/kinds/common.ts +24 -0
  180. package/src/certificate/kinds/definitions/asn.ts +97 -0
  181. package/src/certificate/kinds/definitions/attestation.ts +46 -0
  182. package/src/certificate/kinds/definitions/base.ts +43 -0
  183. package/src/certificate/kinds/definitions/certification-declaration.ts +38 -0
  184. package/src/certificate/kinds/definitions/operational.ts +179 -0
  185. package/src/certificate/kinds/index.ts +12 -0
  186. package/src/fabric/Fabric.ts +28 -40
  187. package/src/peer/ControllerCommissioningFlow.ts +2 -1
  188. package/src/session/case/CaseClient.ts +3 -3
  189. package/src/session/case/CaseServer.ts +2 -2
  190. package/dist/cjs/certificate/CertificateManager.d.ts +0 -578
  191. package/dist/cjs/certificate/CertificateManager.d.ts.map +0 -1
  192. package/dist/cjs/certificate/CertificateManager.js +0 -843
  193. package/dist/cjs/certificate/CertificateManager.js.map +0 -6
  194. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts +0 -11
  195. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts.map +0 -1
  196. package/dist/cjs/certificate/CertificationDeclarationManager.js +0 -54
  197. package/dist/cjs/certificate/CertificationDeclarationManager.js.map +0 -6
  198. package/dist/esm/certificate/CertificateManager.d.ts +0 -578
  199. package/dist/esm/certificate/CertificateManager.d.ts.map +0 -1
  200. package/dist/esm/certificate/CertificateManager.js +0 -870
  201. package/dist/esm/certificate/CertificateManager.js.map +0 -6
  202. package/dist/esm/certificate/CertificationDeclarationManager.d.ts +0 -11
  203. package/dist/esm/certificate/CertificationDeclarationManager.d.ts.map +0 -1
  204. package/dist/esm/certificate/CertificationDeclarationManager.js +0 -34
  205. package/dist/esm/certificate/CertificationDeclarationManager.js.map +0 -6
  206. package/src/certificate/CertificateManager.ts +0 -1176
  207. package/src/certificate/CertificationDeclarationManager.ts +0 -52
@@ -5,14 +5,13 @@
5
5
  */
6
6
  import { BinaryKeyPair, Construction, Crypto, Environment, Environmental, StorageContext } from "#general";
7
7
  import { CaseAuthenticatedTag, FabricId, NodeId } from "#types";
8
- import { CertificateManager } from "./CertificateManager.js";
9
8
  /**
10
9
  * Manages the root key pair for a fabric owned by a local node.
11
10
  * TODO: Add support for (optional) ICACs
12
11
  */
13
12
  export declare class CertificateAuthority {
14
13
  #private;
15
- get certs(): CertificateManager;
14
+ get crypto(): Crypto;
16
15
  get construction(): Construction<CertificateAuthority>;
17
16
  static create(crypto: Crypto, options?: StorageContext | CertificateAuthority.Configuration): Promise<CertificateAuthority>;
18
17
  constructor(crypto: Crypto, options?: StorageContext | CertificateAuthority.Configuration);
@@ -1 +1 @@
1
- {"version":3,"file":"CertificateAuthority.d.ts","sourceRoot":"","sources":["../../../src/certificate/CertificateAuthority.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,aAAa,EAEb,YAAY,EACZ,MAAM,EACN,WAAW,EACX,aAAa,EAIb,cAAc,EAKjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EACH,kBAAkB,EAOrB,MAAM,yBAAyB,CAAC;AAIjC;;;GAGG;AACH,qBAAa,oBAAoB;;IAS7B,IAAI,KAAK,uBAER;IAED,IAAI,YAAY,uCAEf;WAEY,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,oBAAoB,CAAC,aAAa;gBAIrF,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,oBAAoB,CAAC,aAAa;IA2CzF,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAO9C,IAAI,QAAQ,gCAEX;IAED,IAAI,MAAM,IAAI,oBAAoB,CAAC,aAAa,CAQ/C;IA+BK,WAAW,CACb,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,CAAC,EAAE,oBAAoB,EAAE;CA8CrD;AAED,yBAAiB,oBAAoB,CAAC;IAClC,KAAY,aAAa,GAAG;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,aAAa,CAAC;QAC3B,iBAAiB,EAAE,UAAU,CAAC;QAC9B,aAAa,EAAE,UAAU,CAAC;QAC1B,iBAAiB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACL"}
1
+ {"version":3,"file":"CertificateAuthority.d.ts","sourceRoot":"","sources":["../../../src/certificate/CertificateAuthority.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,aAAa,EAEb,YAAY,EACZ,MAAM,EACN,WAAW,EACX,aAAa,EAIb,cAAc,EAKjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhE;;;GAGG;AACH,qBAAa,oBAAoB;;IAS7B,IAAI,MAAM,WAET;IAED,IAAI,YAAY,uCAEf;WAEY,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,oBAAoB,CAAC,aAAa;gBAIrF,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,oBAAoB,CAAC,aAAa;IAwCzF,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAO9C,IAAI,QAAQ,gCAEX;IAED,IAAI,MAAM,IAAI,oBAAoB,CAAC,aAAa,CAQ/C;IA4BK,WAAW,CACb,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,CAAC,EAAE,oBAAoB,EAAE;CAyCrD;AAED,yBAAiB,oBAAoB,CAAC;IAClC,KAAY,aAAa,GAAG;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,aAAa,CAAC;QAC3B,iBAAiB,EAAE,UAAU,CAAC;QAC9B,aAAa,EAAE,UAAU,CAAC;QAC1B,iBAAiB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACL"}
@@ -17,23 +17,20 @@ import {
17
17
  asyncNew,
18
18
  toHex
19
19
  } from "#general";
20
- import {
21
- CertificateManager,
22
- TlvOperationalCertificate,
23
- TlvRootCertificate,
24
- jsToMatterDate
25
- } from "./CertificateManager.js";
20
+ import { jsToMatterDate } from "./kinds/definitions/asn.js";
21
+ import { Noc } from "./kinds/Noc.js";
22
+ import { Rcac } from "./kinds/Rcac.js";
26
23
  const logger = Logger.get("CertificateAuthority");
27
24
  class CertificateAuthority {
28
- #certs;
25
+ #crypto;
29
26
  #rootCertId = BigInt(0);
30
27
  #rootKeyPair;
31
28
  #rootKeyIdentifier;
32
29
  #rootCertBytes;
33
30
  #nextCertificateId = BigInt(1);
34
31
  #construction;
35
- get certs() {
36
- return this.#certs;
32
+ get crypto() {
33
+ return this.#crypto;
37
34
  }
38
35
  get construction() {
39
36
  return this.#construction;
@@ -42,14 +39,11 @@ class CertificateAuthority {
42
39
  return asyncNew(CertificateAuthority, crypto, options);
43
40
  }
44
41
  constructor(crypto, options) {
45
- this.#certs = new CertificateManager(crypto);
42
+ this.#crypto = crypto;
46
43
  this.#construction = Construction(this, async () => {
47
44
  const certValues = options instanceof StorageContext ? await options.values() : options ?? {};
48
- this.#rootKeyPair = await this.#certs.crypto.createKeyPair();
49
- this.#rootKeyIdentifier = (await this.#certs.crypto.computeSha256(this.#rootKeyPair.publicKey)).slice(
50
- 0,
51
- 20
52
- );
45
+ this.#rootKeyPair = await this.#crypto.createKeyPair();
46
+ this.#rootKeyIdentifier = (await this.#crypto.computeSha256(this.#rootKeyPair.publicKey)).slice(0, 20);
53
47
  this.#rootCertBytes = await this.#generateRootCert();
54
48
  if ((typeof certValues.rootCertId === "number" || typeof certValues.rootCertId === "bigint") && (ArrayBuffer.isView(certValues.rootKeyPair) || typeof certValues.rootKeyPair === "object") && ArrayBuffer.isView(certValues.rootKeyIdentifier) && ArrayBuffer.isView(certValues.rootCertBytes) && (typeof certValues.nextCertificateId === "number" || typeof certValues.nextCertificateId === "bigint")) {
55
49
  this.#rootCertId = BigInt(certValues.rootCertId);
@@ -92,7 +86,7 @@ class CertificateAuthority {
92
86
  }
93
87
  async #generateRootCert() {
94
88
  const now = Time.get().now();
95
- const unsignedCertificate = {
89
+ const cert = new Rcac({
96
90
  serialNumber: Bytes.fromHex(toHex(this.#rootCertId)),
97
91
  signatureAlgorithm: 1,
98
92
  publicKeyAlgorithm: 1,
@@ -111,17 +105,14 @@ class CertificateAuthority {
111
105
  subjectKeyIdentifier: this.#initializedRootKeyIdentifier,
112
106
  authorityKeyIdentifier: this.#initializedRootKeyIdentifier
113
107
  }
114
- };
115
- const signature = await this.#certs.crypto.signEcdsa(
116
- this.#initializedRootKeyPair,
117
- this.#certs.rootCertToAsn1(unsignedCertificate)
118
- );
119
- return TlvRootCertificate.encode({ ...unsignedCertificate, signature });
108
+ });
109
+ await cert.sign(this.#crypto, this.#initializedRootKeyPair);
110
+ return cert.asSignedTlv();
120
111
  }
121
112
  async generateNoc(publicKey, fabricId, nodeId, caseAuthenticatedTags) {
122
113
  const now = Time.get().now();
123
114
  const certId = this.#nextCertificateId++;
124
- const unsignedCertificate = {
115
+ const cert = new Noc({
125
116
  serialNumber: Bytes.fromHex(toHex(certId)),
126
117
  signatureAlgorithm: 1,
127
118
  publicKeyAlgorithm: 1,
@@ -137,15 +128,12 @@ class CertificateAuthority {
137
128
  digitalSignature: true
138
129
  },
139
130
  extendedKeyUsage: [2, 1],
140
- subjectKeyIdentifier: (await this.#certs.crypto.computeSha256(publicKey)).slice(0, 20),
131
+ subjectKeyIdentifier: (await this.#crypto.computeSha256(publicKey)).slice(0, 20),
141
132
  authorityKeyIdentifier: this.#initializedRootKeyIdentifier
142
133
  }
143
- };
144
- const signature = await this.#certs.crypto.signEcdsa(
145
- this.#initializedRootKeyPair,
146
- this.#certs.nodeOperationalCertToAsn1(unsignedCertificate)
147
- );
148
- return TlvOperationalCertificate.encode({ ...unsignedCertificate, signature });
134
+ });
135
+ await cert.sign(this.#crypto, this.#initializedRootKeyPair);
136
+ return cert.asSignedTlv();
149
137
  }
150
138
  get #initializedRootKeyPair() {
151
139
  if (this.#rootKeyPair === void 0) {
@@ -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": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceCertification.d.ts","sourceRoot":"","sources":["../../../src/certificate/DeviceCertification.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAsC,UAAU,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C;;GAEG;AACH,qBAAa,mBAAmB;;IAQ5B,IAAI,YAAY,sCAEf;IAED,IAAI,WAAW,gCAEd;IAED,IAAI,uBAAuB,gCAE1B;IAED,IAAI,WAAW,gCAEd;gBAEW,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAwC3F,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;CA6BpD;AAED,yBAAiB,mBAAmB,CAAC;IACjC,UAAiB,aAAa;QAC1B,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;QACpC,WAAW,EAAE,UAAU,CAAC;QACxB,uBAAuB,EAAE,UAAU,CAAC;QACpC,WAAW,EAAE,UAAU,CAAC;KAC3B;IAED,KAAY,UAAU,GAAG,aAAa,GAAG,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;CAC3E"}
1
+ {"version":3,"file":"DeviceCertification.d.ts","sourceRoot":"","sources":["../../../src/certificate/DeviceCertification.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAsC,UAAU,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAG5C;;GAEG;AACH,qBAAa,mBAAmB;;IAQ5B,IAAI,YAAY,sCAEf;IAED,IAAI,WAAW,gCAEd;IAED,IAAI,uBAAuB,gCAE1B;IAED,IAAI,WAAW,gCAEd;gBAEW,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAoC3F,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;CA6BpD;AAED,yBAAiB,mBAAmB,CAAC;IACjC,UAAiB,aAAa;QAC1B,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;QACpC,WAAW,EAAE,UAAU,CAAC;QACxB,uBAAuB,EAAE,UAAU,CAAC;QACpC,WAAW,EAAE,UAAU,CAAC;KAC3B;IAED,KAAY,UAAU,GAAG,aAAa,GAAG,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;CAC3E"}
@@ -3,9 +3,9 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { CertificationDeclaration } from "#certificate/kinds/CertificationDeclaration.js";
6
7
  import { Construction, ImplementationError, InternalError, PrivateKey } from "#general";
7
8
  import { AttestationCertificateManager } from "./AttestationCertificateManager.js";
8
- import { CertificationDeclarationManager } from "./CertificationDeclarationManager.js";
9
9
  class DeviceCertification {
10
10
  #crypto;
11
11
  #privateKey;
@@ -43,11 +43,7 @@ class DeviceCertification {
43
43
  privateKey: PrivateKey(dacKeyPair.privateKey),
44
44
  certificate: dac,
45
45
  intermediateCertificate: await paa.getPAICert(),
46
- declaration: await CertificationDeclarationManager.generate(
47
- crypto,
48
- product.vendorId,
49
- product.productId
50
- )
46
+ declaration: await CertificationDeclaration.generate(crypto, product.vendorId, product.productId)
51
47
  };
52
48
  };
53
49
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/certificate/DeviceCertification.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAsB,qBAAqB,eAAe,kBAAkB;AAGrF,SAAS,qCAAqC;AAC9C,SAAS,uCAAuC;AAKzC,MAAM,oBAAoB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACS;AAAA,EAET,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK,mBAAmB,EAAE;AAAA,EACrC;AAAA,EAEA,IAAI,0BAA0B;AAC1B,WAAO,KAAK,mBAAmB,EAAE;AAAA,EACrC;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK,mBAAmB,EAAE;AAAA,EACrC;AAAA,EAEA,YAAY,QAAgB,QAAyC,SAA8B;AAC/F,SAAK,UAAU;AACf,QAAI;AACJ,QAAI,OAAO,WAAW,YAAY;AAC9B,uBAAiB;AAAA,IACrB,WAAW,QAAQ;AACf,uBAAiB,MAAM;AAAA,IAC3B,OAAO;AACH,uBAAiB,YAAY;AACzB,YAAI,YAAY,QAAW;AACvB,gBAAM,IAAI,oBAAoB,kEAAkE;AAAA,QACpG;AAEA,cAAM,MAAM,MAAM,8BAA8B,OAAO,QAAQ,QAAQ,QAAQ;AAC/E,cAAM,EAAE,SAAS,YAAY,IAAI,IAAI,MAAM,IAAI,UAAU,QAAQ,SAAS;AAE1E,eAAO;AAAA,UACH,YAAY,WAAW,WAAW,UAAU;AAAA,UAC5C,aAAa;AAAA,UACb,yBAAyB,MAAM,IAAI,WAAW;AAAA,UAC9C,aAAa,MAAM,gCAAgC;AAAA,YAC/C;AAAA,YACA,QAAQ;AAAA,YACR,QAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,SAAK,gBAAgB,aAAa,MAAM,YAAY;AAChD,YAAMA,UAAS,MAAM,eAAe;AAEpC,WAAK,cACDA,QAAO,sBAAsB,aAAa,WAAWA,QAAO,UAAU,IAAIA,QAAO;AACrF,WAAK,eAAeA,QAAO;AAC3B,WAAK,2BAA2BA,QAAO;AACvC,WAAK,eAAeA,QAAO;AAAA,IAC/B,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,KAAK,SAAsB,MAAkB;AAC/C,UAAM,EAAE,WAAW,IAAI,KAAK,mBAAmB;AAC/C,UAAM,YAAY,MAAM,KAAK,QAAQ,UAAU,YAAY,CAAC,MAAM,QAAQ,uBAAuB,CAAC;AAClG,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,qBAAqB;AACjB,SAAK,cAAc,OAAO;AAC1B,QACI,KAAK,iBAAiB,UACtB,KAAK,6BAA6B,UAClC,KAAK,iBAAiB,UACtB,KAAK,gBAAgB,QACvB;AACE,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,MACH,aAAa,KAAK;AAAA,MAClB,yBAAyB,KAAK;AAAA,MAC9B,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK;AAAA,IACrB;AAAA,EACJ;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gCAAgC;AACzC,SAAS,cAAsB,qBAAqB,eAAe,kBAAkB;AAGrF,SAAS,qCAAqC;AAKvC,MAAM,oBAAoB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACS;AAAA,EAET,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK,mBAAmB,EAAE;AAAA,EACrC;AAAA,EAEA,IAAI,0BAA0B;AAC1B,WAAO,KAAK,mBAAmB,EAAE;AAAA,EACrC;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK,mBAAmB,EAAE;AAAA,EACrC;AAAA,EAEA,YAAY,QAAgB,QAAyC,SAA8B;AAC/F,SAAK,UAAU;AACf,QAAI;AACJ,QAAI,OAAO,WAAW,YAAY;AAC9B,uBAAiB;AAAA,IACrB,WAAW,QAAQ;AACf,uBAAiB,MAAM;AAAA,IAC3B,OAAO;AACH,uBAAiB,YAAY;AACzB,YAAI,YAAY,QAAW;AACvB,gBAAM,IAAI,oBAAoB,kEAAkE;AAAA,QACpG;AAEA,cAAM,MAAM,MAAM,8BAA8B,OAAO,QAAQ,QAAQ,QAAQ;AAC/E,cAAM,EAAE,SAAS,YAAY,IAAI,IAAI,MAAM,IAAI,UAAU,QAAQ,SAAS;AAE1E,eAAO;AAAA,UACH,YAAY,WAAW,WAAW,UAAU;AAAA,UAC5C,aAAa;AAAA,UACb,yBAAyB,MAAM,IAAI,WAAW;AAAA,UAC9C,aAAa,MAAM,yBAAyB,SAAS,QAAQ,QAAQ,UAAU,QAAQ,SAAS;AAAA,QACpG;AAAA,MACJ;AAAA,IACJ;AAEA,SAAK,gBAAgB,aAAa,MAAM,YAAY;AAChD,YAAMA,UAAS,MAAM,eAAe;AAEpC,WAAK,cACDA,QAAO,sBAAsB,aAAa,WAAWA,QAAO,UAAU,IAAIA,QAAO;AACrF,WAAK,eAAeA,QAAO;AAC3B,WAAK,2BAA2BA,QAAO;AACvC,WAAK,eAAeA,QAAO;AAAA,IAC/B,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,KAAK,SAAsB,MAAkB;AAC/C,UAAM,EAAE,WAAW,IAAI,KAAK,mBAAmB;AAC/C,UAAM,YAAY,MAAM,KAAK,QAAQ,UAAU,YAAY,CAAC,MAAM,QAAQ,uBAAuB,CAAC;AAClG,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,qBAAqB;AACjB,SAAK,cAAc,OAAO;AAC1B,QACI,KAAK,iBAAiB,UACtB,KAAK,6BAA6B,UAClC,KAAK,iBAAiB,UACtB,KAAK,gBAAgB,QACvB;AACE,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,MACH,aAAa,KAAK;AAAA,MAClB,yBAAyB,KAAK;AAAA,MAC9B,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK;AAAA,IACrB;AAAA,EACJ;AACJ;",
5
5
  "names": ["config"]
6
6
  }
@@ -5,8 +5,13 @@
5
5
  */
6
6
  export * from "./AttestationCertificateManager.js";
7
7
  export * from "./CertificateAuthority.js";
8
- export * from "./CertificateManager.js";
9
- export * from "./CertificationDeclarationManager.js";
10
8
  export * from "./ChipPAAuthorities.js";
11
9
  export * from "./DeviceCertification.js";
10
+ export * from "./kinds/AttestationCertificates.js";
11
+ export * from "./kinds/CertificationDeclaration.js";
12
+ export { CertificateError } from "./kinds/common.js";
13
+ export * from "./kinds/Icac.js";
14
+ export * from "./kinds/Noc.js";
15
+ export * from "./kinds/Rcac.js";
16
+ export * from "./kinds/X509Base.js";
12
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/certificate/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/certificate/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
@@ -5,8 +5,16 @@
5
5
  */
6
6
  export * from "./AttestationCertificateManager.js";
7
7
  export * from "./CertificateAuthority.js";
8
- export * from "./CertificateManager.js";
9
- export * from "./CertificationDeclarationManager.js";
10
8
  export * from "./ChipPAAuthorities.js";
11
9
  export * from "./DeviceCertification.js";
10
+ export * from "./kinds/AttestationCertificates.js";
11
+ export * from "./kinds/CertificationDeclaration.js";
12
+ import { CertificateError } from "./kinds/common.js";
13
+ export * from "./kinds/Icac.js";
14
+ export * from "./kinds/Noc.js";
15
+ export * from "./kinds/Rcac.js";
16
+ export * from "./kinds/X509Base.js";
17
+ export {
18
+ CertificateError
19
+ };
12
20
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/certificate/index.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,wBAAwB;AACjC,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Crypto } from "#general";
7
+ import { AttestationCertificate } from "./definitions/attestation.js";
8
+ import { X509Certificate } from "./definitions/base.js";
9
+ import { X509Base } from "./X509Base.js";
10
+ /**
11
+ * Base class for Attestation Certificates (PAA, PAI, DAC).
12
+ */
13
+ export declare abstract class AttestationBaseCertificate<CT extends X509Certificate> extends X509Base<CT> {
14
+ /**
15
+ * Sign the certificate using the provided crypto and key.
16
+ * If the certificate is already signed, it throws a CertificateError.
17
+ */
18
+ sign(crypto: Crypto, key: JsonWebKey): Promise<void>;
19
+ /**
20
+ * Returns the signed certificate in ASN.1 DER format.
21
+ * If the certificate is not signed, it throws a CertificateError.
22
+ */
23
+ asSignedAsn1(): Uint8Array<ArrayBufferLike>;
24
+ }
25
+ /** PAA (Product Attestation Authority) Certificate. */
26
+ export declare class Paa extends AttestationBaseCertificate<AttestationCertificate.Paa> {
27
+ }
28
+ /** PAI (Product Attestation Intermediate) Certificate. */
29
+ export declare class Pai extends AttestationBaseCertificate<AttestationCertificate.Pai> {
30
+ }
31
+ /** DAC (Device Attestation Certificate) Certificate. */
32
+ export declare class Dac extends AttestationBaseCertificate<AttestationCertificate.Dac> {
33
+ }
34
+ //# sourceMappingURL=AttestationCertificates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttestationCertificates.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/AttestationCertificates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAgC,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,8BAAsB,0BAA0B,CAAC,EAAE,SAAS,eAAe,CAAE,SAAQ,QAAQ,CAAC,EAAE,CAAC;IAC7F;;;OAGG;IACY,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAInD;;;OAGG;IACH,YAAY,IAAI,UAAU,CAAC,eAAe,CAAC;CAU9C;AAED,uDAAuD;AACvD,qBAAa,GAAI,SAAQ,0BAA0B,CAAC,sBAAsB,CAAC,GAAG,CAAC;CAAG;AAElF,0DAA0D;AAC1D,qBAAa,GAAI,SAAQ,0BAA0B,CAAC,sBAAsB,CAAC,GAAG,CAAC;CAAG;AAElF,wDAAwD;AACxD,qBAAa,GAAI,SAAQ,0BAA0B,CAAC,sBAAsB,CAAC,GAAG,CAAC;CAAG"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DerBitString, DerCodec, X962 } from "#general";
7
+ import { assertCertificateDerSize } from "./common.js";
8
+ import { X509Base } from "./X509Base.js";
9
+ class AttestationBaseCertificate extends X509Base {
10
+ /**
11
+ * Sign the certificate using the provided crypto and key.
12
+ * If the certificate is already signed, it throws a CertificateError.
13
+ */
14
+ async sign(crypto, key) {
15
+ this.signature = await crypto.signEcdsa(key, this.asUnsignedAsn1(), "der");
16
+ }
17
+ /**
18
+ * Returns the signed certificate in ASN.1 DER format.
19
+ * If the certificate is not signed, it throws a CertificateError.
20
+ */
21
+ asSignedAsn1() {
22
+ const certificate = this.genericBuildAsn1Structure(this.cert);
23
+ const certBytes = DerCodec.encode({
24
+ certificate,
25
+ signAlgorithm: X962.EcdsaWithSHA256,
26
+ signature: DerBitString(this.signature)
27
+ });
28
+ assertCertificateDerSize(certBytes);
29
+ return certBytes;
30
+ }
31
+ }
32
+ class Paa extends AttestationBaseCertificate {
33
+ }
34
+ class Pai extends AttestationBaseCertificate {
35
+ }
36
+ class Dac extends AttestationBaseCertificate {
37
+ }
38
+ export {
39
+ AttestationBaseCertificate,
40
+ Dac,
41
+ Paa,
42
+ Pai
43
+ };
44
+ //# sourceMappingURL=AttestationCertificates.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/certificate/kinds/AttestationCertificates.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAiB,cAAc,UAAU,YAAY;AACrD,SAAS,gCAAgC;AAGzC,SAAS,gBAAgB;AAKlB,MAAe,mCAA+D,SAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9F,MAAe,KAAK,QAAgB,KAAiB;AACjD,SAAK,YAAY,MAAM,OAAO,UAAU,KAAK,KAAK,eAAe,GAAG,KAAK;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAA4C;AACxC,UAAM,cAAc,KAAK,0BAA0B,KAAK,IAAI;AAC5D,UAAM,YAAY,SAAS,OAAO;AAAA,MAC9B;AAAA,MACA,eAAe,KAAK;AAAA,MACpB,WAAW,aAAa,KAAK,SAAS;AAAA,IAC1C,CAAC;AACD,6BAAyB,SAAS;AAClC,WAAO;AAAA,EACX;AACJ;AAGO,MAAM,YAAY,2BAAuD;AAAC;AAG1E,MAAM,YAAY,2BAAuD;AAAC;AAG1E,MAAM,YAAY,2BAAuD;AAAC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Crypto } from "#general";
7
+ import { TypeFromBitmapSchema, VendorId } from "#types";
8
+ import { CertificationDeclaration as CertificationDeclarationDef } from "./definitions/certification-declaration.js";
9
+ /** A Matter Certification Declaration */
10
+ export declare class CertificationDeclaration {
11
+ #private;
12
+ /**
13
+ * Generator which is the main usage for the class from outside.
14
+ * It constructs the class with the relevant details and returns a signed ASN.1 DER version of the CD.
15
+ */
16
+ static generate(crypto: Crypto, vendorId: VendorId, productId: number, provisional?: boolean): Promise<Uint8Array<ArrayBufferLike>>;
17
+ constructor(content: TypeFromBitmapSchema<typeof CertificationDeclarationDef.TlvDc>, subjectKeyIdentifier: Uint8Array);
18
+ /**
19
+ * Returns the signed certificate in ASN.1 DER format.
20
+ */
21
+ asSignedAsn1(crypto: Crypto, privateKey: JsonWebKey): Promise<Uint8Array<ArrayBufferLike>>;
22
+ }
23
+ //# sourceMappingURL=CertificationDeclaration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CertificationDeclaration.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/CertificationDeclaration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA6B,MAAM,EAAiD,MAAM,UAAU,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAExD,OAAO,EAAE,wBAAwB,IAAI,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAwBrH,yCAAyC;AACzC,qBAAa,wBAAwB;;IAIjC;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,UAAQ;gBAoBtF,OAAO,EAAE,oBAAoB,CAAC,OAAO,2BAA2B,CAAC,KAAK,CAAC,EACvE,oBAAoB,EAAE,UAAU;IAMpC;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;CAmB5D"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes, ContextTaggedBytes, DerCodec, Pkcs7, PrivateKey, SHA256_CMS, X962 } from "#general";
7
+ import { assertCertificateDerSize } from "./common.js";
8
+ import { CertificationDeclaration as CertificationDeclarationDef } from "./definitions/certification-declaration.js";
9
+ const TestCMS_SignerPrivateKey = Bytes.fromHex("AEF3484116E9481EC57BE0472DF41BF499064E5024AD869ECA5E889802D48075");
10
+ const TestCMS_SignerSubjectKeyIdentifier = Bytes.fromHex("62FA823359ACFAA9963E1CFA140ADDF504F37160");
11
+ class CertificationDeclaration {
12
+ #eContent;
13
+ #subjectKeyIdentifier;
14
+ /**
15
+ * Generator which is the main usage for the class from outside.
16
+ * It constructs the class with the relevant details and returns a signed ASN.1 DER version of the CD.
17
+ */
18
+ static generate(crypto, vendorId, productId, provisional = false) {
19
+ const cd = new CertificationDeclaration(
20
+ {
21
+ formatVersion: 1,
22
+ vendorId,
23
+ produceIdArray: [productId],
24
+ deviceTypeId: 22,
25
+ certificateId: "CSA00000SWC00000-00",
26
+ securityLevel: 0,
27
+ securityInformation: 0,
28
+ versionNumber: 1,
29
+ certificationType: provisional ? 1 : 0
30
+ // 0 = Test, 1 = Provisional/In certification, 2 = official
31
+ },
32
+ TestCMS_SignerSubjectKeyIdentifier
33
+ );
34
+ return cd.asSignedAsn1(crypto, PrivateKey(TestCMS_SignerPrivateKey));
35
+ }
36
+ constructor(content, subjectKeyIdentifier) {
37
+ this.#eContent = CertificationDeclarationDef.TlvDc.encode(content);
38
+ this.#subjectKeyIdentifier = subjectKeyIdentifier;
39
+ }
40
+ /**
41
+ * Returns the signed certificate in ASN.1 DER format.
42
+ */
43
+ async asSignedAsn1(crypto, privateKey) {
44
+ const cert = {
45
+ version: 3,
46
+ digestAlgorithm: [SHA256_CMS],
47
+ encapContentInfo: Pkcs7.Data(this.#eContent),
48
+ signerInfo: [
49
+ {
50
+ version: 3,
51
+ subjectKeyIdentifier: ContextTaggedBytes(0, this.#subjectKeyIdentifier),
52
+ digestAlgorithm: SHA256_CMS,
53
+ signatureAlgorithm: X962.EcdsaWithSHA256,
54
+ signature: await crypto.signEcdsa(privateKey, this.#eContent, "der")
55
+ }
56
+ ]
57
+ };
58
+ const certBytes = DerCodec.encode(Pkcs7.SignedData(cert));
59
+ assertCertificateDerSize(certBytes);
60
+ return certBytes;
61
+ }
62
+ }
63
+ export {
64
+ CertificationDeclaration
65
+ };
66
+ //# sourceMappingURL=CertificationDeclaration.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/certificate/kinds/CertificationDeclaration.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,OAAO,oBAA4B,UAAU,OAAO,YAAY,YAAY,YAAY;AAEjG,SAAS,gCAAgC;AACzC,SAAS,4BAA4B,mCAAmC;AAcxE,MAAM,2BAA2B,MAAM,QAAQ,kEAAkE;AAQjH,MAAM,qCAAqC,MAAM,QAAQ,0CAA0C;AAG5F,MAAM,yBAAyB;AAAA,EAClC;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,SAAS,QAAgB,UAAoB,WAAmB,cAAc,OAAO;AACxF,UAAM,KAAK,IAAI;AAAA,MACX;AAAA,QACI,eAAe;AAAA,QACf;AAAA,QACA,gBAAgB,CAAC,SAAS;AAAA,QAC1B,cAAc;AAAA,QACd,eAAe;AAAA,QACf,eAAe;AAAA,QACf,qBAAqB;AAAA,QACrB,eAAe;AAAA,QACf,mBAAmB,cAAc,IAAI;AAAA;AAAA,MACzC;AAAA,MACA;AAAA,IACJ;AAEA,WAAO,GAAG,aAAa,QAAQ,WAAW,wBAAwB,CAAC;AAAA,EACvE;AAAA,EAEA,YACI,SACA,sBACF;AACE,SAAK,YAAY,4BAA4B,MAAM,OAAO,OAAO;AACjE,SAAK,wBAAwB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,QAAgB,YAAwB;AACvD,UAAM,OAAO;AAAA,MACT,SAAS;AAAA,MACT,iBAAiB,CAAC,UAAU;AAAA,MAC5B,kBAAkB,MAAM,KAAK,KAAK,SAAS;AAAA,MAC3C,YAAY;AAAA,QACR;AAAA,UACI,SAAS;AAAA,UACT,sBAAsB,mBAAmB,GAAG,KAAK,qBAAqB;AAAA,UACtE,iBAAiB;AAAA,UACjB,oBAAoB,KAAK;AAAA,UACzB,WAAW,MAAM,OAAO,UAAU,YAAY,KAAK,WAAW,KAAK;AAAA,QACvE;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,YAAY,SAAS,OAAO,MAAM,WAAW,IAAI,CAAC;AACxD,6BAAyB,SAAS;AAClC,WAAO;AAAA,EACX;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Crypto } from "#general";
7
+ import { OperationalCertificate } from "./definitions/operational.js";
8
+ import { OperationalBase } from "./OperationalBase.js";
9
+ import { Rcac } from "./Rcac.js";
10
+ /**
11
+ * Represents an Intermediate Certificate
12
+ */
13
+ export declare class Icac extends OperationalBase<OperationalCertificate.Icac> {
14
+ /** Construct the class from a Tlv version of the certificate */
15
+ static fromTlv(tlv: Uint8Array): Icac;
16
+ /** Validates all basic certificate fields on construction. */
17
+ protected validateFields(): void;
18
+ /**
19
+ * Encodes the certificate with the signature as Matter Tlv.
20
+ * If the certificate is not signed, it throws a CertificateError.
21
+ */
22
+ asSignedTlv(): Uint8Array<ArrayBufferLike>;
23
+ /**
24
+ * Verify requirements a Matter Intermediate CA certificate must fulfill.
25
+ * Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
26
+ */
27
+ verify(crypto: Crypto, root: Rcac): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=Icac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icac.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/Icac.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAS,MAAM,EAAyB,MAAM,UAAU,CAAC;AAIhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,qBAAa,IAAK,SAAQ,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAClE,gEAAgE;IAChE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAIrC,8DAA8D;IAC9D,SAAS,CAAC,cAAc;IAWxB;;;OAGG;IACH,WAAW;IAIX;;;OAGG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;CA4G1C"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes, Diagnostic, PublicKey } from "#general";
7
+ import { FabricId } from "#types";
8
+ import { CertificateError } from "./common.js";
9
+ import { ExtensionKeyUsageSchema } from "./definitions/base.js";
10
+ import { OperationalCertificate } from "./definitions/operational.js";
11
+ import { OperationalBase } from "./OperationalBase.js";
12
+ class Icac extends OperationalBase {
13
+ /** Construct the class from a Tlv version of the certificate */
14
+ static fromTlv(tlv) {
15
+ return new Icac(OperationalCertificate.TlvIcac.decode(tlv));
16
+ }
17
+ /** Validates all basic certificate fields on construction. */
18
+ validateFields() {
19
+ const {
20
+ extensions: {
21
+ basicConstraints: { isCa }
22
+ }
23
+ } = this.cert;
24
+ if (!isCa) {
25
+ throw new CertificateError("Intermediate certificate must be a CA.");
26
+ }
27
+ }
28
+ /**
29
+ * Encodes the certificate with the signature as Matter Tlv.
30
+ * If the certificate is not signed, it throws a CertificateError.
31
+ */
32
+ asSignedTlv() {
33
+ return OperationalCertificate.TlvIcac.encode({ ...this.cert, signature: this.signature });
34
+ }
35
+ /**
36
+ * Verify requirements a Matter Intermediate CA certificate must fulfill.
37
+ * Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
38
+ */
39
+ async verify(crypto, root) {
40
+ this.generalVerify();
41
+ const {
42
+ subject,
43
+ issuer: { rcacId },
44
+ extensions
45
+ } = this.cert;
46
+ const { fabricId, icacId } = subject;
47
+ const { basicConstraints, extendedKeyUsage, subjectKeyIdentifier, authorityKeyIdentifier } = extensions;
48
+ const { fabricId: rootFabricId } = root.cert.subject;
49
+ if ("nodeId" in subject) {
50
+ throw new CertificateError(`Ica certificate must not contain a nodeId.`);
51
+ }
52
+ if (fabricId !== void 0) {
53
+ if (Array.isArray(fabricId)) {
54
+ throw new CertificateError(`Invalid fabricId in NoC certificate: ${Diagnostic.json(fabricId)}`);
55
+ }
56
+ if (fabricId === FabricId(0)) {
57
+ throw new CertificateError(`Invalid fabricId in NoC certificate: ${Diagnostic.json(fabricId)}`);
58
+ }
59
+ }
60
+ if (icacId === void 0 || Array.isArray(icacId)) {
61
+ throw new CertificateError(`Invalid icacId in Ica certificate: ${Diagnostic.json(icacId)}`);
62
+ }
63
+ if ("rcacId" in subject) {
64
+ throw new CertificateError(`Ica certificate must not contain an rcacId.`);
65
+ }
66
+ if ("caseAuthenticatedTags" in subject) {
67
+ throw new CertificateError(`Ica certificate must not contain a caseAuthenticatedTags.`);
68
+ }
69
+ if (rootFabricId !== void 0 && fabricId !== void 0 && rootFabricId !== fabricId) {
70
+ throw new CertificateError(
71
+ `FabricId in Ica certificate does not match the fabricId in the parent certificate. ${Diagnostic.json(
72
+ rootFabricId
73
+ )} !== ${Diagnostic.json(fabricId)}`
74
+ );
75
+ }
76
+ if (root.cert.subject.rcacId !== rcacId) {
77
+ throw new CertificateError(
78
+ `RcacId in Ica certificate does not match the rcacId in the parent certificate. ${Diagnostic.json(
79
+ root.cert.subject.rcacId
80
+ )} !== ${Diagnostic.json(rcacId)}`
81
+ );
82
+ }
83
+ if (!basicConstraints.isCa) {
84
+ throw new CertificateError(`Ica certificate must have isCa set to true.`);
85
+ }
86
+ const keyUsage = ExtensionKeyUsageSchema.encode(extensions.keyUsage);
87
+ if (keyUsage !== 96 && keyUsage !== 97) {
88
+ throw new CertificateError(
89
+ `Ica certificate keyUsage must have keyCertSign and CRLSign and optionally digitalSignature set.`
90
+ );
91
+ }
92
+ if (extendedKeyUsage !== void 0) {
93
+ throw new CertificateError(`Ica certificate must not have extendedKeyUsage set.`);
94
+ }
95
+ if (subjectKeyIdentifier === void 0) {
96
+ throw new CertificateError(`Ica certificate must have subjectKeyIdentifier set.`);
97
+ }
98
+ if (subjectKeyIdentifier.length !== 20) {
99
+ throw new CertificateError(`Ica certificate subjectKeyIdentifier must be 160 bit.`);
100
+ }
101
+ if (authorityKeyIdentifier === void 0) {
102
+ throw new CertificateError(`Ica certificate must have authorityKeyIdentifier set.`);
103
+ }
104
+ if (authorityKeyIdentifier.length !== 20) {
105
+ throw new CertificateError(`Ica certificate authorityKeyIdentifier must be 160 bit.`);
106
+ }
107
+ if (!Bytes.areEqual(authorityKeyIdentifier, root.cert.extensions.subjectKeyIdentifier)) {
108
+ throw new CertificateError(
109
+ `Ica certificate authorityKeyIdentifier must be equal to root cert subjectKeyIdentifier.`
110
+ );
111
+ }
112
+ await crypto.verifyEcdsa(PublicKey(root.cert.ellipticCurvePublicKey), this.asUnsignedAsn1(), this.signature);
113
+ }
114
+ }
115
+ export {
116
+ Icac
117
+ };
118
+ //# sourceMappingURL=Icac.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/certificate/kinds/Icac.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Crypto } from "#general";
7
+ import { OperationalCertificate } from "./definitions/operational.js";
8
+ import { Icac } from "./Icac.js";
9
+ import { OperationalBase } from "./OperationalBase.js";
10
+ import { Rcac } from "./Rcac.js";
11
+ export declare class Noc extends OperationalBase<OperationalCertificate.Noc> {
12
+ /** Construct the class from a Tlv version of the certificate */
13
+ static fromTlv(tlv: Uint8Array): Noc;
14
+ /** Validates all basic certificate fields on construction. */
15
+ protected validateFields(): void;
16
+ /**
17
+ * Encodes the certificate with the signature as Matter Tlv.
18
+ * If the certificate is not signed, it throws a CertificateError.
19
+ */
20
+ asSignedTlv(): Uint8Array<ArrayBufferLike>;
21
+ /**
22
+ * Verify requirements a Matter Node Operational certificate must fulfill.
23
+ * Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
24
+ */
25
+ verify(crypto: Crypto, root: Rcac, ica?: Icac): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=Noc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Noc.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/Noc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAS,MAAM,EAAyB,MAAM,UAAU,CAAC;AAGhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,qBAAa,GAAI,SAAQ,eAAe,CAAC,sBAAsB,CAAC,GAAG,CAAC;IAChE,gEAAgE;IAChE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU;IAI9B,8DAA8D;IAC9D,SAAS,CAAC,cAAc;IAexB;;;OAGG;IACH,WAAW;IAIX;;;OAGG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI;CAmHtD"}