@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,347 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {
7
+ Bytes,
8
+ ContextTagged,
9
+ DatatypeOverride,
10
+ DerBitString,
11
+ DerCodec,
12
+ DerKey,
13
+ DerType,
14
+ PublicKey,
15
+ RawBytes,
16
+ X509,
17
+ X520,
18
+ X962
19
+ } from "#general";
20
+ import { CaseAuthenticatedTag } from "#types";
21
+ import { assertCertificateDerSize, CertificateError } from "./common.js";
22
+ import {
23
+ FabricId_Matter,
24
+ FirmwareSigningId_Matter,
25
+ IcacId_Matter,
26
+ matterToJsDate,
27
+ NocCat_Matter,
28
+ NodeId_Matter,
29
+ ProductId_Matter,
30
+ RcacId_Matter,
31
+ VendorId_Matter
32
+ } from "./definitions/asn.js";
33
+ import { ExtensionKeyUsageSchema } from "./definitions/base.js";
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 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 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 = DerCodec.encode(this.genericBuildAsn1Structure(this.cert));
81
+ 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 = X520.CommonName(value);
97
+ break;
98
+ case "sureName":
99
+ asn.sureName = X520.SurName(value);
100
+ break;
101
+ case "serialNum":
102
+ asn.serialNum = X520.SerialNumber(value);
103
+ break;
104
+ case "countryName":
105
+ asn.countryName = X520.CountryName(value);
106
+ break;
107
+ case "localityName":
108
+ asn.localityName = X520.LocalityName(value);
109
+ break;
110
+ case "stateOrProvinceName":
111
+ asn.stateOrProvinceName = X520.StateOrProvinceName(value);
112
+ break;
113
+ case "orgName":
114
+ asn.orgName = X520.OrganisationName(value);
115
+ break;
116
+ case "orgUnitName":
117
+ asn.orgUnitName = X520.OrganizationalUnitName(value);
118
+ break;
119
+ case "title":
120
+ asn.title = X520.Title(value);
121
+ break;
122
+ case "name":
123
+ asn.name = X520.Name(value);
124
+ break;
125
+ case "givenName":
126
+ asn.givenName = X520.GivenName(value);
127
+ break;
128
+ case "initials":
129
+ asn.initials = X520.Initials(value);
130
+ break;
131
+ case "genQualifier":
132
+ asn.genQualifier = X520.GenerationQualifier(value);
133
+ break;
134
+ case "dnQualifier":
135
+ asn.dnQualifier = X520.DnQualifier(value);
136
+ break;
137
+ case "pseudonym":
138
+ asn.pseudonym = X520.Pseudonym(value);
139
+ break;
140
+ case "domainComponent":
141
+ asn.domainComponent = X520.DomainComponent(value);
142
+ break;
143
+ case "nodeId":
144
+ asn.nodeId = NodeId_Matter(value);
145
+ break;
146
+ case "firmwareSigningId":
147
+ asn.firmwareSigningId = FirmwareSigningId_Matter(value);
148
+ break;
149
+ case "icacId":
150
+ asn.icacId = IcacId_Matter(value);
151
+ break;
152
+ case "rcacId":
153
+ asn.rcacId = RcacId_Matter(value);
154
+ break;
155
+ case "fabricId":
156
+ asn.fabricId = FabricId_Matter(value);
157
+ break;
158
+ case "caseAuthenticatedTags":
159
+ const caseAuthenticatedTags = value;
160
+ 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 = NocCat_Matter(cat0);
166
+ }
167
+ if (cat1 !== void 0) {
168
+ asn.caseAuthenticatedTag1 = NocCat_Matter(cat1);
169
+ }
170
+ if (cat2 !== void 0) {
171
+ asn.caseAuthenticatedTag2 = NocCat_Matter(cat2);
172
+ }
173
+ break;
174
+ case "vendorId":
175
+ asn.vendorId = VendorId_Matter(value);
176
+ break;
177
+ case "productId":
178
+ asn.productId = ProductId_Matter(value);
179
+ break;
180
+ case "commonNamePs":
181
+ asn.commonNamePs = X520.CommonName(value, true);
182
+ break;
183
+ case "sureNamePs":
184
+ asn.sureNamePs = X520.SurName(value, true);
185
+ break;
186
+ case "serialNumPs":
187
+ asn.serialNumPs = X520.SerialNumber(value, true);
188
+ break;
189
+ case "countryNamePs":
190
+ asn.countryNamePs = X520.CountryName(value, true);
191
+ break;
192
+ case "localityNamePs":
193
+ asn.localityNamePs = X520.LocalityName(value, true);
194
+ break;
195
+ case "stateOrProvinceNamePs":
196
+ asn.stateOrProvinceNamePs = X520.StateOrProvinceName(value, true);
197
+ break;
198
+ case "orgNamePs":
199
+ asn.orgNamePs = X520.OrganisationName(value, true);
200
+ break;
201
+ case "orgUnitNamePs":
202
+ asn.orgUnitNamePs = X520.OrganizationalUnitName(value, true);
203
+ break;
204
+ case "titlePs":
205
+ asn.titlePs = X520.Title(value, true);
206
+ break;
207
+ case "namePs":
208
+ asn.namePs = X520.Name(value, true);
209
+ break;
210
+ case "givenNamePs":
211
+ asn.givenNamePs = X520.GivenName(value, true);
212
+ break;
213
+ case "initialsPs":
214
+ asn.initialsPs = X520.Initials(value, true);
215
+ break;
216
+ case "genQualifierPs":
217
+ asn.genQualifierPs = X520.GenerationQualifier(value, true);
218
+ break;
219
+ case "dnQualifierPs":
220
+ asn.dnQualifierPs = X520.DnQualifier(value, true);
221
+ break;
222
+ case "pseudonymPs":
223
+ asn.pseudonymPs = 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 = X509.BasicConstraints(value);
241
+ break;
242
+ case "keyUsage":
243
+ asn.keyUsage = X509.KeyUsage(
244
+ ExtensionKeyUsageSchema.encode(
245
+ value
246
+ )
247
+ );
248
+ break;
249
+ case "extendedKeyUsage":
250
+ asn.extendedKeyUsage = X509.ExtendedKeyUsage(value);
251
+ break;
252
+ case "subjectKeyIdentifier":
253
+ asn.subjectKeyIdentifier = X509.SubjectKeyIdentifier(value);
254
+ break;
255
+ case "authorityKeyIdentifier":
256
+ asn.authorityKeyIdentifier = X509.AuthorityKeyIdentifier(value);
257
+ break;
258
+ case "futureExtension":
259
+ asn.futureExtension = RawBytes(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 CertificateError("Path length must be undefined for non-CA certificates.");
282
+ }
283
+ return {
284
+ version: ContextTagged(0, 2),
285
+ // v3
286
+ serialNumber: DatatypeOverride(DerType.Integer, serialNumber),
287
+ signatureAlgorithm: X962.EcdsaWithSHA256,
288
+ issuer: this.#subjectOrIssuerToAsn1(issuer),
289
+ validity: {
290
+ notBefore: matterToJsDate(notBefore),
291
+ notAfter: matterToJsDate(notAfter)
292
+ },
293
+ subject: this.#subjectOrIssuerToAsn1(subject),
294
+ publicKey: X962.PublicKeyEcPrime256v1(ellipticCurvePublicKey),
295
+ extensions: 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: X520.OrganisationName("CSR") },
305
+ publicKey: X962.PublicKeyEcPrime256v1(key.publicKey),
306
+ endSignedBytes: ContextTagged(0)
307
+ };
308
+ return DerCodec.encode({
309
+ request,
310
+ signAlgorithm: X962.EcdsaWithSHA256,
311
+ signature: DerBitString(await crypto.signEcdsa(key, 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 { [DerKey.Elements]: rootElements } = DerCodec.decode(csr);
319
+ if (rootElements?.length !== 3) throw new CertificateError("Invalid CSR data");
320
+ const [requestNode, signAlgorithmNode, signatureNode] = rootElements;
321
+ const { [DerKey.Elements]: requestElements } = requestNode;
322
+ if (requestElements?.length !== 4) throw new CertificateError("Invalid CSR data");
323
+ const [versionNode, _subjectNode, publicKeyNode] = requestElements;
324
+ const requestVersion = versionNode[DerKey.Bytes][0];
325
+ if (requestVersion !== 0) throw new CertificateError(`Unsupported request version ${requestVersion}`);
326
+ const { [DerKey.Elements]: publicKeyElements } = publicKeyNode;
327
+ if (publicKeyElements?.length !== 2) throw new CertificateError("Invalid CSR data");
328
+ const [_publicKeyTypeNode, publicKeyBytesNode] = publicKeyElements;
329
+ const publicKey = publicKeyBytesNode[DerKey.Bytes];
330
+ if (signAlgorithmNode[DerKey.Elements]?.[0]?.[DerKey.Bytes] === void 0 || !Bytes.areEqual(
331
+ X962.EcdsaWithSHA256[DerKey.ObjectId][DerKey.Bytes],
332
+ signAlgorithmNode[DerKey.Elements]?.[0]?.[DerKey.Bytes]
333
+ ))
334
+ throw new CertificateError("Unsupported signature type");
335
+ await crypto.verifyEcdsa(
336
+ PublicKey(publicKey),
337
+ DerCodec.encode(requestNode),
338
+ signatureNode[DerKey.Bytes],
339
+ "der"
340
+ );
341
+ return publicKey;
342
+ }
343
+ }
344
+ export {
345
+ X509Base
346
+ };
347
+ //# 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,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ImplementationError, MatterError } from "#general";
7
+ const MAX_DER_CERTIFICATE_SIZE = 600;
8
+ class CertificateError extends MatterError {
9
+ }
10
+ function assertCertificateDerSize(certBytes) {
11
+ if (certBytes.length > MAX_DER_CERTIFICATE_SIZE) {
12
+ throw new ImplementationError(
13
+ `Certificate to generate is too big: ${certBytes.length} bytes instead of max ${MAX_DER_CERTIFICATE_SIZE} bytes`
14
+ );
15
+ }
16
+ }
17
+ export {
18
+ CertificateError,
19
+ MAX_DER_CERTIFICATE_SIZE,
20
+ assertCertificateDerSize
21
+ };
22
+ //# 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;AAKA,SAAS,qBAAqB,mBAAmB;AAM1C,MAAM,2BAA2B;AAEjC,MAAM,yBAAyB,YAAY;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
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FabricId, NodeId, VendorId } from "#types";
7
+ export declare function matterToJsDate(date: number): Date;
8
+ export declare function jsToMatterDate(date: Date, addYears?: number): number;
9
+ /** matter-node-id = ASN.1 OID 1.3.6.1.4.1.37244.1.1 */
10
+ export declare const NodeId_Matter: (value: NodeId) => any[];
11
+ /** matter-firmware-signing-id = ASN.1 OID 1.3.6.1.4.1.37244.1.2 */
12
+ export declare const FirmwareSigningId_Matter: (value: number) => any[];
13
+ /** matter-icac-id = ASN.1 OID 1.3.6.1.4.1.37244.1.3 */
14
+ export declare const IcacId_Matter: (value: number | bigint) => any[];
15
+ /** matter-rcac-id = ASN.1 OID 1.3.6.1.4.1.37244.1.4 */
16
+ export declare const RcacId_Matter: (value: number | bigint) => any[];
17
+ /** matter-fabric-id = ASN.1 OID 1.3.6.1.4.1.37244.1.5 */
18
+ export declare const FabricId_Matter: (value: FabricId) => any[];
19
+ /** matter-noc-cat = ASN.1 OID 1.3.6.1.4.1.37244.1.6 */
20
+ export declare const NocCat_Matter: (value: number) => any[];
21
+ /** matter-oid-vid = ASN.1 OID 1.3.6.1.4.1.37244.2.1 */
22
+ export declare const VendorId_Matter: (value: VendorId) => any[];
23
+ /** matter-oid-pid = ASN.1 OID 1.3.6.1.4.1.37244.2.2 */
24
+ export declare const ProductId_Matter: (value: number) => any[];
25
+ //# sourceMappingURL=asn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asn.d.ts","sourceRoot":"","sources":["../../../../../src/certificate/kinds/definitions/asn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAOpD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,QAE1C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,SAAI,UAItD;AAoDD,uDAAuD;AACvD,eAAO,MAAM,aAAa,0BAAuC,CAAC;AAElE,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,0BAAuC,CAAC;AAE7E,uDAAuD;AACvD,eAAO,MAAM,aAAa,mCAAgD,CAAC;AAE3E,uDAAuD;AACvD,eAAO,MAAM,aAAa,mCAAgD,CAAC;AAE3E,yDAAyD;AACzD,eAAO,MAAM,eAAe,4BAAyC,CAAC;AAEtE,uDAAuD;AACvD,eAAO,MAAM,aAAa,0BAAuD,CAAC;AAElF,uDAAuD;AACvD,eAAO,MAAM,eAAe,4BAA0D,CAAC;AAEvF,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,0BAAwD,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes, DerObject, X520 } from "#general";
7
+ const YEAR_S = 365 * 24 * 60 * 60;
8
+ const EPOCH_OFFSET_S = 10957 * 24 * 60 * 60;
9
+ function matterToJsDate(date) {
10
+ return date === 0 ? X520.NON_WELL_DEFINED_DATE : new Date((date + EPOCH_OFFSET_S) * 1e3);
11
+ }
12
+ function jsToMatterDate(date, addYears = 0) {
13
+ return date.getTime() === X520.NON_WELL_DEFINED_DATE.getTime() ? 0 : Math.floor(date.getTime() / 1e3) - EPOCH_OFFSET_S + addYears * YEAR_S;
14
+ }
15
+ function intTo16Chars(value) {
16
+ const byteArray = new Uint8Array(8);
17
+ const dataView = Bytes.dataViewOf(byteArray);
18
+ dataView.setBigUint64(0, typeof value === "bigint" ? value : BigInt(value));
19
+ return Bytes.toHex(byteArray).toUpperCase();
20
+ }
21
+ function uInt16To8Chars(value) {
22
+ const byteArray = new Uint8Array(4);
23
+ const dataView = Bytes.dataViewOf(byteArray);
24
+ dataView.setUint32(0, value);
25
+ return Bytes.toHex(byteArray).toUpperCase();
26
+ }
27
+ function uInt16To4Chars(value) {
28
+ const byteArray = new Uint8Array(2);
29
+ const dataView = Bytes.dataViewOf(byteArray);
30
+ dataView.setUint16(0, value);
31
+ return Bytes.toHex(byteArray).toUpperCase();
32
+ }
33
+ const GenericMatterOpCertObject = (id, valueConverter) => (value) => [
34
+ DerObject(`2b0601040182a27c01${id.toString(16).padStart(2, "0")}`, {
35
+ value: (valueConverter ?? intTo16Chars)(value)
36
+ })
37
+ ];
38
+ const GenericMatterAttCertObject = (id, valueConverter) => (value) => [
39
+ DerObject(`2b0601040182a27c02${id.toString(16).padStart(2, "0")}`, {
40
+ value: (valueConverter ?? intTo16Chars)(value)
41
+ })
42
+ ];
43
+ const NodeId_Matter = GenericMatterOpCertObject(1);
44
+ const FirmwareSigningId_Matter = GenericMatterOpCertObject(2);
45
+ const IcacId_Matter = GenericMatterOpCertObject(3);
46
+ const RcacId_Matter = GenericMatterOpCertObject(4);
47
+ const FabricId_Matter = GenericMatterOpCertObject(5);
48
+ const NocCat_Matter = GenericMatterOpCertObject(6, uInt16To8Chars);
49
+ const VendorId_Matter = GenericMatterAttCertObject(1, uInt16To4Chars);
50
+ const ProductId_Matter = GenericMatterAttCertObject(2, uInt16To4Chars);
51
+ export {
52
+ FabricId_Matter,
53
+ FirmwareSigningId_Matter,
54
+ IcacId_Matter,
55
+ NocCat_Matter,
56
+ NodeId_Matter,
57
+ ProductId_Matter,
58
+ RcacId_Matter,
59
+ VendorId_Matter,
60
+ jsToMatterDate,
61
+ matterToJsDate
62
+ };
63
+ //# sourceMappingURL=asn.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/certificate/kinds/definitions/asn.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,WAAW,YAAY;AAGvC,MAAM,SAAS,MAAM,KAAK,KAAK;AAC/B,MAAM,iBAAiB,QAAQ,KAAK,KAAK;AAIlC,SAAS,eAAe,MAAc;AACzC,SAAO,SAAS,IAAI,KAAK,wBAAwB,IAAI,MAAM,OAAO,kBAAkB,GAAI;AAC5F;AAEO,SAAS,eAAe,MAAY,WAAW,GAAG;AACrD,SAAO,KAAK,QAAQ,MAAM,KAAK,sBAAsB,QAAQ,IACvD,IACA,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAI,IAAI,iBAAiB,WAAW;AAC1E;AAEA,SAAS,aAAa,OAAwB;AAC1C,QAAM,YAAY,IAAI,WAAW,CAAC;AAClC,QAAM,WAAW,MAAM,WAAW,SAAS;AAC3C,WAAS,aAAa,GAAG,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK,CAAC;AAC1E,SAAO,MAAM,MAAM,SAAS,EAAE,YAAY;AAC9C;AAEA,SAAS,eAAe,OAAe;AACnC,QAAM,YAAY,IAAI,WAAW,CAAC;AAClC,QAAM,WAAW,MAAM,WAAW,SAAS;AAC3C,WAAS,UAAU,GAAG,KAAK;AAC3B,SAAO,MAAM,MAAM,SAAS,EAAE,YAAY;AAC9C;AAEA,SAAS,eAAe,OAAe;AACnC,QAAM,YAAY,IAAI,WAAW,CAAC;AAClC,QAAM,WAAW,MAAM,WAAW,SAAS;AAC3C,WAAS,UAAU,GAAG,KAAK;AAC3B,SAAO,MAAM,MAAM,SAAS,EAAE,YAAY;AAC9C;AAWA,MAAM,4BACF,CAAI,IAAY,mBAChB,CAAC,UAAa;AAAA,EACV,UAAU,qBAAqB,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI;AAAA,IAC/D,QAAQ,kBAAkB,cAAc,KAAY;AAAA,EACxD,CAAC;AACL;AAMJ,MAAM,6BACF,CAAI,IAAY,mBAChB,CAAC,UAAa;AAAA,EACV,UAAU,qBAAqB,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI;AAAA,IAC/D,QAAQ,kBAAkB,cAAc,KAAY;AAAA,EACxD,CAAC;AACL;AAGG,MAAM,gBAAgB,0BAAkC,CAAC;AAGzD,MAAM,2BAA2B,0BAAkC,CAAC;AAGpE,MAAM,gBAAgB,0BAA2C,CAAC;AAGlE,MAAM,gBAAgB,0BAA2C,CAAC;AAGlE,MAAM,kBAAkB,0BAAoC,CAAC;AAG7D,MAAM,gBAAgB,0BAAkC,GAAG,cAAc;AAGzE,MAAM,kBAAkB,2BAAqC,GAAG,cAAc;AAG9E,MAAM,mBAAmB,2BAAmC,GAAG,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { VendorId } from "#types";
7
+ import { X509Certificate } from "./base.js";
8
+ /** Definitions for Matter Attestation certificates (PAA, PAI, DAC) */
9
+ export declare namespace AttestationCertificate {
10
+ interface Dac extends X509Certificate {
11
+ issuer: {
12
+ commonName: string;
13
+ productId?: number;
14
+ vendorId: VendorId;
15
+ };
16
+ subject: {
17
+ commonName: string;
18
+ productId: number;
19
+ vendorId: VendorId;
20
+ };
21
+ }
22
+ interface Pai extends X509Certificate {
23
+ issuer: {
24
+ commonName: string;
25
+ vendorId?: VendorId;
26
+ };
27
+ subject: {
28
+ commonName: string;
29
+ productId?: number;
30
+ vendorId: VendorId;
31
+ };
32
+ }
33
+ interface Paa extends X509Certificate {
34
+ issuer: {
35
+ commonName: string;
36
+ vendorId?: VendorId;
37
+ };
38
+ subject: {
39
+ commonName: string;
40
+ vendorId?: VendorId;
41
+ };
42
+ }
43
+ }
44
+ //# sourceMappingURL=attestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../../../src/certificate/kinds/definitions/attestation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,sEAAsE;AACtE,yBAAiB,sBAAsB,CAAC;IACpC,UAAiB,GAAI,SAAQ,eAAe;QACxC,MAAM,EAAE;YACJ,UAAU,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,QAAQ,CAAC;SACtB,CAAC;QACF,OAAO,EAAE;YACL,UAAU,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,QAAQ,CAAC;SACtB,CAAC;KACL;IAED,UAAiB,GAAI,SAAQ,eAAe;QACxC,MAAM,EAAE;YACJ,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;SACvB,CAAC;QACF,OAAO,EAAE;YACL,UAAU,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,QAAQ,CAAC;SACtB,CAAC;KACL;IAED,UAAiB,GAAI,SAAQ,eAAe;QACxC,MAAM,EAAE;YACJ,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;SACvB,CAAC;QACF,OAAO,EAAE;YACL,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;SACvB,CAAC;KACL;CACJ"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ //# sourceMappingURL=attestation.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/certificate/kinds/definitions/attestation.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BitFlag, TypeFromPartialBitSchema } from "#types";
7
+ export declare const ExtensionKeyUsageBitmap: {
8
+ digitalSignature: BitFlag;
9
+ nonRepudiation: BitFlag;
10
+ keyEncipherment: BitFlag;
11
+ dataEncipherment: BitFlag;
12
+ keyAgreement: BitFlag;
13
+ keyCertSign: BitFlag;
14
+ cRLSign: BitFlag;
15
+ encipherOnly: BitFlag;
16
+ decipherOnly: BitFlag;
17
+ };
18
+ export declare const ExtensionKeyUsageSchema: import("#types").BitmapSchemaInternal<{
19
+ digitalSignature: BitFlag;
20
+ nonRepudiation: BitFlag;
21
+ keyEncipherment: BitFlag;
22
+ dataEncipherment: BitFlag;
23
+ keyAgreement: BitFlag;
24
+ keyCertSign: BitFlag;
25
+ cRLSign: BitFlag;
26
+ encipherOnly: BitFlag;
27
+ decipherOnly: BitFlag;
28
+ }>;
29
+ export interface X509Certificate {
30
+ serialNumber: Uint8Array;
31
+ signatureAlgorithm: number;
32
+ issuer: {};
33
+ notBefore: number;
34
+ notAfter: number;
35
+ subject: {};
36
+ publicKeyAlgorithm: number;
37
+ ellipticCurveIdentifier: number;
38
+ ellipticCurvePublicKey: Uint8Array;
39
+ extensions: {
40
+ basicConstraints: {
41
+ isCa: boolean;
42
+ pathLen?: number;
43
+ };
44
+ keyUsage: TypeFromPartialBitSchema<typeof ExtensionKeyUsageBitmap>;
45
+ extendedKeyUsage?: number[];
46
+ subjectKeyIdentifier: Uint8Array;
47
+ authorityKeyIdentifier: Uint8Array;
48
+ futureExtension?: Uint8Array[];
49
+ };
50
+ signature: Uint8Array;
51
+ }
52
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/certificate/kinds/definitions/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAgB,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAEzE,eAAO,MAAM,uBAAuB;;;;;;;;;;CAUnC,CAAC;AACF,eAAO,MAAM,uBAAuB;;;;;;;;;;EAAwC,CAAC;AAE7E,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,UAAU,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,EAAE,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,EAAE,CAAC;IACZ,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,UAAU,CAAC;IACnC,UAAU,EAAE;QACR,gBAAgB,EAAE;YACd,IAAI,EAAE,OAAO,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,QAAQ,EAAE,wBAAwB,CAAC,OAAO,uBAAuB,CAAC,CAAC;QACnE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,oBAAoB,EAAE,UAAU,CAAC;QACjC,sBAAsB,EAAE,UAAU,CAAC;QACnC,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;KAClC,CAAC;IACF,SAAS,EAAE,UAAU,CAAC;CACzB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BitFlag, BitmapSchema } from "#types";
7
+ const ExtensionKeyUsageBitmap = {
8
+ digitalSignature: BitFlag(0),
9
+ nonRepudiation: BitFlag(1),
10
+ keyEncipherment: BitFlag(2),
11
+ dataEncipherment: BitFlag(3),
12
+ keyAgreement: BitFlag(4),
13
+ keyCertSign: BitFlag(5),
14
+ cRLSign: BitFlag(6),
15
+ encipherOnly: BitFlag(7),
16
+ decipherOnly: BitFlag(8)
17
+ };
18
+ const ExtensionKeyUsageSchema = BitmapSchema(ExtensionKeyUsageBitmap);
19
+ export {
20
+ ExtensionKeyUsageBitmap,
21
+ ExtensionKeyUsageSchema
22
+ };
23
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/certificate/kinds/definitions/base.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,SAAS,oBAA8C;AAEzD,MAAM,0BAA0B;AAAA,EACnC,kBAAkB,QAAQ,CAAC;AAAA,EAC3B,gBAAgB,QAAQ,CAAC;AAAA,EACzB,iBAAiB,QAAQ,CAAC;AAAA,EAC1B,kBAAkB,QAAQ,CAAC;AAAA,EAC3B,cAAc,QAAQ,CAAC;AAAA,EACvB,aAAa,QAAQ,CAAC;AAAA,EACtB,SAAS,QAAQ,CAAC;AAAA,EAClB,cAAc,QAAQ,CAAC;AAAA,EACvB,cAAc,QAAQ,CAAC;AAC3B;AACO,MAAM,0BAA0B,aAAa,uBAAuB;",
5
+ "names": []
6
+ }