@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
@@ -23,12 +23,15 @@ import {
23
23
  FabricId_Matter,
24
24
  FirmwareSigningId_Matter,
25
25
  IcacId_Matter,
26
+ MATTER_EPOCH_OFFSET_S,
27
+ MATTER_OID_TO_FIELD_MAP,
26
28
  matterToJsDate,
27
29
  NocCat_Matter,
28
30
  NodeId_Matter,
29
31
  ProductId_Matter,
30
32
  RcacId_Matter,
31
- VendorId_Matter
33
+ VendorId_Matter,
34
+ VvsId_Matter
32
35
  } from "./definitions/asn.js";
33
36
  import { ExtensionKeyUsageSchema } from "./definitions/base.js";
34
37
  class X509Base {
@@ -95,8 +98,8 @@ class X509Base {
95
98
  case "commonName":
96
99
  asn.commonName = X520.CommonName(value);
97
100
  break;
98
- case "sureName":
99
- asn.sureName = X520.SurName(value);
101
+ case "surName":
102
+ asn.surName = X520.SurName(value);
100
103
  break;
101
104
  case "serialNum":
102
105
  asn.serialNum = X520.SerialNumber(value);
@@ -152,6 +155,9 @@ class X509Base {
152
155
  case "rcacId":
153
156
  asn.rcacId = RcacId_Matter(value);
154
157
  break;
158
+ case "vvsId":
159
+ asn.vvsId = VvsId_Matter(value);
160
+ break;
155
161
  case "fabricId":
156
162
  asn.fabricId = FabricId_Matter(value);
157
163
  break;
@@ -180,8 +186,8 @@ class X509Base {
180
186
  case "commonNamePs":
181
187
  asn.commonNamePs = X520.CommonName(value, true);
182
188
  break;
183
- case "sureNamePs":
184
- asn.sureNamePs = X520.SurName(value, true);
189
+ case "surNamePs":
190
+ asn.surNamePs = X520.SurName(value, true);
185
191
  break;
186
192
  case "serialNumPs":
187
193
  asn.serialNumPs = X520.SerialNumber(value, true);
@@ -295,10 +301,9 @@ class X509Base {
295
301
  extensions: ContextTagged(3, this.#extensionsToAsn1(extensions))
296
302
  };
297
303
  }
298
- /**
299
- * Create a Certificate Signing Request (CSR) in ASN.1 DER format.
300
- */
301
- static async createCertificateSigningRequest(crypto, key) {
304
+ }
305
+ ((X509Base2) => {
306
+ async function createCertificateSigningRequest(crypto, key) {
302
307
  const request = {
303
308
  version: 0,
304
309
  subject: { organization: X520.OrganisationName("CSR") },
@@ -311,10 +316,298 @@ class X509Base {
311
316
  signature: DerBitString(await crypto.signEcdsa(key, DerCodec.encode(request), "der"))
312
317
  });
313
318
  }
314
- /**
315
- * Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
316
- */
317
- static async getPublicKeyFromCsr(crypto, encodedCsr) {
319
+ X509Base2.createCertificateSigningRequest = createCertificateSigningRequest;
320
+ let ExtensionOid;
321
+ ((ExtensionOid2) => {
322
+ ExtensionOid2.BASIC_CONSTRAINTS = 0x551d13n;
323
+ ExtensionOid2.KEY_USAGE = 0x551d0fn;
324
+ ExtensionOid2.EXTENDED_KEY_USAGE = 0x551d25n;
325
+ ExtensionOid2.SUBJECT_KEY_IDENTIFIER = 0x551d0en;
326
+ ExtensionOid2.AUTHORITY_KEY_IDENTIFIER = 0x551d23n;
327
+ })(ExtensionOid || (ExtensionOid = {}));
328
+ let ExtendedKeyUsageOid;
329
+ ((ExtendedKeyUsageOid2) => {
330
+ ExtendedKeyUsageOid2.SERVER_AUTH = 0x2b06010505070301n;
331
+ ExtendedKeyUsageOid2.CLIENT_AUTH = 0x2b06010505070302n;
332
+ ExtendedKeyUsageOid2.CODE_SIGNING = 0x2b06010505070303n;
333
+ ExtendedKeyUsageOid2.EMAIL_PROTECTION = 0x2b06010505070304n;
334
+ ExtendedKeyUsageOid2.TIME_STAMPING = 0x2b06010505070308n;
335
+ ExtendedKeyUsageOid2.OCSP_SIGNING = 0x2b06010505070309n;
336
+ })(ExtendedKeyUsageOid || (ExtendedKeyUsageOid = {}));
337
+ function oidToSubjectField(oid) {
338
+ const oidHex = Bytes.toHex(oid);
339
+ const field = X520.OID_TO_FIELD_MAP[oidHex] ?? MATTER_OID_TO_FIELD_MAP[oidHex];
340
+ if (field !== void 0) {
341
+ return { field, isPrintable: false };
342
+ }
343
+ }
344
+ function parseSubjectOrIssuer(node) {
345
+ const result = {};
346
+ const { [DerKey.Elements]: rdnSequence } = node;
347
+ if (!rdnSequence) {
348
+ throw new CertificateError("Invalid subject/issuer structure");
349
+ }
350
+ for (const rdnSet of rdnSequence) {
351
+ const { [DerKey.Elements]: attributeSets } = rdnSet;
352
+ if (!attributeSets) continue;
353
+ for (const attributeSet of attributeSets) {
354
+ const { [DerKey.Elements]: attrElements } = attributeSet;
355
+ if (!attrElements || attrElements.length !== 2) continue;
356
+ const [oidNode, valueNode] = attrElements;
357
+ const oid = oidNode[DerKey.Bytes];
358
+ const fieldInfo = oidToSubjectField(oid);
359
+ if (fieldInfo === void 0) continue;
360
+ let { field } = fieldInfo;
361
+ let value;
362
+ const valueBytes = Bytes.of(valueNode[DerKey.Bytes]);
363
+ const valueTag = valueNode[DerKey.TagId];
364
+ switch (field) {
365
+ case "nodeId":
366
+ case "fabricId": {
367
+ const hexString = Bytes.toString(valueBytes);
368
+ value = BigInt("0x" + hexString);
369
+ break;
370
+ }
371
+ case "icacId":
372
+ case "rcacId":
373
+ case "vvsId": {
374
+ const hexString = Bytes.toString(valueBytes);
375
+ const bigIntValue = BigInt("0x" + hexString);
376
+ value = bigIntValue <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(bigIntValue) : bigIntValue;
377
+ break;
378
+ }
379
+ case "firmwareSigningId":
380
+ case "productId":
381
+ case "vendorId": {
382
+ const hexString = Bytes.toString(valueBytes);
383
+ value = parseInt(hexString, 16);
384
+ break;
385
+ }
386
+ case "caseAuthenticatedTag": {
387
+ const hexString = Bytes.toString(valueBytes);
388
+ const catValue = parseInt(hexString, 16);
389
+ if (result.caseAuthenticatedTags !== void 0) {
390
+ result.caseAuthenticatedTags.push(catValue);
391
+ continue;
392
+ }
393
+ field = "caseAuthenticatedTags";
394
+ value = [catValue];
395
+ break;
396
+ }
397
+ default: {
398
+ value = Bytes.toString(valueBytes);
399
+ if (valueTag === DerType.PrintableString) {
400
+ field += "Ps";
401
+ }
402
+ }
403
+ }
404
+ result[field] = value;
405
+ }
406
+ }
407
+ return result;
408
+ }
409
+ function parseExtensions(extensionsNode) {
410
+ const result = {
411
+ basicConstraints: { isCa: false }
412
+ };
413
+ const { [DerKey.Elements]: extensions } = extensionsNode;
414
+ if (!extensions) {
415
+ throw new CertificateError("Invalid extensions structure");
416
+ }
417
+ for (const ext of extensions) {
418
+ const { [DerKey.Elements]: extElements } = ext;
419
+ if (!extElements || extElements.length < 2) continue;
420
+ const oid = extElements[0][DerKey.Bytes];
421
+ const oidValue = Bytes.asBigInt(oid);
422
+ let valueIndex = 1;
423
+ if (extElements.length > 2 && extElements[1][DerKey.TagId] === DerType.Boolean) {
424
+ valueIndex = 2;
425
+ }
426
+ const valueOctetString = extElements[valueIndex][DerKey.Bytes];
427
+ const valueNode = DerCodec.decode(valueOctetString);
428
+ switch (oidValue) {
429
+ case ExtensionOid.BASIC_CONSTRAINTS:
430
+ {
431
+ const { [DerKey.Elements]: bcElements } = valueNode;
432
+ if (bcElements && bcElements.length > 0) {
433
+ if (bcElements[0][DerKey.TagId] === DerType.Boolean) {
434
+ const bcBytes = Bytes.of(bcElements[0][DerKey.Bytes]);
435
+ result.basicConstraints.isCa = bcBytes[0] !== 0;
436
+ }
437
+ if (bcElements.length > 1 && bcElements[1][DerKey.TagId] === DerType.Integer) {
438
+ const pathLenBytes = Bytes.of(bcElements[1][DerKey.Bytes]);
439
+ result.basicConstraints.pathLen = pathLenBytes[0];
440
+ }
441
+ }
442
+ }
443
+ break;
444
+ case ExtensionOid.KEY_USAGE:
445
+ {
446
+ const bitString = Bytes.of(valueNode[DerKey.Bytes]);
447
+ if (bitString.length >= 1) {
448
+ const usageByte = bitString[0];
449
+ result.keyUsage = {
450
+ digitalSignature: (usageByte & 128) !== 0,
451
+ nonRepudiation: (usageByte & 64) !== 0,
452
+ keyEncipherment: (usageByte & 32) !== 0,
453
+ dataEncipherment: (usageByte & 16) !== 0,
454
+ keyAgreement: (usageByte & 8) !== 0,
455
+ keyCertSign: (usageByte & 4) !== 0,
456
+ cRLSign: (usageByte & 2) !== 0,
457
+ encipherOnly: (usageByte & 1) !== 0,
458
+ decipherOnly: bitString.length > 1 ? (bitString[1] & 128) !== 0 : false
459
+ };
460
+ }
461
+ }
462
+ break;
463
+ case ExtensionOid.EXTENDED_KEY_USAGE:
464
+ {
465
+ const { [DerKey.Elements]: ekuElements } = valueNode;
466
+ if (ekuElements) {
467
+ const ekuValues = [];
468
+ for (const eku of ekuElements) {
469
+ const ekuOidValue = Bytes.asBigInt(eku[DerKey.Bytes]);
470
+ switch (ekuOidValue) {
471
+ case ExtendedKeyUsageOid.SERVER_AUTH:
472
+ ekuValues.push(1);
473
+ break;
474
+ case ExtendedKeyUsageOid.CLIENT_AUTH:
475
+ ekuValues.push(2);
476
+ break;
477
+ case ExtendedKeyUsageOid.CODE_SIGNING:
478
+ ekuValues.push(3);
479
+ break;
480
+ case ExtendedKeyUsageOid.EMAIL_PROTECTION:
481
+ ekuValues.push(4);
482
+ break;
483
+ case ExtendedKeyUsageOid.TIME_STAMPING:
484
+ ekuValues.push(5);
485
+ break;
486
+ case ExtendedKeyUsageOid.OCSP_SIGNING:
487
+ ekuValues.push(6);
488
+ break;
489
+ }
490
+ }
491
+ if (ekuValues.length > 0) {
492
+ result.extendedKeyUsage = ekuValues;
493
+ }
494
+ }
495
+ }
496
+ break;
497
+ case ExtensionOid.SUBJECT_KEY_IDENTIFIER:
498
+ result.subjectKeyIdentifier = valueNode[DerKey.Bytes];
499
+ break;
500
+ case ExtensionOid.AUTHORITY_KEY_IDENTIFIER:
501
+ {
502
+ const { [DerKey.Elements]: akiElements } = valueNode;
503
+ if (akiElements && akiElements.length > 0) {
504
+ result.authorityKeyIdentifier = akiElements[0][DerKey.Bytes];
505
+ }
506
+ }
507
+ break;
508
+ }
509
+ }
510
+ if (result.basicConstraints === void 0 || result.keyUsage === void 0 || result.subjectKeyIdentifier === void 0 || result.authorityKeyIdentifier === void 0) {
511
+ throw new CertificateError("Missing required extensions in certificate");
512
+ }
513
+ return result;
514
+ }
515
+ function parseDate(node) {
516
+ const dateBytes = node[DerKey.Bytes];
517
+ const dateString = Bytes.toString(dateBytes);
518
+ const tag = node[DerKey.TagId];
519
+ let year, month, day, hour, minute, second;
520
+ if (tag === DerType.UtcDate) {
521
+ year = parseInt(dateString.substring(0, 2));
522
+ year += year >= 50 ? 1900 : 2e3;
523
+ month = parseInt(dateString.substring(2, 4));
524
+ day = parseInt(dateString.substring(4, 6));
525
+ hour = parseInt(dateString.substring(6, 8));
526
+ minute = parseInt(dateString.substring(8, 10));
527
+ second = parseInt(dateString.substring(10, 12));
528
+ } else if (tag === DerType.GeneralizedTime) {
529
+ year = parseInt(dateString.substring(0, 4));
530
+ month = parseInt(dateString.substring(4, 6));
531
+ day = parseInt(dateString.substring(6, 8));
532
+ hour = parseInt(dateString.substring(8, 10));
533
+ minute = parseInt(dateString.substring(10, 12));
534
+ second = parseInt(dateString.substring(12, 14));
535
+ } else {
536
+ throw new CertificateError(`Unsupported date type: ${tag}`);
537
+ }
538
+ const date = new Date(Date.UTC(year, month - 1, day, hour, minute, second));
539
+ if (date.getTime() === X520.NON_WELL_DEFINED_DATE.getTime()) {
540
+ return 0;
541
+ }
542
+ return Math.floor(date.getTime() / 1e3) - MATTER_EPOCH_OFFSET_S;
543
+ }
544
+ function parseAsn1Certificate(encodedCert) {
545
+ const { [DerKey.Elements]: rootElements } = DerCodec.decode(encodedCert);
546
+ if (!rootElements || rootElements.length !== 3) {
547
+ throw new CertificateError(
548
+ `Invalid certificate structure - expected 3 root elements, got ${rootElements?.length ?? 0}`
549
+ );
550
+ }
551
+ const [certificateNode, , signatureNode] = rootElements;
552
+ const { [DerKey.Elements]: certElements } = certificateNode;
553
+ if (!certElements || certElements.length < 7) {
554
+ throw new CertificateError("Invalid TBSCertificate structure");
555
+ }
556
+ let idx = 0;
557
+ if (certElements[idx][DerKey.TagId] === 160) {
558
+ idx++;
559
+ }
560
+ const serialNumber = certElements[idx++][DerKey.Bytes];
561
+ const signatureAlgorithmOid = certElements[idx][DerKey.Elements]?.[0]?.[DerKey.Bytes];
562
+ if (!signatureAlgorithmOid) {
563
+ throw new CertificateError("Invalid signature algorithm structure");
564
+ }
565
+ const signatureAlgorithm = Bytes.toHex(signatureAlgorithmOid) === "2a8648ce3d040302" ? 1 : 0;
566
+ idx++;
567
+ const issuer = parseSubjectOrIssuer(certElements[idx++]);
568
+ const { [DerKey.Elements]: validityElements } = certElements[idx++];
569
+ if (!validityElements || validityElements.length !== 2) {
570
+ throw new CertificateError("Invalid validity structure");
571
+ }
572
+ const notBefore = parseDate(validityElements[0]);
573
+ const notAfter = parseDate(validityElements[1]);
574
+ const subject = parseSubjectOrIssuer(certElements[idx++]);
575
+ const { [DerKey.Elements]: publicKeyElements } = certElements[idx++];
576
+ if (!publicKeyElements || publicKeyElements.length !== 2) {
577
+ throw new CertificateError("Invalid public key structure");
578
+ }
579
+ const { [DerKey.Elements]: algorithmElements } = publicKeyElements[0];
580
+ if (!algorithmElements || algorithmElements.length !== 2) {
581
+ throw new CertificateError("Invalid public key algorithm structure");
582
+ }
583
+ const publicKeyAlgorithmOid = Bytes.toHex(algorithmElements[0][DerKey.Bytes]);
584
+ const publicKeyAlgorithm = publicKeyAlgorithmOid === "2a8648ce3d0201" ? 1 : 0;
585
+ const ellipticCurveOid = Bytes.toHex(algorithmElements[1][DerKey.Bytes]);
586
+ const ellipticCurveIdentifier = ellipticCurveOid === "2a8648ce3d030107" ? 1 : 0;
587
+ const ellipticCurvePublicKey = Bytes.of(publicKeyElements[1][DerKey.Bytes]);
588
+ if (idx >= certElements.length || certElements[idx][DerKey.TagId] !== 163) {
589
+ throw new CertificateError("Missing required extensions in certificate");
590
+ }
591
+ const extensionsBytes = certElements[idx][DerKey.Bytes];
592
+ const extensionsSequence = DerCodec.decode(extensionsBytes);
593
+ const extensions = parseExtensions(extensionsSequence);
594
+ const signature = Bytes.of(signatureNode[DerKey.Bytes]);
595
+ return {
596
+ serialNumber,
597
+ signatureAlgorithm,
598
+ issuer,
599
+ notBefore,
600
+ notAfter,
601
+ subject,
602
+ publicKeyAlgorithm,
603
+ ellipticCurveIdentifier,
604
+ ellipticCurvePublicKey,
605
+ extensions,
606
+ signature
607
+ };
608
+ }
609
+ X509Base2.parseAsn1Certificate = parseAsn1Certificate;
610
+ async function getPublicKeyFromCsr(crypto, encodedCsr) {
318
611
  const { [DerKey.Elements]: rootElements } = DerCodec.decode(encodedCsr);
319
612
  if (rootElements?.length !== 3) {
320
613
  throw new CertificateError("Invalid CSR data");
@@ -366,7 +659,8 @@ class X509Base {
366
659
  );
367
660
  return publicKey;
368
661
  }
369
- }
662
+ X509Base2.getPublicKeyFromCsr = getPublicKeyFromCsr;
663
+ })(X509Base || (X509Base = {}));
370
664
  export {
371
665
  X509Base
372
666
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/certificate/kinds/X509Base.ts"],
4
- "mappings": "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",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["X509Base", "ExtensionOid", "ExtendedKeyUsageOid"]
6
6
  }
@@ -4,8 +4,21 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { FabricId, NodeId, VendorId } from "#types";
7
+ /** Seconds from Unix epoch (1970-01-01) to Matter epoch (2000-01-01) */
8
+ export declare const MATTER_EPOCH_OFFSET_S: number;
7
9
  export declare function matterToJsDate(date: number): Date;
8
10
  export declare function jsToMatterDate(date: Date, addYears?: number): number;
11
+ /**
12
+ * Matter specific ASN.1 OIDs
13
+ * @see {@link MatterSpecification.v12.Core} Appendix E
14
+ */
15
+ /**
16
+ * Reverse lookup map from OID hex to field name for all Matter-specific attributes
17
+ * (both operational and attestation certificates)
18
+ */
19
+ export declare const MATTER_OID_TO_FIELD_MAP: {
20
+ [oidHex: string]: string;
21
+ };
9
22
  /** matter-node-id = ASN.1 OID 1.3.6.1.4.1.37244.1.1 */
10
23
  export declare const NodeId_Matter: (value: NodeId) => any[];
11
24
  /** matter-firmware-signing-id = ASN.1 OID 1.3.6.1.4.1.37244.1.2 */
@@ -18,6 +31,8 @@ export declare const RcacId_Matter: (value: number | bigint) => any[];
18
31
  export declare const FabricId_Matter: (value: FabricId) => any[];
19
32
  /** matter-noc-cat = ASN.1 OID 1.3.6.1.4.1.37244.1.6 */
20
33
  export declare const NocCat_Matter: (value: number) => any[];
34
+ /** matter-vvs-id = ASN.1 OID 1.3.6.1.4.1.37244.1.7 */
35
+ export declare const VvsId_Matter: (value: number | bigint) => any[];
21
36
  /** matter-oid-vid = ASN.1 OID 1.3.6.1.4.1.37244.2.1 */
22
37
  export declare const VendorId_Matter: (value: VendorId) => any[];
23
38
  /** matter-oid-pid = ASN.1 OID 1.3.6.1.4.1.37244.2.2 */
@@ -1 +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"}
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;AAIpD,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,QAAuB,CAAC;AAI1D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,QAE1C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,SAAI,UAItD;AAuBD;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,CAAC;AAyCxE,uDAAuD;AACvD,eAAO,MAAM,aAAa,0BAAiD,CAAC;AAE5E,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,0BAA4D,CAAC;AAElG,uDAAuD;AACvD,eAAO,MAAM,aAAa,mCAA0D,CAAC;AAErF,uDAAuD;AACvD,eAAO,MAAM,aAAa,mCAA0D,CAAC;AAErF,yDAAyD;AACzD,eAAO,MAAM,eAAe,4BAAqD,CAAC;AAElF,uDAAuD;AACvD,eAAO,MAAM,aAAa,0BAA+E,CAAC;AAE1G,sDAAsD;AACtD,eAAO,MAAM,YAAY,mCAAyD,CAAC;AAEnF,uDAAuD;AACvD,eAAO,MAAM,eAAe,4BAAsE,CAAC;AAEnG,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,0BAAqE,CAAC"}
@@ -4,13 +4,14 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Bytes, DerObject, X520 } from "#general";
7
+ import { InternalError } from "@matter/general";
7
8
  const YEAR_S = 365 * 24 * 60 * 60;
8
- const EPOCH_OFFSET_S = 10957 * 24 * 60 * 60;
9
+ const MATTER_EPOCH_OFFSET_S = 10957 * 24 * 60 * 60;
9
10
  function matterToJsDate(date) {
10
- return date === 0 ? X520.NON_WELL_DEFINED_DATE : new Date((date + EPOCH_OFFSET_S) * 1e3);
11
+ return date === 0 ? X520.NON_WELL_DEFINED_DATE : new Date((date + MATTER_EPOCH_OFFSET_S) * 1e3);
11
12
  }
12
13
  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
+ return date.getTime() === X520.NON_WELL_DEFINED_DATE.getTime() ? 0 : Math.floor(date.getTime() / 1e3) - MATTER_EPOCH_OFFSET_S + addYears * YEAR_S;
14
15
  }
15
16
  function intTo16Chars(value) {
16
17
  const byteArray = new Uint8Array(8);
@@ -30,33 +31,44 @@ function uInt16To4Chars(value) {
30
31
  dataView.setUint16(0, value);
31
32
  return Bytes.toHex(byteArray).toUpperCase();
32
33
  }
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);
34
+ const MATTER_OID_TO_FIELD_MAP = {};
35
+ const GenericMatterObject = (oidBase, id, fieldName, valueConverter) => {
36
+ const oidHex = `${oidBase}${id.toString(16).padStart(2, "0")}`;
37
+ if (MATTER_OID_TO_FIELD_MAP[oidHex] !== void 0 && MATTER_OID_TO_FIELD_MAP[oidHex] !== fieldName) {
38
+ throw new InternalError(
39
+ `ASN.1 Matter OID mapping for ${oidHex} already exists with a different field name: "${MATTER_OID_TO_FIELD_MAP[oidHex]}" vs "${fieldName}"`
40
+ );
41
+ }
42
+ MATTER_OID_TO_FIELD_MAP[oidHex] = fieldName;
43
+ return (value) => [
44
+ DerObject(oidHex, {
45
+ value: (valueConverter ?? intTo16Chars)(value)
46
+ })
47
+ ];
48
+ };
49
+ const GenericMatterOpCertObject = (id, fieldName, valueConverter) => GenericMatterObject("2b0601040182a27c01", id, fieldName, valueConverter);
50
+ const GenericMatterAttCertObject = (id, fieldName, valueConverter) => GenericMatterObject("2b0601040182a27c02", id, fieldName, valueConverter);
51
+ const NodeId_Matter = GenericMatterOpCertObject(1, "nodeId");
52
+ const FirmwareSigningId_Matter = GenericMatterOpCertObject(2, "firmwareSigningId");
53
+ const IcacId_Matter = GenericMatterOpCertObject(3, "icacId");
54
+ const RcacId_Matter = GenericMatterOpCertObject(4, "rcacId");
55
+ const FabricId_Matter = GenericMatterOpCertObject(5, "fabricId");
56
+ const NocCat_Matter = GenericMatterOpCertObject(6, "caseAuthenticatedTag", uInt16To8Chars);
57
+ const VvsId_Matter = GenericMatterOpCertObject(7, "vvsId");
58
+ const VendorId_Matter = GenericMatterAttCertObject(1, "vendorId", uInt16To4Chars);
59
+ const ProductId_Matter = GenericMatterAttCertObject(2, "productId", uInt16To4Chars);
51
60
  export {
52
61
  FabricId_Matter,
53
62
  FirmwareSigningId_Matter,
54
63
  IcacId_Matter,
64
+ MATTER_EPOCH_OFFSET_S,
65
+ MATTER_OID_TO_FIELD_MAP,
55
66
  NocCat_Matter,
56
67
  NodeId_Matter,
57
68
  ProductId_Matter,
58
69
  RcacId_Matter,
59
70
  VendorId_Matter,
71
+ VvsId_Matter,
60
72
  jsToMatterDate,
61
73
  matterToJsDate
62
74
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
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;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,WAAW,YAAY;AAEvC,SAAS,qBAAqB;AAE9B,MAAM,SAAS,MAAM,KAAK,KAAK;AAExB,MAAM,wBAAwB,QAAQ,KAAK,KAAK;AAIhD,SAAS,eAAe,MAAc;AACzC,SAAO,SAAS,IAAI,KAAK,wBAAwB,IAAI,MAAM,OAAO,yBAAyB,GAAI;AACnG;AAEO,SAAS,eAAe,MAAY,WAAW,GAAG;AACrD,SAAO,KAAK,QAAQ,MAAM,KAAK,sBAAsB,QAAQ,IACvD,IACA,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAI,IAAI,wBAAwB,WAAW;AACjF;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;AAWO,MAAM,0BAAwD,CAAC;AAMtE,MAAM,sBAAsB,CACxB,SACA,IACA,WACA,mBACC;AACD,QAAM,SAAS,GAAG,OAAO,GAAG,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAE5D,MAAI,wBAAwB,MAAM,MAAM,UAAa,wBAAwB,MAAM,MAAM,WAAW;AAChG,UAAM,IAAI;AAAA,MACN,gCAAgC,MAAM,iDAAiD,wBAAwB,MAAM,CAAC,SAAS,SAAS;AAAA,IAC5I;AAAA,EACJ;AACA,0BAAwB,MAAM,IAAI;AAClC,SAAO,CAAC,UAAa;AAAA,IACjB,UAAU,QAAQ;AAAA,MACd,QAAQ,kBAAkB,cAAc,KAAY;AAAA,IACxD,CAAC;AAAA,EACL;AACJ;AAMA,MAAM,4BAA4B,CAAI,IAAY,WAAmB,mBACjE,oBAAuB,sBAAsB,IAAI,WAAW,cAAc;AAM9E,MAAM,6BAA6B,CAAI,IAAY,WAAmB,mBAClE,oBAAuB,sBAAsB,IAAI,WAAW,cAAc;AAGvE,MAAM,gBAAgB,0BAAkC,GAAG,QAAQ;AAGnE,MAAM,2BAA2B,0BAAkC,GAAG,mBAAmB;AAGzF,MAAM,gBAAgB,0BAA2C,GAAG,QAAQ;AAG5E,MAAM,gBAAgB,0BAA2C,GAAG,QAAQ;AAG5E,MAAM,kBAAkB,0BAAoC,GAAG,UAAU;AAGzE,MAAM,gBAAgB,0BAAkC,GAAG,wBAAwB,cAAc;AAGjG,MAAM,eAAe,0BAA2C,GAAG,OAAO;AAG1E,MAAM,kBAAkB,2BAAqC,GAAG,YAAY,cAAc;AAG1F,MAAM,mBAAmB,2BAAmC,GAAG,aAAa,cAAc;",
5
5
  "names": []
6
6
  }