@matter/protocol 0.16.0-alpha.0-20251104-8c3166ea3 → 0.16.0-alpha.0-20251107-6bcb5baf4

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 (158) hide show
  1. package/dist/cjs/action/client/ClientInteraction.d.ts +1 -0
  2. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  3. package/dist/cjs/action/client/ClientInteraction.js +3 -0
  4. package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
  5. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -4
  6. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  7. package/dist/cjs/advertisement/PairingHintBitmap.d.ts +2 -2
  8. package/dist/cjs/advertisement/PairingHintBitmap.js +1 -1
  9. package/dist/cjs/advertisement/PairingHintBitmap.js.map +1 -1
  10. package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts.map +1 -1
  11. package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.js +22 -4
  12. package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.js.map +1 -1
  13. package/dist/cjs/certificate/index.d.ts +1 -0
  14. package/dist/cjs/certificate/index.d.ts.map +1 -1
  15. package/dist/cjs/certificate/index.js +1 -0
  16. package/dist/cjs/certificate/index.js.map +1 -1
  17. package/dist/cjs/certificate/kinds/Icac.d.ts +2 -0
  18. package/dist/cjs/certificate/kinds/Icac.d.ts.map +1 -1
  19. package/dist/cjs/certificate/kinds/Icac.js +9 -0
  20. package/dist/cjs/certificate/kinds/Icac.js.map +1 -1
  21. package/dist/cjs/certificate/kinds/Noc.d.ts +2 -0
  22. package/dist/cjs/certificate/kinds/Noc.d.ts.map +1 -1
  23. package/dist/cjs/certificate/kinds/Noc.js +9 -0
  24. package/dist/cjs/certificate/kinds/Noc.js.map +1 -1
  25. package/dist/cjs/certificate/kinds/OperationalBase.d.ts +6 -1
  26. package/dist/cjs/certificate/kinds/OperationalBase.d.ts.map +1 -1
  27. package/dist/cjs/certificate/kinds/OperationalBase.js +14 -0
  28. package/dist/cjs/certificate/kinds/OperationalBase.js.map +1 -1
  29. package/dist/cjs/certificate/kinds/Rcac.d.ts +2 -0
  30. package/dist/cjs/certificate/kinds/Rcac.d.ts.map +1 -1
  31. package/dist/cjs/certificate/kinds/Rcac.js +9 -0
  32. package/dist/cjs/certificate/kinds/Rcac.js.map +1 -1
  33. package/dist/cjs/certificate/kinds/Vvsc.d.ts +29 -0
  34. package/dist/cjs/certificate/kinds/Vvsc.d.ts.map +1 -0
  35. package/dist/cjs/certificate/kinds/Vvsc.js +79 -0
  36. package/dist/cjs/certificate/kinds/Vvsc.js.map +6 -0
  37. package/dist/cjs/certificate/kinds/X509Base.d.ts +10 -3
  38. package/dist/cjs/certificate/kinds/X509Base.d.ts.map +1 -1
  39. package/dist/cjs/certificate/kinds/X509Base.js +304 -13
  40. package/dist/cjs/certificate/kinds/X509Base.js.map +2 -2
  41. package/dist/cjs/certificate/kinds/definitions/asn.d.ts +15 -0
  42. package/dist/cjs/certificate/kinds/definitions/asn.d.ts.map +1 -1
  43. package/dist/cjs/certificate/kinds/definitions/asn.js +33 -21
  44. package/dist/cjs/certificate/kinds/definitions/asn.js.map +2 -2
  45. package/dist/cjs/certificate/kinds/definitions/operational.d.ts +121 -12
  46. package/dist/cjs/certificate/kinds/definitions/operational.d.ts.map +1 -1
  47. package/dist/cjs/certificate/kinds/definitions/operational.js +8 -2
  48. package/dist/cjs/certificate/kinds/definitions/operational.js.map +1 -1
  49. package/dist/cjs/certificate/kinds/index.d.ts +1 -0
  50. package/dist/cjs/certificate/kinds/index.d.ts.map +1 -1
  51. package/dist/cjs/certificate/kinds/index.js +1 -0
  52. package/dist/cjs/certificate/kinds/index.js.map +1 -1
  53. package/dist/cjs/fabric/Fabric.d.ts +6 -1
  54. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  55. package/dist/cjs/fabric/Fabric.js +53 -2
  56. package/dist/cjs/fabric/Fabric.js.map +1 -1
  57. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  58. package/dist/cjs/fabric/FabricManager.js +24 -9
  59. package/dist/cjs/fabric/FabricManager.js.map +1 -1
  60. package/dist/cjs/mdns/MdnsConsts.d.ts +1 -1
  61. package/dist/cjs/mdns/MdnsConsts.d.ts.map +1 -1
  62. package/dist/cjs/mdns/MdnsConsts.js +1 -1
  63. package/dist/cjs/peer/PhysicalDeviceProperties.d.ts +11 -7
  64. package/dist/cjs/peer/PhysicalDeviceProperties.d.ts.map +1 -1
  65. package/dist/cjs/peer/PhysicalDeviceProperties.js +34 -25
  66. package/dist/cjs/peer/PhysicalDeviceProperties.js.map +1 -1
  67. package/dist/cjs/protocol/DeviceAdvertiser.d.ts.map +1 -1
  68. package/dist/cjs/protocol/DeviceAdvertiser.js +17 -0
  69. package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
  70. package/dist/esm/action/client/ClientInteraction.d.ts +1 -0
  71. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  72. package/dist/esm/action/client/ClientInteraction.js +3 -0
  73. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  74. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -4
  75. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  76. package/dist/esm/advertisement/PairingHintBitmap.d.ts +2 -2
  77. package/dist/esm/advertisement/PairingHintBitmap.js +1 -1
  78. package/dist/esm/advertisement/PairingHintBitmap.js.map +1 -1
  79. package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts.map +1 -1
  80. package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.js +22 -4
  81. package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.js.map +1 -1
  82. package/dist/esm/certificate/index.d.ts +1 -0
  83. package/dist/esm/certificate/index.d.ts.map +1 -1
  84. package/dist/esm/certificate/index.js +1 -0
  85. package/dist/esm/certificate/index.js.map +1 -1
  86. package/dist/esm/certificate/kinds/Icac.d.ts +2 -0
  87. package/dist/esm/certificate/kinds/Icac.d.ts.map +1 -1
  88. package/dist/esm/certificate/kinds/Icac.js +9 -0
  89. package/dist/esm/certificate/kinds/Icac.js.map +1 -1
  90. package/dist/esm/certificate/kinds/Noc.d.ts +2 -0
  91. package/dist/esm/certificate/kinds/Noc.d.ts.map +1 -1
  92. package/dist/esm/certificate/kinds/Noc.js +9 -0
  93. package/dist/esm/certificate/kinds/Noc.js.map +1 -1
  94. package/dist/esm/certificate/kinds/OperationalBase.d.ts +6 -1
  95. package/dist/esm/certificate/kinds/OperationalBase.d.ts.map +1 -1
  96. package/dist/esm/certificate/kinds/OperationalBase.js +16 -2
  97. package/dist/esm/certificate/kinds/OperationalBase.js.map +1 -1
  98. package/dist/esm/certificate/kinds/Rcac.d.ts +2 -0
  99. package/dist/esm/certificate/kinds/Rcac.d.ts.map +1 -1
  100. package/dist/esm/certificate/kinds/Rcac.js +9 -0
  101. package/dist/esm/certificate/kinds/Rcac.js.map +1 -1
  102. package/dist/esm/certificate/kinds/Vvsc.d.ts +29 -0
  103. package/dist/esm/certificate/kinds/Vvsc.d.ts.map +1 -0
  104. package/dist/esm/certificate/kinds/Vvsc.js +59 -0
  105. package/dist/esm/certificate/kinds/Vvsc.js.map +6 -0
  106. package/dist/esm/certificate/kinds/X509Base.d.ts +10 -3
  107. package/dist/esm/certificate/kinds/X509Base.d.ts.map +1 -1
  108. package/dist/esm/certificate/kinds/X509Base.js +308 -14
  109. package/dist/esm/certificate/kinds/X509Base.js.map +2 -2
  110. package/dist/esm/certificate/kinds/definitions/asn.d.ts +15 -0
  111. package/dist/esm/certificate/kinds/definitions/asn.d.ts.map +1 -1
  112. package/dist/esm/certificate/kinds/definitions/asn.js +33 -21
  113. package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
  114. package/dist/esm/certificate/kinds/definitions/operational.d.ts +121 -12
  115. package/dist/esm/certificate/kinds/definitions/operational.d.ts.map +1 -1
  116. package/dist/esm/certificate/kinds/definitions/operational.js +8 -2
  117. package/dist/esm/certificate/kinds/definitions/operational.js.map +1 -1
  118. package/dist/esm/certificate/kinds/index.d.ts +1 -0
  119. package/dist/esm/certificate/kinds/index.d.ts.map +1 -1
  120. package/dist/esm/certificate/kinds/index.js +1 -0
  121. package/dist/esm/certificate/kinds/index.js.map +1 -1
  122. package/dist/esm/fabric/Fabric.d.ts +6 -1
  123. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  124. package/dist/esm/fabric/Fabric.js +54 -3
  125. package/dist/esm/fabric/Fabric.js.map +1 -1
  126. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  127. package/dist/esm/fabric/FabricManager.js +25 -9
  128. package/dist/esm/fabric/FabricManager.js.map +1 -1
  129. package/dist/esm/mdns/MdnsConsts.d.ts +1 -1
  130. package/dist/esm/mdns/MdnsConsts.d.ts.map +1 -1
  131. package/dist/esm/mdns/MdnsConsts.js +1 -1
  132. package/dist/esm/peer/PhysicalDeviceProperties.d.ts +11 -7
  133. package/dist/esm/peer/PhysicalDeviceProperties.d.ts.map +1 -1
  134. package/dist/esm/peer/PhysicalDeviceProperties.js +35 -26
  135. package/dist/esm/peer/PhysicalDeviceProperties.js.map +1 -1
  136. package/dist/esm/protocol/DeviceAdvertiser.d.ts.map +1 -1
  137. package/dist/esm/protocol/DeviceAdvertiser.js +17 -0
  138. package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
  139. package/package.json +6 -6
  140. package/src/action/client/ClientInteraction.ts +5 -1
  141. package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
  142. package/src/advertisement/PairingHintBitmap.ts +1 -1
  143. package/src/advertisement/mdns/CommissionableMdnsAdvertisement.ts +23 -6
  144. package/src/certificate/index.ts +1 -0
  145. package/src/certificate/kinds/Icac.ts +12 -0
  146. package/src/certificate/kinds/Noc.ts +12 -0
  147. package/src/certificate/kinds/OperationalBase.ts +18 -3
  148. package/src/certificate/kinds/Rcac.ts +12 -0
  149. package/src/certificate/kinds/Vvsc.ts +72 -0
  150. package/src/certificate/kinds/X509Base.ts +426 -7
  151. package/src/certificate/kinds/definitions/asn.ts +50 -24
  152. package/src/certificate/kinds/definitions/operational.ts +10 -2
  153. package/src/certificate/kinds/index.ts +1 -0
  154. package/src/fabric/Fabric.ts +66 -3
  155. package/src/fabric/FabricManager.ts +32 -9
  156. package/src/mdns/MdnsConsts.ts +1 -1
  157. package/src/peer/PhysicalDeviceProperties.ts +52 -35
  158. package/src/protocol/DeviceAdvertiser.ts +30 -0
