@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
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Rcac_exports = {};
20
+ __export(Rcac_exports, {
21
+ Rcac: () => Rcac
22
+ });
23
+ module.exports = __toCommonJS(Rcac_exports);
24
+ var import_general = require("#general");
25
+ var import_types = require("#types");
26
+ var import_common = require("./common.js");
27
+ var import_base = require("./definitions/base.js");
28
+ var import_operational = require("./definitions/operational.js");
29
+ var import_OperationalBase = require("./OperationalBase.js");
30
+ /**
31
+ * @license
32
+ * Copyright 2022-2025 Matter.js Authors
33
+ * SPDX-License-Identifier: Apache-2.0
34
+ */
35
+ class Rcac extends import_OperationalBase.OperationalBase {
36
+ /** Construct the class from a Tlv version of the certificate */
37
+ static fromTlv(tlv) {
38
+ return new Rcac(import_operational.OperationalCertificate.TlvRcac.decode(tlv));
39
+ }
40
+ /** Validates all basic certificate fields on construction. */
41
+ validateFields() {
42
+ const {
43
+ extensions: {
44
+ basicConstraints: { isCa }
45
+ }
46
+ } = this.cert;
47
+ if (!isCa) {
48
+ throw new import_common.CertificateError("Root certificate must be a CA.");
49
+ }
50
+ }
51
+ /**
52
+ * Encodes the certificate with the signature as Matter Tlv.
53
+ * If the certificate is not signed, it throws a CertificateError.
54
+ */
55
+ asSignedTlv() {
56
+ return import_operational.OperationalCertificate.TlvRcac.encode({ ...this.cert, signature: this.signature });
57
+ }
58
+ /**
59
+ * Verify requirements a Matter Root certificate must fulfill.
60
+ * Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
61
+ */
62
+ async verify(crypto) {
63
+ this.generalVerify();
64
+ const { subject, extensions } = this.cert;
65
+ const { fabricId, rcacId } = subject;
66
+ const { basicConstraints, subjectKeyIdentifier, authorityKeyIdentifier } = extensions;
67
+ if ("nodeId" in subject) {
68
+ throw new import_common.CertificateError(`Root certificate must not contain a nodeId.`);
69
+ }
70
+ if (fabricId !== void 0) {
71
+ if (Array.isArray(fabricId)) {
72
+ throw new import_common.CertificateError(`Invalid fabricId in NoC certificate: ${import_general.Diagnostic.json(fabricId)}`);
73
+ }
74
+ if (fabricId === (0, import_types.FabricId)(0)) {
75
+ throw new import_common.CertificateError(`Invalid fabricId in NoC certificate: ${import_general.Diagnostic.json(fabricId)}`);
76
+ }
77
+ }
78
+ if ("icacId" in subject) {
79
+ throw new import_common.CertificateError(`Root certificate must not contain an icacId.`);
80
+ }
81
+ if (rcacId === void 0 || Array.isArray(rcacId)) {
82
+ throw new import_common.CertificateError(`Invalid rcacId in Root certificate: ${import_general.Diagnostic.json(rcacId)}`);
83
+ }
84
+ if ("caseAuthenticatedTags" in subject) {
85
+ throw new import_common.CertificateError(`Root certificate must not contain a caseAuthenticatedTags.`);
86
+ }
87
+ if (basicConstraints.isCa !== true) {
88
+ throw new import_common.CertificateError(`Root certificate must have isCa set to true.`);
89
+ }
90
+ const keyUsage = import_base.ExtensionKeyUsageSchema.encode(extensions.keyUsage);
91
+ if (keyUsage !== 96 && keyUsage !== 97) {
92
+ throw new import_common.CertificateError(
93
+ `Root certificate keyUsage must have keyCertSign and CRLSign and optionally digitalSignature set.`
94
+ );
95
+ }
96
+ if (extensions.extendedKeyUsage !== void 0) {
97
+ throw new import_common.CertificateError(`Root certificate must not have extendedKeyUsage set.`);
98
+ }
99
+ if (subjectKeyIdentifier === void 0) {
100
+ throw new import_common.CertificateError(`Root certificate must have subjectKeyIdentifier set.`);
101
+ }
102
+ if (subjectKeyIdentifier.length !== 20) {
103
+ throw new import_common.CertificateError(`Root certificate subjectKeyIdentifier must be 160 bit.`);
104
+ }
105
+ if (authorityKeyIdentifier === void 0) {
106
+ throw new import_common.CertificateError(`Root certificate must have authorityKeyIdentifier set.`);
107
+ }
108
+ if (authorityKeyIdentifier.length !== 20) {
109
+ throw new import_common.CertificateError(`Root certificate authorityKeyIdentifier must be 160 bit.`);
110
+ }
111
+ if (!import_general.Bytes.areEqual(authorityKeyIdentifier, subjectKeyIdentifier)) {
112
+ throw new import_common.CertificateError(
113
+ `Root certificate authorityKeyIdentifier must be equal to subjectKeyIdentifier.`
114
+ );
115
+ }
116
+ await crypto.verifyEcdsa((0, import_general.PublicKey)(this.cert.ellipticCurvePublicKey), this.asUnsignedAsn1(), this.signature);
117
+ }
118
+ }
119
+ //# sourceMappingURL=Rcac.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/certificate/kinds/Rcac.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAqD;AACrD,mBAAyB;AACzB,oBAAiC;AACjC,kBAAwC;AACxC,yBAAuC;AACvC,6BAAgC;AAXhC;AAAA;AAAA;AAAA;AAAA;AAaO,MAAM,aAAa,uCAA6C;AAAA;AAAA,EAEnE,OAAO,QAAQ,KAAuB;AAClC,WAAO,IAAI,KAAK,0CAAuB,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,+BAAiB,gCAAgC;AAAA,IAC/D;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc;AACV,WAAO,0CAAuB,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,+BAAiB,6CAA6C;AAAA,IAC5E;AAGA,QAAI,aAAa,QAAW;AACxB,UAAI,MAAM,QAAQ,QAAQ,GAAG;AACzB,cAAM,IAAI,+BAAiB,wCAAwC,0BAAW,KAAK,QAAQ,CAAC,EAAE;AAAA,MAClG;AAEA,UAAI,iBAAa,uBAAS,CAAC,GAAG;AAC1B,cAAM,IAAI,+BAAiB,wCAAwC,0BAAW,KAAK,QAAQ,CAAC,EAAE;AAAA,MAClG;AAAA,IACJ;AAGA,QAAI,YAAY,SAAS;AACrB,YAAM,IAAI,+BAAiB,8CAA8C;AAAA,IAC7E;AAGA,QAAI,WAAW,UAAa,MAAM,QAAQ,MAAM,GAAG;AAC/C,YAAM,IAAI,+BAAiB,uCAAuC,0BAAW,KAAK,MAAM,CAAC,EAAE;AAAA,IAC/F;AAGA,QAAI,2BAA2B,SAAS;AACpC,YAAM,IAAI,+BAAiB,4DAA4D;AAAA,IAC3F;AAGA,QAAI,iBAAiB,SAAS,MAAM;AAChC,YAAM,IAAI,+BAAiB,8CAA8C;AAAA,IAC7E;AAIA,UAAM,WAAW,oCAAwB,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,+BAAiB,sDAAsD;AAAA,IACrF;AAGA,QAAI,yBAAyB,QAAW;AACpC,YAAM,IAAI,+BAAiB,sDAAsD;AAAA,IACrF;AACA,QAAI,qBAAqB,WAAW,IAAI;AACpC,YAAM,IAAI,+BAAiB,wDAAwD;AAAA,IACvF;AAGA,QAAI,2BAA2B,QAAW;AACtC,YAAM,IAAI,+BAAiB,wDAAwD;AAAA,IACvF;AACA,QAAI,uBAAuB,WAAW,IAAI;AACtC,YAAM,IAAI,+BAAiB,0DAA0D;AAAA,IACzF;AAGA,QAAI,CAAC,qBAAM,SAAS,wBAAwB,oBAAoB,GAAG;AAC/D,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,OAAO,gBAAY,0BAAU,KAAK,KAAK,sBAAsB,GAAG,KAAK,eAAe,GAAG,KAAK,SAAS;AAAA,EAC/G;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Crypto, DerType, Key } from "#general";
7
+ import { Unsigned } from "./common.js";
8
+ import { X509Certificate } from "./definitions/base.js";
9
+ /**
10
+ * Abstract definition of a X.509 certificate that can be signed and converted to ASN.1 DER format.
11
+ * It also provides two static methods to create a certificate signing request (CSR) and to extract the public key
12
+ * from a CSR.
13
+ */
14
+ export declare abstract class X509Base<CT extends X509Certificate> {
15
+ #private;
16
+ constructor(cert: CT | Unsigned<CT>);
17
+ get cert(): Unsigned<CT>;
18
+ get isSigned(): boolean;
19
+ /**
20
+ * Get the signature of the certificate.
21
+ * If the certificate is not signed, it throws a CertificateError.
22
+ */
23
+ get signature(): Uint8Array;
24
+ /**
25
+ * Set the signature of the certificate.
26
+ * If the certificate is already signed, it throws a CertificateError.
27
+ */
28
+ set signature(signature: Uint8Array);
29
+ /**
30
+ * Sign the certificate using the provided crypto and key.
31
+ * It throws a CertificateError if the certificate is already signed.
32
+ */
33
+ sign(crypto: Crypto, key: JsonWebKey): Promise<void>;
34
+ /**
35
+ * Convert the certificate to ASN.1 DER format without signature.
36
+ */
37
+ asUnsignedAsn1(): Uint8Array<ArrayBufferLike>;
38
+ /**
39
+ * Build the ASN.1 DER structure for the certificate.
40
+ */
41
+ protected genericBuildAsn1Structure({ serialNumber, notBefore, notAfter, issuer, subject, ellipticCurvePublicKey, extensions, }: Unsigned<CT>): {
42
+ version: {
43
+ _tag: number;
44
+ _bytes: Uint8Array<ArrayBuffer>;
45
+ };
46
+ serialNumber: {
47
+ _type: DerType;
48
+ _raw: any;
49
+ };
50
+ signatureAlgorithm: any;
51
+ issuer: {
52
+ [field: string]: any[];
53
+ };
54
+ validity: {
55
+ notBefore: Date;
56
+ notAfter: Date;
57
+ };
58
+ subject: {
59
+ [field: string]: any[];
60
+ };
61
+ publicKey: {
62
+ type: {
63
+ algorithm: {
64
+ _tag: number;
65
+ _bytes: Uint8Array<ArrayBuffer>;
66
+ };
67
+ curve: {
68
+ _tag: number;
69
+ _bytes: Uint8Array<ArrayBuffer>;
70
+ };
71
+ };
72
+ bytes: {
73
+ _tag: number;
74
+ _bytes: Uint8Array<ArrayBufferLike>;
75
+ _padding: number;
76
+ };
77
+ };
78
+ extensions: {
79
+ _tag: number;
80
+ _bytes: Uint8Array<ArrayBuffer>;
81
+ };
82
+ };
83
+ /**
84
+ * Create a Certificate Signing Request (CSR) in ASN.1 DER format.
85
+ */
86
+ static createCertificateSigningRequest(crypto: Crypto, key: Key): Promise<Uint8Array<ArrayBufferLike>>;
87
+ /**
88
+ * Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
89
+ */
90
+ static getPublicKeyFromCsr(crypto: Crypto, csr: Uint8Array): Promise<Uint8Array<ArrayBufferLike>>;
91
+ }
92
+ //# sourceMappingURL=X509Base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"X509Base.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/X509Base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGH,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,UAAU,CANlC;IAED;;;OAGG;IACH,IAAI,SAAS,CAAC,SAAS,EAAE,UAAU,EAKlC;IAED;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAI1C;;OAEG;IACH,cAAc,IAAI,UAAU,CAAC,eAAe,CAAC;IAiM7C;;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,GAAG,EAAE,UAAU;CAqCnE"}
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var X509Base_exports = {};
20
+ __export(X509Base_exports, {
21
+ X509Base: () => X509Base
22
+ });
23
+ module.exports = __toCommonJS(X509Base_exports);
24
+ var import_general = require("#general");
25
+ var import_types = require("#types");
26
+ var import_common = require("./common.js");
27
+ var import_asn = require("./definitions/asn.js");
28
+ var import_base = require("./definitions/base.js");
29
+ /**
30
+ * @license
31
+ * Copyright 2022-2025 Matter.js Authors
32
+ * SPDX-License-Identifier: Apache-2.0
33
+ */
34
+ class X509Base {
35
+ #signature;
36
+ #cert;
37
+ constructor(cert) {
38
+ this.#cert = cert;
39
+ if ("signature" in cert) {
40
+ this.#signature = cert.signature;
41
+ }
42
+ }
43
+ get cert() {
44
+ return this.#cert;
45
+ }
46
+ get isSigned() {
47
+ return this.#signature !== void 0;
48
+ }
49
+ /**
50
+ * Get the signature of the certificate.
51
+ * If the certificate is not signed, it throws a CertificateError.
52
+ */
53
+ get signature() {
54
+ if (this.#signature === void 0) {
55
+ throw new import_common.CertificateError("Certificate is not signed");
56
+ }
57
+ return this.#signature;
58
+ }
59
+ /**
60
+ * Set the signature of the certificate.
61
+ * If the certificate is already signed, it throws a CertificateError.
62
+ */
63
+ set signature(signature) {
64
+ if (this.isSigned) {
65
+ throw new import_common.CertificateError("Certificate is already signed");
66
+ }
67
+ this.#signature = signature;
68
+ }
69
+ /**
70
+ * Sign the certificate using the provided crypto and key.
71
+ * It throws a CertificateError if the certificate is already signed.
72
+ */
73
+ async sign(crypto, key) {
74
+ this.signature = await crypto.signEcdsa(key, this.asUnsignedAsn1());
75
+ }
76
+ /**
77
+ * Convert the certificate to ASN.1 DER format without signature.
78
+ */
79
+ asUnsignedAsn1() {
80
+ const certBytes = import_general.DerCodec.encode(this.genericBuildAsn1Structure(this.cert));
81
+ (0, import_common.assertCertificateDerSize)(certBytes);
82
+ return certBytes;
83
+ }
84
+ /**
85
+ * Convert the subject or issuer field of the certificate to ASN.1 DER format.
86
+ * Preserve order of keys from original subject and also copy potential custom elements
87
+ */
88
+ #subjectOrIssuerToAsn1(data) {
89
+ const asn = {};
90
+ Object.entries(data).forEach(([key, value]) => {
91
+ if (value === void 0) {
92
+ return;
93
+ }
94
+ switch (key) {
95
+ case "commonName":
96
+ asn.commonName = import_general.X520.CommonName(value);
97
+ break;
98
+ case "sureName":
99
+ asn.sureName = import_general.X520.SurName(value);
100
+ break;
101
+ case "serialNum":
102
+ asn.serialNum = import_general.X520.SerialNumber(value);
103
+ break;
104
+ case "countryName":
105
+ asn.countryName = import_general.X520.CountryName(value);
106
+ break;
107
+ case "localityName":
108
+ asn.localityName = import_general.X520.LocalityName(value);
109
+ break;
110
+ case "stateOrProvinceName":
111
+ asn.stateOrProvinceName = import_general.X520.StateOrProvinceName(value);
112
+ break;
113
+ case "orgName":
114
+ asn.orgName = import_general.X520.OrganisationName(value);
115
+ break;
116
+ case "orgUnitName":
117
+ asn.orgUnitName = import_general.X520.OrganizationalUnitName(value);
118
+ break;
119
+ case "title":
120
+ asn.title = import_general.X520.Title(value);
121
+ break;
122
+ case "name":
123
+ asn.name = import_general.X520.Name(value);
124
+ break;
125
+ case "givenName":
126
+ asn.givenName = import_general.X520.GivenName(value);
127
+ break;
128
+ case "initials":
129
+ asn.initials = import_general.X520.Initials(value);
130
+ break;
131
+ case "genQualifier":
132
+ asn.genQualifier = import_general.X520.GenerationQualifier(value);
133
+ break;
134
+ case "dnQualifier":
135
+ asn.dnQualifier = import_general.X520.DnQualifier(value);
136
+ break;
137
+ case "pseudonym":
138
+ asn.pseudonym = import_general.X520.Pseudonym(value);
139
+ break;
140
+ case "domainComponent":
141
+ asn.domainComponent = import_general.X520.DomainComponent(value);
142
+ break;
143
+ case "nodeId":
144
+ asn.nodeId = (0, import_asn.NodeId_Matter)(value);
145
+ break;
146
+ case "firmwareSigningId":
147
+ asn.firmwareSigningId = (0, import_asn.FirmwareSigningId_Matter)(value);
148
+ break;
149
+ case "icacId":
150
+ asn.icacId = (0, import_asn.IcacId_Matter)(value);
151
+ break;
152
+ case "rcacId":
153
+ asn.rcacId = (0, import_asn.RcacId_Matter)(value);
154
+ break;
155
+ case "fabricId":
156
+ asn.fabricId = (0, import_asn.FabricId_Matter)(value);
157
+ break;
158
+ case "caseAuthenticatedTags":
159
+ const caseAuthenticatedTags = value;
160
+ import_types.CaseAuthenticatedTag.validateNocTagList(caseAuthenticatedTags);
161
+ const cat0 = caseAuthenticatedTags[0];
162
+ const cat1 = caseAuthenticatedTags[1];
163
+ const cat2 = caseAuthenticatedTags[2];
164
+ if (cat0 !== void 0) {
165
+ asn.caseAuthenticatedTag0 = (0, import_asn.NocCat_Matter)(cat0);
166
+ }
167
+ if (cat1 !== void 0) {
168
+ asn.caseAuthenticatedTag1 = (0, import_asn.NocCat_Matter)(cat1);
169
+ }
170
+ if (cat2 !== void 0) {
171
+ asn.caseAuthenticatedTag2 = (0, import_asn.NocCat_Matter)(cat2);
172
+ }
173
+ break;
174
+ case "vendorId":
175
+ asn.vendorId = (0, import_asn.VendorId_Matter)(value);
176
+ break;
177
+ case "productId":
178
+ asn.productId = (0, import_asn.ProductId_Matter)(value);
179
+ break;
180
+ case "commonNamePs":
181
+ asn.commonNamePs = import_general.X520.CommonName(value, true);
182
+ break;
183
+ case "sureNamePs":
184
+ asn.sureNamePs = import_general.X520.SurName(value, true);
185
+ break;
186
+ case "serialNumPs":
187
+ asn.serialNumPs = import_general.X520.SerialNumber(value, true);
188
+ break;
189
+ case "countryNamePs":
190
+ asn.countryNamePs = import_general.X520.CountryName(value, true);
191
+ break;
192
+ case "localityNamePs":
193
+ asn.localityNamePs = import_general.X520.LocalityName(value, true);
194
+ break;
195
+ case "stateOrProvinceNamePs":
196
+ asn.stateOrProvinceNamePs = import_general.X520.StateOrProvinceName(value, true);
197
+ break;
198
+ case "orgNamePs":
199
+ asn.orgNamePs = import_general.X520.OrganisationName(value, true);
200
+ break;
201
+ case "orgUnitNamePs":
202
+ asn.orgUnitNamePs = import_general.X520.OrganizationalUnitName(value, true);
203
+ break;
204
+ case "titlePs":
205
+ asn.titlePs = import_general.X520.Title(value, true);
206
+ break;
207
+ case "namePs":
208
+ asn.namePs = import_general.X520.Name(value, true);
209
+ break;
210
+ case "givenNamePs":
211
+ asn.givenNamePs = import_general.X520.GivenName(value, true);
212
+ break;
213
+ case "initialsPs":
214
+ asn.initialsPs = import_general.X520.Initials(value, true);
215
+ break;
216
+ case "genQualifierPs":
217
+ asn.genQualifierPs = import_general.X520.GenerationQualifier(value, true);
218
+ break;
219
+ case "dnQualifierPs":
220
+ asn.dnQualifierPs = import_general.X520.DnQualifier(value, true);
221
+ break;
222
+ case "pseudonymPs":
223
+ asn.pseudonymPs = import_general.X520.Pseudonym(value, true);
224
+ break;
225
+ }
226
+ });
227
+ return asn;
228
+ }
229
+ /**
230
+ * Convert the extensions of the certificate to ASN.1 DER format.
231
+ */
232
+ #extensionsToAsn1(extensions) {
233
+ const asn = {};
234
+ Object.entries(extensions).forEach(([key, value]) => {
235
+ if (value === void 0) {
236
+ return;
237
+ }
238
+ switch (key) {
239
+ case "basicConstraints":
240
+ asn.basicConstraints = import_general.X509.BasicConstraints(value);
241
+ break;
242
+ case "keyUsage":
243
+ asn.keyUsage = import_general.X509.KeyUsage(
244
+ import_base.ExtensionKeyUsageSchema.encode(
245
+ value
246
+ )
247
+ );
248
+ break;
249
+ case "extendedKeyUsage":
250
+ asn.extendedKeyUsage = import_general.X509.ExtendedKeyUsage(value);
251
+ break;
252
+ case "subjectKeyIdentifier":
253
+ asn.subjectKeyIdentifier = import_general.X509.SubjectKeyIdentifier(value);
254
+ break;
255
+ case "authorityKeyIdentifier":
256
+ asn.authorityKeyIdentifier = import_general.X509.AuthorityKeyIdentifier(value);
257
+ break;
258
+ case "futureExtension":
259
+ asn.futureExtension = (0, import_general.RawBytes)(import_general.Bytes.concat(...value ?? []));
260
+ break;
261
+ }
262
+ });
263
+ return asn;
264
+ }
265
+ /**
266
+ * Build the ASN.1 DER structure for the certificate.
267
+ */
268
+ genericBuildAsn1Structure({
269
+ serialNumber,
270
+ notBefore,
271
+ notAfter,
272
+ issuer,
273
+ subject,
274
+ ellipticCurvePublicKey,
275
+ extensions
276
+ }) {
277
+ const {
278
+ basicConstraints: { isCa, pathLen }
279
+ } = extensions;
280
+ if (!isCa && pathLen !== void 0) {
281
+ throw new import_common.CertificateError("Path length must be undefined for non-CA certificates.");
282
+ }
283
+ return {
284
+ version: (0, import_general.ContextTagged)(0, 2),
285
+ // v3
286
+ serialNumber: (0, import_general.DatatypeOverride)(import_general.DerType.Integer, serialNumber),
287
+ signatureAlgorithm: import_general.X962.EcdsaWithSHA256,
288
+ issuer: this.#subjectOrIssuerToAsn1(issuer),
289
+ validity: {
290
+ notBefore: (0, import_asn.matterToJsDate)(notBefore),
291
+ notAfter: (0, import_asn.matterToJsDate)(notAfter)
292
+ },
293
+ subject: this.#subjectOrIssuerToAsn1(subject),
294
+ publicKey: import_general.X962.PublicKeyEcPrime256v1(ellipticCurvePublicKey),
295
+ extensions: (0, import_general.ContextTagged)(3, this.#extensionsToAsn1(extensions))
296
+ };
297
+ }
298
+ /**
299
+ * Create a Certificate Signing Request (CSR) in ASN.1 DER format.
300
+ */
301
+ static async createCertificateSigningRequest(crypto, key) {
302
+ const request = {
303
+ version: 0,
304
+ subject: { organization: import_general.X520.OrganisationName("CSR") },
305
+ publicKey: import_general.X962.PublicKeyEcPrime256v1(key.publicKey),
306
+ endSignedBytes: (0, import_general.ContextTagged)(0)
307
+ };
308
+ return import_general.DerCodec.encode({
309
+ request,
310
+ signAlgorithm: import_general.X962.EcdsaWithSHA256,
311
+ signature: (0, import_general.DerBitString)(await crypto.signEcdsa(key, import_general.DerCodec.encode(request), "der"))
312
+ });
313
+ }
314
+ /**
315
+ * Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
316
+ */
317
+ static async getPublicKeyFromCsr(crypto, csr) {
318
+ const { [import_general.DerKey.Elements]: rootElements } = import_general.DerCodec.decode(csr);
319
+ if (rootElements?.length !== 3) throw new import_common.CertificateError("Invalid CSR data");
320
+ const [requestNode, signAlgorithmNode, signatureNode] = rootElements;
321
+ const { [import_general.DerKey.Elements]: requestElements } = requestNode;
322
+ if (requestElements?.length !== 4) throw new import_common.CertificateError("Invalid CSR data");
323
+ const [versionNode, _subjectNode, publicKeyNode] = requestElements;
324
+ const requestVersion = versionNode[import_general.DerKey.Bytes][0];
325
+ if (requestVersion !== 0) throw new import_common.CertificateError(`Unsupported request version ${requestVersion}`);
326
+ const { [import_general.DerKey.Elements]: publicKeyElements } = publicKeyNode;
327
+ if (publicKeyElements?.length !== 2) throw new import_common.CertificateError("Invalid CSR data");
328
+ const [_publicKeyTypeNode, publicKeyBytesNode] = publicKeyElements;
329
+ const publicKey = publicKeyBytesNode[import_general.DerKey.Bytes];
330
+ if (signAlgorithmNode[import_general.DerKey.Elements]?.[0]?.[import_general.DerKey.Bytes] === void 0 || !import_general.Bytes.areEqual(
331
+ import_general.X962.EcdsaWithSHA256[import_general.DerKey.ObjectId][import_general.DerKey.Bytes],
332
+ signAlgorithmNode[import_general.DerKey.Elements]?.[0]?.[import_general.DerKey.Bytes]
333
+ ))
334
+ throw new import_common.CertificateError("Unsupported signature type");
335
+ await crypto.verifyEcdsa(
336
+ (0, import_general.PublicKey)(publicKey),
337
+ import_general.DerCodec.encode(requestNode),
338
+ signatureNode[import_general.DerKey.Bytes],
339
+ "der"
340
+ );
341
+ return publicKey;
342
+ }
343
+ }
344
+ //# sourceMappingURL=X509Base.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/certificate/kinds/X509Base.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MatterError } from "#general";
7
+ /**
8
+ * Matter specific Certificate Sizes
9
+ * @see {@link MatterSpecification.v13.Core} 6.1.3.
10
+ */
11
+ export declare const MAX_DER_CERTIFICATE_SIZE = 600;
12
+ export declare class CertificateError extends MatterError {
13
+ }
14
+ export type Unsigned<Type> = {
15
+ [Property in keyof Type as Exclude<Property, "signature">]: Type[Property];
16
+ };
17
+ export declare function assertCertificateDerSize(certBytes: Uint8Array): void;
18
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAuB,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,qBAAa,gBAAiB,SAAQ,WAAW;CAAG;AAEpD,MAAM,MAAM,QAAQ,CAAC,IAAI,IAAI;KAAG,QAAQ,IAAI,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;CAAE,CAAC;AAE5G,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,UAAU,QAM7D"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var common_exports = {};
20
+ __export(common_exports, {
21
+ CertificateError: () => CertificateError,
22
+ MAX_DER_CERTIFICATE_SIZE: () => MAX_DER_CERTIFICATE_SIZE,
23
+ assertCertificateDerSize: () => assertCertificateDerSize
24
+ });
25
+ module.exports = __toCommonJS(common_exports);
26
+ var import_general = require("#general");
27
+ /**
28
+ * @license
29
+ * Copyright 2022-2025 Matter.js Authors
30
+ * SPDX-License-Identifier: Apache-2.0
31
+ */
32
+ const MAX_DER_CERTIFICATE_SIZE = 600;
33
+ class CertificateError extends import_general.MatterError {
34
+ }
35
+ function assertCertificateDerSize(certBytes) {
36
+ if (certBytes.length > MAX_DER_CERTIFICATE_SIZE) {
37
+ throw new import_general.ImplementationError(
38
+ `Certificate to generate is too big: ${certBytes.length} bytes instead of max ${MAX_DER_CERTIFICATE_SIZE} bytes`
39
+ );
40
+ }
41
+ }
42
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/certificate/kinds/common.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAAiD;AALjD;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,2BAA2B;AAEjC,MAAM,yBAAyB,2BAAY;AAAC;AAI5C,SAAS,yBAAyB,WAAuB;AAC5D,MAAI,UAAU,SAAS,0BAA0B;AAC7C,UAAM,IAAI;AAAA,MACN,uCAAuC,UAAU,MAAM,yBAAyB,wBAAwB;AAAA,IAC5G;AAAA,EACJ;AACJ;",
5
+ "names": []
6
+ }