@@ -8,11 +8,17 @@ import { CaseAuthenticatedTag, FabricId, NodeId } from "#types";
8
8
  import { CertificateError } from "./common.js";
9
9
  import { OperationalCertificate } from "./definitions/operational.js";
10
10
  import { OperationalBase } from "./OperationalBase.js";
11
+ import { X509Base } from "./X509Base.js";
11
12
  class Noc extends OperationalBase {
12
13
  /** Construct the class from a Tlv version of the certificate */
13
14
  static fromTlv(tlv) {
14
15
  return new Noc(OperationalCertificate.TlvNoc.decode(tlv));
15
16
  }
17
+ /** Construct the class from an ASN.1/DER encoded certificate */
18
+ static fromAsn1(asn1) {
19
+ const cert = X509Base.parseAsn1Certificate(asn1);
20
+ return new Noc(cert);
21
+ }
16
22
  /** Validates all basic certificate fields on construction. */
17
23
  validateFields() {
18
24
  const {
@@ -70,6 +76,9 @@ class Noc extends OperationalBase {
70
76
  if ("rcacId" in subject) {
71
77
  throw new CertificateError(`Noc certificate must not contain an rcacId.`);
72
78
  }
79
+ if ("vvsId" in subject) {
80
+ throw new CertificateError(`Noc certificate must not contain a vvsId.`);
81
+ }
73
82
  if (caseAuthenticatedTags !== void 0) {
74
83
  CaseAuthenticatedTag.validateNocTagList(caseAuthenticatedTags);
75
84
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/certificate/kinds/Noc.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -15,7 +15,12 @@ export declare abstract class OperationalBase<CT extends X509Certificate> extend
15
15
  /** Validates all basic certificate fields on construction. */
16
16
  protected abstract validateFields(): void;
17
17
  /** Encodes the signed certificate into the Matter TLV format. */
18
- abstract asSignedTlv(signature: Bytes): Bytes;
18
+ abstract asSignedTlv(): Bytes;
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(): AllowSharedBufferSource;
19
24
  /**
20
25
  * Verifies general requirements a Matter certificate fields must fulfill.
21
26
  * Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
@@ -1 +1 @@
1
- {"version":3,"file":"OperationalBase.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/OperationalBase.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAgB,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAoB,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD;;GAEG;AACH,8BAAsB,eAAe,CAAC,EAAE,SAAS,eAAe,CAAE,SAAQ,QAAQ,CAAC,EAAE,CAAC;gBACtE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IAKnC,8DAA8D;IAC9D,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI;IAEzC,iEAAiE;IACjE,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK;IAE7C;;;OAGG;IACH,aAAa;CAuChB"}
1
+ {"version":3,"file":"OperationalBase.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/OperationalBase.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAA8C,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAA8C,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD;;GAEG;AACH,8BAAsB,eAAe,CAAC,EAAE,SAAS,eAAe,CAAE,SAAQ,QAAQ,CAAC,EAAE,CAAC;gBACtE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IAKnC,8DAA8D;IAC9D,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI;IAEzC,iEAAiE;IACjE,QAAQ,CAAC,WAAW,IAAI,KAAK;IAE7B;;;OAGG;IACH,YAAY;IAWZ;;;OAGG;IACH,aAAa;CAuChB"}
@@ -3,15 +3,29 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Logger, Time } from "#general";
6
+ import { DerBitString, DerCodec, Logger, Time, X962 } from "#general";
7
7
  import { X509Base } from "./X509Base.js";
8
- import { CertificateError } from "./common.js";
8
+ import { assertCertificateDerSize, CertificateError } from "./common.js";
9
9
  const logger = Logger.get("OperationalBaseCertificate");
10
10
  class OperationalBase extends X509Base {
11
11
  constructor(cert) {
12
12
  super(cert);
13
13
  this.validateFields();
14
14
  }
15
+ /**
16
+ * Returns the signed certificate in ASN.1 DER format.
17
+ * If the certificate is not signed, it throws a CertificateError.
18
+ */
19
+ asSignedAsn1() {
20
+ const certificate = this.genericBuildAsn1Structure(this.cert);
21
+ const certBytes = DerCodec.encode({
22
+ certificate,
23
+ signAlgorithm: X962.EcdsaWithSHA256,
24
+ signature: DerBitString(this.signature)
25
+ });
26
+ assertCertificateDerSize(certBytes);
27
+ return certBytes;
28
+ }
15
29
  /**
16
30
  * Verifies general requirements a Matter certificate fields must fulfill.
17
31
  * Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/certificate/kinds/OperationalBase.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgB,QAAQ,YAAY;AACpC,SAAS,gBAAgB;AACzB,SAAS,wBAAkC;AAG3C,MAAM,SAAS,OAAO,IAAI,4BAA4B;AAK/C,MAAe,wBAAoD,SAAa;AAAA,EACnF,YAAY,MAAyB;AACjC,UAAM,IAAI;AACV,SAAK,eAAe;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,gBAAgB;AACZ,UAAM,OAAO,KAAK;AAClB,QAAI,KAAK,aAAa,aAAa;AAC/B,YAAM,IAAI;AAAA,QACN,8EAA8E,KAAK,aAAa,UAAU;AAAA,MAC9G;AAEJ,QAAI,KAAK,uBAAuB,GAAG;AAE/B,YAAM,IAAI,iBAAiB,oCAAoC,KAAK,kBAAkB,EAAE;AAAA,IAC5F;AAEA,QAAI,KAAK,uBAAuB,GAAG;AAE/B,YAAM,IAAI,iBAAiB,qCAAqC,KAAK,kBAAkB,EAAE;AAAA,IAC7F;AAEA,QAAI,KAAK,4BAA4B,GAAG;AAEpC,YAAM,IAAI,iBAAiB,0CAA0C,KAAK,uBAAuB,EAAE;AAAA,IACvG;AAGA,QAAI,OAAO,KAAK,KAAK,OAAO,EAAE,SAAS,GAAG;AACtC,YAAM,IAAI,iBAAiB,wDAAwD;AAAA,IACvF;AACA,QAAI,OAAO,KAAK,KAAK,MAAM,EAAE,SAAS,GAAG;AACrC,YAAM,IAAI,iBAAiB,uDAAuD;AAAA,IACtF;AAIA,QAAI,KAAK,YAAY,MAAO,KAAK,OAAO;AACpC,aAAO,KAAK,gDAAgD,KAAK,YAAY,GAAI,OAAO,KAAK,KAAK,EAAE;AAAA,IAIxG;AAAA,EACJ;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgB,cAAc,UAAU,QAAQ,MAAM,YAAY;AAClE,SAAS,gBAAgB;AACzB,SAAS,0BAA0B,wBAAkC;AAGrE,MAAM,SAAS,OAAO,IAAI,4BAA4B;AAK/C,MAAe,wBAAoD,SAAa;AAAA,EACnF,YAAY,MAAyB;AACjC,UAAM,IAAI;AACV,SAAK,eAAe;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,eAAe;AACX,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;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB;AACZ,UAAM,OAAO,KAAK;AAClB,QAAI,KAAK,aAAa,aAAa;AAC/B,YAAM,IAAI;AAAA,QACN,8EAA8E,KAAK,aAAa,UAAU;AAAA,MAC9G;AAEJ,QAAI,KAAK,uBAAuB,GAAG;AAE/B,YAAM,IAAI,iBAAiB,oCAAoC,KAAK,kBAAkB,EAAE;AAAA,IAC5F;AAEA,QAAI,KAAK,uBAAuB,GAAG;AAE/B,YAAM,IAAI,iBAAiB,qCAAqC,KAAK,kBAAkB,EAAE;AAAA,IAC7F;AAEA,QAAI,KAAK,4BAA4B,GAAG;AAEpC,YAAM,IAAI,iBAAiB,0CAA0C,KAAK,uBAAuB,EAAE;AAAA,IACvG;AAGA,QAAI,OAAO,KAAK,KAAK,OAAO,EAAE,SAAS,GAAG;AACtC,YAAM,IAAI,iBAAiB,wDAAwD;AAAA,IACvF;AACA,QAAI,OAAO,KAAK,KAAK,MAAM,EAAE,SAAS,GAAG;AACrC,YAAM,IAAI,iBAAiB,uDAAuD;AAAA,IACtF;AAIA,QAAI,KAAK,YAAY,MAAO,KAAK,OAAO;AACpC,aAAO,KAAK,gDAAgD,KAAK,YAAY,GAAI,OAAO,KAAK,KAAK,EAAE;AAAA,IAIxG;AAAA,EACJ;AACJ;",
5
5
  "names": []
6
6
  }
@@ -9,6 +9,8 @@ import { OperationalBase } from "./OperationalBase.js";
9
9
  export declare class Rcac extends OperationalBase<OperationalCertificate.Rcac> {
10
10
  /** Construct the class from a Tlv version of the certificate */
11
11
  static fromTlv(tlv: Bytes): Rcac;
12
+ /** Construct the class from an ASN.1/DER encoded certificate */
13
+ static fromAsn1(asn1: Bytes): Rcac;
12
14
  /** Validates all basic certificate fields on construction. */
13
15
  protected validateFields(): void;
14
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Rcac.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/Rcac.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAyB,MAAM,UAAU,CAAC;AAIhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,IAAK,SAAQ,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAClE,gEAAgE;IAChE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAIhC,8DAA8D;IAC9D,SAAS,CAAC,cAAc;IAWxB;;;OAGG;IACH,WAAW;IAIX;;;OAGG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM;CAkF9B"}
1
+ {"version":3,"file":"Rcac.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/Rcac.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAyB,MAAM,UAAU,CAAC;AAIhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,IAAK,SAAQ,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAClE,gEAAgE;IAChE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAIhC,gEAAgE;IAChE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAKlC,8DAA8D;IAC9D,SAAS,CAAC,cAAc;IAWxB;;;OAGG;IACH,WAAW;IAIX;;;OAGG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM;CAuF9B"}
@@ -9,11 +9,17 @@ import { CertificateError } from "./common.js";
9
9
  import { ExtensionKeyUsageSchema } from "./definitions/base.js";
10
10
  import { OperationalCertificate } from "./definitions/operational.js";
11
11
  import { OperationalBase } from "./OperationalBase.js";
12
+ import { X509Base } from "./X509Base.js";
12
13
  class Rcac extends OperationalBase {
13
14
  /** Construct the class from a Tlv version of the certificate */
14
15
  static fromTlv(tlv) {
15
16
  return new Rcac(OperationalCertificate.TlvRcac.decode(tlv));
16
17
  }
18
+ /** Construct the class from an ASN.1/DER encoded certificate */
19
+ static fromAsn1(asn1) {
20
+ const cert = X509Base.parseAsn1Certificate(asn1);
21
+ return new Rcac(cert);
22
+ }
17
23
  /** Validates all basic certificate fields on construction. */
18
24
  validateFields() {
19
25
  const {
@@ -61,6 +67,9 @@ class Rcac extends OperationalBase {
61
67
  if ("caseAuthenticatedTags" in subject) {
62
68
  throw new CertificateError(`Root certificate must not contain a caseAuthenticatedTags.`);
63
69
  }
70
+ if ("vvsId" in subject) {
71
+ throw new CertificateError(`Root certificate must not contain a vvsId.`);
72
+ }
64
73
  if (basicConstraints.isCa !== true) {
65
74
  throw new CertificateError(`Root certificate must have isCa set to true.`);
66
75
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/certificate/kinds/Rcac.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAe,YAAY,iBAAiB;AACrD,SAAS,gBAAgB;AACzB,SAAS,wBAAwB;AACjC,SAAS,+BAA+B;AACxC,SAAS,8BAA8B;AACvC,SAAS,uBAAuB;AAEzB,MAAM,aAAa,gBAA6C;AAAA;AAAA,EAEnE,OAAO,QAAQ,KAAkB;AAC7B,WAAO,IAAI,KAAK,uBAAuB,QAAQ,OAAO,GAAG,CAAC;AAAA,EAC9D;AAAA;AAAA,EAGU,iBAAiB;AACvB,UAAM;AAAA,MACF,YAAY;AAAA,QACR,kBAAkB,EAAE,KAAK;AAAA,MAC7B;AAAA,IACJ,IAAI,KAAK;AACT,QAAI,CAAC,MAAM;AACP,YAAM,IAAI,iBAAiB,gCAAgC;AAAA,IAC/D;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc;AACV,WAAO,uBAAuB,QAAQ,OAAO,EAAE,GAAG,KAAK,MAAM,WAAW,KAAK,UAAU,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,QAAgB;AACzB,SAAK,cAAc;AAEnB,UAAM,EAAE,SAAS,WAAW,IAAI,KAAK;AACrC,UAAM,EAAE,UAAU,OAAO,IAAI;AAC7B,UAAM,EAAE,kBAAkB,sBAAsB,uBAAuB,IAAI;AAG3E,QAAI,YAAY,SAAS;AACrB,YAAM,IAAI,iBAAiB,6CAA6C;AAAA,IAC5E;AAGA,QAAI,aAAa,QAAW;AACxB,UAAI,MAAM,QAAQ,QAAQ,GAAG;AACzB,cAAM,IAAI,iBAAiB,wCAAwC,WAAW,KAAK,QAAQ,CAAC,EAAE;AAAA,MAClG;AAEA,UAAI,aAAa,SAAS,CAAC,GAAG;AAC1B,cAAM,IAAI,iBAAiB,wCAAwC,WAAW,KAAK,QAAQ,CAAC,EAAE;AAAA,MAClG;AAAA,IACJ;AAGA,QAAI,YAAY,SAAS;AACrB,YAAM,IAAI,iBAAiB,8CAA8C;AAAA,IAC7E;AAGA,QAAI,WAAW,UAAa,MAAM,QAAQ,MAAM,GAAG;AAC/C,YAAM,IAAI,iBAAiB,uCAAuC,WAAW,KAAK,MAAM,CAAC,EAAE;AAAA,IAC/F;AAGA,QAAI,2BAA2B,SAAS;AACpC,YAAM,IAAI,iBAAiB,4DAA4D;AAAA,IAC3F;AAGA,QAAI,iBAAiB,SAAS,MAAM;AAChC,YAAM,IAAI,iBAAiB,8CAA8C;AAAA,IAC7E;AAIA,UAAM,WAAW,wBAAwB,OAAO,WAAW,QAAQ;AACnE,QAAI,aAAa,MAAU,aAAa,IAAQ;AAC5C,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AAGA,QAAI,WAAW,qBAAqB,QAAW;AAC3C,YAAM,IAAI,iBAAiB,sDAAsD;AAAA,IACrF;AAGA,QAAI,yBAAyB,QAAW;AACpC,YAAM,IAAI,iBAAiB,sDAAsD;AAAA,IACrF;AACA,QAAI,qBAAqB,eAAe,IAAI;AACxC,YAAM,IAAI,iBAAiB,wDAAwD;AAAA,IACvF;AAGA,QAAI,2BAA2B,QAAW;AACtC,YAAM,IAAI,iBAAiB,wDAAwD;AAAA,IACvF;AACA,QAAI,uBAAuB,eAAe,IAAI;AAC1C,YAAM,IAAI,iBAAiB,0DAA0D;AAAA,IACzF;AAGA,QAAI,CAAC,MAAM,SAAS,wBAAwB,oBAAoB,GAAG;AAC/D,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,OAAO,YAAY,UAAU,KAAK,KAAK,sBAAsB,GAAG,KAAK,eAAe,GAAG,KAAK,SAAS;AAAA,EAC/G;AACJ;",
4
+ "mappings": "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",
5
5
  "names": []
6
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 { Bytes, Crypto } from "#general";
7
+ import { OperationalCertificate } from "./definitions/operational.js";
8
+ import { OperationalBase } from "./OperationalBase.js";
9
+ /**
10
+ * Represents an Vendor Verification Signer Certificate
11
+ */
12
+ export declare class Vvsc extends OperationalBase<OperationalCertificate.Vvsc> {
13
+ /** Construct the class from a Tlv version of the certificate */
14
+ static fromTlv(tlv: Bytes): Vvsc;
15
+ /** Validates all basic certificate fields on construction. */
16
+ protected validateFields(): void;
17
+ /**
18
+ * Encodes the certificate with the signature as Matter Tlv.
19
+ * If the certificate is not signed, it throws a CertificateError.
20
+ */
21
+ asSignedTlv(): AllowSharedBufferSource;
22
+ /**
23
+ * Verify requirements a Matter Intermediate CA certificate must fulfill.
24
+ * Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
25
+ * // TODO ADD Verification once we know more about the chain
26
+ */
27
+ verify(_crypto: Crypto): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=Vvsc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Vvsc.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/Vvsc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAc,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,qBAAa,IAAK,SAAQ,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAClE,gEAAgE;IAChE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAIhC,8DAA8D;IAC9D,SAAS,CAAC,cAAc;IAWxB;;;OAGG;IACH,WAAW;IAIX;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM;CA0B/B"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Diagnostic } from "#general";
7
+ import { CertificateError } from "./common.js";
8
+ import { OperationalCertificate } from "./definitions/operational.js";
9
+ import { OperationalBase } from "./OperationalBase.js";
10
+ class Vvsc extends OperationalBase {
11
+ /** Construct the class from a Tlv version of the certificate */
12
+ static fromTlv(tlv) {
13
+ return new Vvsc(OperationalCertificate.TlvVvsc.decode(tlv));
14
+ }
15
+ /** Validates all basic certificate fields on construction. */
16
+ validateFields() {
17
+ const {
18
+ extensions: {
19
+ basicConstraints: { isCa }
20
+ }
21
+ } = this.cert;
22
+ if (!isCa) {
23
+ throw new CertificateError("Intermediate certificate must be a CA.");
24
+ }
25
+ }
26
+ /**
27
+ * Encodes the certificate with the signature as Matter Tlv.
28
+ * If the certificate is not signed, it throws a CertificateError.
29
+ */
30
+ asSignedTlv() {
31
+ return OperationalCertificate.TlvVvsc.encode({ ...this.cert, signature: this.signature });
32
+ }
33
+ /**
34
+ * Verify requirements a Matter Intermediate CA certificate must fulfill.
35
+ * Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
36
+ * // TODO ADD Verification once we know more about the chain
37
+ */
38
+ async verify(_crypto) {
39
+ this.generalVerify();
40
+ const { subject } = this.cert;
41
+ const { vvsId } = subject;
42
+ if (vvsId === void 0 || Array.isArray(vvsId)) {
43
+ throw new CertificateError(`Invalid vvsId in Vsc certificate: ${Diagnostic.json(vvsId)}`);
44
+ }
45
+ if ("nodeId" in subject) {
46
+ throw new CertificateError(`Vsc certificate must not contain a nodeId.`);
47
+ }
48
+ if ("fabricId" in subject) {
49
+ throw new CertificateError(`Vsc certificate must not contain a fabricId.`);
50
+ }
51
+ if ("caseAuthenticatedTags" in subject) {
52
+ throw new CertificateError(`Vvsc certificate must not contain a caseAuthenticatedTags.`);
53
+ }
54
+ }
55
+ }
56
+ export {
57
+ Vvsc
58
+ };
59
+ //# sourceMappingURL=Vvsc.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/certificate/kinds/Vvsc.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAwB,kBAAkB;AAC1C,SAAS,wBAAwB;AACjC,SAAS,8BAA8B;AACvC,SAAS,uBAAuB;AAKzB,MAAM,aAAa,gBAA6C;AAAA;AAAA,EAEnE,OAAO,QAAQ,KAAkB;AAC7B,WAAO,IAAI,KAAK,uBAAuB,QAAQ,OAAO,GAAG,CAAC;AAAA,EAC9D;AAAA;AAAA,EAGU,iBAAiB;AACvB,UAAM;AAAA,MACF,YAAY;AAAA,QACR,kBAAkB,EAAE,KAAK;AAAA,MAC7B;AAAA,IACJ,IAAI,KAAK;AACT,QAAI,CAAC,MAAM;AACP,YAAM,IAAI,iBAAiB,wCAAwC;AAAA,IACvE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc;AACV,WAAO,uBAAuB,QAAQ,OAAO,EAAE,GAAG,KAAK,MAAM,WAAW,KAAK,UAAU,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAO,SAAiB;AAC1B,SAAK,cAAc;AAEnB,UAAM,EAAE,QAAQ,IAAI,KAAK;AACzB,UAAM,EAAE,MAAM,IAAI;AAGlB,QAAI,UAAU,UAAa,MAAM,QAAQ,KAAK,GAAG;AAC7C,YAAM,IAAI,iBAAiB,qCAAqC,WAAW,KAAK,KAAK,CAAC,EAAE;AAAA,IAC5F;AAGA,QAAI,YAAY,SAAS;AACrB,YAAM,IAAI,iBAAiB,4CAA4C;AAAA,IAC3E;AAGA,QAAI,cAAc,SAAS;AACvB,YAAM,IAAI,iBAAiB,8CAA8C;AAAA,IAC7E;AAGA,QAAI,2BAA2B,SAAS;AACpC,YAAM,IAAI,iBAAiB,4DAA4D;AAAA,IAC3F;AAAA,EACJ;AACJ;",
5
+ "names": []
6
+ }
@@ -38,7 +38,7 @@ export declare abstract class X509Base<CT extends X509Certificate> {
38
38
  /**
39
39
  * Build the ASN.1 DER structure for the certificate.
40
40
  */
41
- protected genericBuildAsn1Structure({ serialNumber, notBefore, notAfter, issuer, subject, ellipticCurvePublicKey, extensions, }: Unsigned<CT>): {
41
+ genericBuildAsn1Structure({ serialNumber, notBefore, notAfter, issuer, subject, ellipticCurvePublicKey, extensions, }: Unsigned<CT>): {
42
42
  version: {
43
43
  _tag: number;
44
44
  _bytes: AllowSharedBufferSource;
@@ -80,13 +80,20 @@ export declare abstract class X509Base<CT extends X509Certificate> {
80
80
  _bytes: AllowSharedBufferSource;
81
81
  };
82
82
  };
83
+ }
84
+ export declare namespace X509Base {
83
85
  /**
84
86
  * Create a Certificate Signing Request (CSR) in ASN.1 DER format.
85
87
  */
86
- static createCertificateSigningRequest(crypto: Crypto, key: Key): Promise<AllowSharedBufferSource>;
88
+ function createCertificateSigningRequest(crypto: Crypto, key: Key): Promise<AllowSharedBufferSource>;
89
+ /**
90
+ * Parse an ASN.1/DER encoded certificate into the internal format.
91
+ * This extracts the certificate data without the signature.
92
+ */
93
+ function parseAsn1Certificate(encodedCert: Bytes): X509Certificate;
87
94
  /**
88
95
  * Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
89
96
  */
90
- static getPublicKeyFromCsr(crypto: Crypto, encodedCsr: Bytes): Promise<AllowSharedBufferSource>;
97
+ function getPublicKeyFromCsr(crypto: Crypto, encodedCsr: Bytes): Promise<AllowSharedBufferSource>;
91
98
  }
92
99
  //# sourceMappingURL=X509Base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"X509Base.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/X509Base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EAEL,MAAM,EAKN,OAAO,EACP,GAAG,EAMN,MAAM,UAAU,CAAC;AAElB,OAAO,EAA8C,QAAQ,EAAE,MAAM,aAAa,CAAC;AAYnF,OAAO,EAAoD,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG1G;;;;GAIG;AACH,8BAAsB,QAAQ,CAAC,EAAE,SAAS,eAAe;;gBAIzC,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IAOnC,IAAI,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC,CAEvB;IAED,IAAI,QAAQ,YAEX;IAED;;;OAGG;IACH,IAAI,SAAS,IAWY,KAAK,CAN7B;IAED;;;OAGG;IACH,IAAI,SAAS,CAAC,SAAS,EAAE,KAAK,EAK7B;IAED;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAI1C;;OAEG;IACH,cAAc,IAAI,KAAK;IAiMvB;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAAC,EAChC,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,sBAAsB,EACtB,UAAU,GACb,EAAE,QAAQ,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBf;;OAEG;WACU,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG;IAerE;;OAEG;WACU,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK;CAyErE"}
1
+ {"version":3,"file":"X509Base.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/X509Base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EAEL,MAAM,EAMN,OAAO,EACP,GAAG,EAMN,MAAM,UAAU,CAAC;AAElB,OAAO,EAA8C,QAAQ,EAAE,MAAM,aAAa,CAAC;AAenF,OAAO,EAAoD,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG1G;;;;GAIG;AACH,8BAAsB,QAAQ,CAAC,EAAE,SAAS,eAAe;;gBAIzC,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IAOnC,IAAI,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC,CAEvB;IAED,IAAI,QAAQ,YAEX;IAED;;;OAGG;IACH,IAAI,SAAS,IAWY,KAAK,CAN7B;IAED;;;OAGG;IACH,IAAI,SAAS,CAAC,SAAS,EAAE,KAAK,EAK7B;IAED;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAI1C;;OAEG;IACH,cAAc,IAAI,KAAK;IAoMvB;;OAEG;IACH,yBAAyB,CAAC,EACtB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,sBAAsB,EACtB,UAAU,GACb,EAAE,QAAQ,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBlB;AAED,yBAAiB,QAAQ,CAAC;IACtB;;OAEG;IACH,SAAsB,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,oCAa7E;IAqTD;;;OAGG;IACH,SAAgB,oBAAoB,CAAC,WAAW,EAAE,KAAK,GAAG,eAAe,CAiGxE;IAED;;OAEG;IACH,SAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,oCAwE1E;CACJ"}