@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.
- package/dist/cjs/certificate/AttestationCertificateManager.d.ts.map +1 -1
- package/dist/cjs/certificate/AttestationCertificateManager.js +26 -22
- package/dist/cjs/certificate/AttestationCertificateManager.js.map +1 -1
- package/dist/cjs/certificate/CertificateAuthority.d.ts +1 -2
- package/dist/cjs/certificate/CertificateAuthority.d.ts.map +1 -1
- package/dist/cjs/certificate/CertificateAuthority.js +22 -29
- package/dist/cjs/certificate/CertificateAuthority.js.map +1 -1
- package/dist/cjs/certificate/DeviceCertification.d.ts.map +1 -1
- package/dist/cjs/certificate/DeviceCertification.js +2 -6
- package/dist/cjs/certificate/DeviceCertification.js.map +1 -1
- package/dist/cjs/certificate/index.d.ts +7 -2
- package/dist/cjs/certificate/index.d.ts.map +1 -1
- package/dist/cjs/certificate/index.js +14 -2
- package/dist/cjs/certificate/index.js.map +1 -1
- package/dist/cjs/certificate/kinds/AttestationCertificates.d.ts +34 -0
- package/dist/cjs/certificate/kinds/AttestationCertificates.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/AttestationCertificates.js +64 -0
- package/dist/cjs/certificate/kinds/AttestationCertificates.js.map +6 -0
- package/dist/cjs/certificate/kinds/CertificationDeclaration.d.ts +23 -0
- package/dist/cjs/certificate/kinds/CertificationDeclaration.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/CertificationDeclaration.js +86 -0
- package/dist/cjs/certificate/kinds/CertificationDeclaration.js.map +6 -0
- package/dist/cjs/certificate/kinds/Icac.d.ts +29 -0
- package/dist/cjs/certificate/kinds/Icac.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/Icac.js +138 -0
- package/dist/cjs/certificate/kinds/Icac.js.map +6 -0
- package/dist/cjs/certificate/kinds/Noc.d.ts +27 -0
- package/dist/cjs/certificate/kinds/Noc.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/Noc.js +148 -0
- package/dist/cjs/certificate/kinds/Noc.js.map +6 -0
- package/dist/cjs/certificate/kinds/OperationalBase.d.ts +24 -0
- package/dist/cjs/certificate/kinds/OperationalBase.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/OperationalBase.js +68 -0
- package/dist/cjs/certificate/kinds/OperationalBase.js.map +6 -0
- package/dist/cjs/certificate/kinds/Rcac.d.ts +25 -0
- package/dist/cjs/certificate/kinds/Rcac.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/Rcac.js +119 -0
- package/dist/cjs/certificate/kinds/Rcac.js.map +6 -0
- package/dist/cjs/certificate/kinds/X509Base.d.ts +92 -0
- package/dist/cjs/certificate/kinds/X509Base.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/X509Base.js +344 -0
- package/dist/cjs/certificate/kinds/X509Base.js.map +6 -0
- package/dist/cjs/certificate/kinds/common.d.ts +18 -0
- package/dist/cjs/certificate/kinds/common.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/common.js +42 -0
- package/dist/cjs/certificate/kinds/common.js.map +6 -0
- package/dist/cjs/certificate/kinds/definitions/asn.d.ts +25 -0
- package/dist/cjs/certificate/kinds/definitions/asn.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/definitions/asn.js +83 -0
- package/dist/cjs/certificate/kinds/definitions/asn.js.map +6 -0
- package/dist/cjs/certificate/kinds/definitions/attestation.d.ts +44 -0
- package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/definitions/attestation.js +22 -0
- package/dist/cjs/certificate/kinds/definitions/attestation.js.map +6 -0
- package/dist/cjs/certificate/kinds/definitions/base.d.ts +52 -0
- package/dist/cjs/certificate/kinds/definitions/base.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/definitions/base.js +43 -0
- package/dist/cjs/certificate/kinds/definitions/base.js.map +6 -0
- package/dist/cjs/certificate/kinds/definitions/certification-declaration.d.ts +18 -0
- package/dist/cjs/certificate/kinds/definitions/certification-declaration.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/definitions/certification-declaration.js +50 -0
- package/dist/cjs/certificate/kinds/definitions/certification-declaration.js.map +6 -0
- package/dist/cjs/certificate/kinds/definitions/operational.d.ts +368 -0
- package/dist/cjs/certificate/kinds/definitions/operational.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/definitions/operational.js +149 -0
- package/dist/cjs/certificate/kinds/definitions/operational.js.map +6 -0
- package/dist/cjs/certificate/kinds/index.d.ts +12 -0
- package/dist/cjs/certificate/kinds/index.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/index.js +29 -0
- package/dist/cjs/certificate/kinds/index.js.map +6 -0
- package/dist/cjs/fabric/Fabric.d.ts +1 -2
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +28 -31
- package/dist/cjs/fabric/Fabric.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.js +2 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseClient.js +3 -3
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseServer.js +2 -2
- package/dist/cjs/session/case/CaseServer.js.map +1 -1
- package/dist/esm/certificate/AttestationCertificateManager.d.ts.map +1 -1
- package/dist/esm/certificate/AttestationCertificateManager.js +20 -16
- package/dist/esm/certificate/AttestationCertificateManager.js.map +1 -1
- package/dist/esm/certificate/CertificateAuthority.d.ts +1 -2
- package/dist/esm/certificate/CertificateAuthority.d.ts.map +1 -1
- package/dist/esm/certificate/CertificateAuthority.js +18 -30
- package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
- package/dist/esm/certificate/DeviceCertification.d.ts.map +1 -1
- package/dist/esm/certificate/DeviceCertification.js +2 -6
- package/dist/esm/certificate/DeviceCertification.js.map +1 -1
- package/dist/esm/certificate/index.d.ts +7 -2
- package/dist/esm/certificate/index.d.ts.map +1 -1
- package/dist/esm/certificate/index.js +10 -2
- package/dist/esm/certificate/index.js.map +1 -1
- package/dist/esm/certificate/kinds/AttestationCertificates.d.ts +34 -0
- package/dist/esm/certificate/kinds/AttestationCertificates.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/AttestationCertificates.js +44 -0
- package/dist/esm/certificate/kinds/AttestationCertificates.js.map +6 -0
- package/dist/esm/certificate/kinds/CertificationDeclaration.d.ts +23 -0
- package/dist/esm/certificate/kinds/CertificationDeclaration.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/CertificationDeclaration.js +66 -0
- package/dist/esm/certificate/kinds/CertificationDeclaration.js.map +6 -0
- package/dist/esm/certificate/kinds/Icac.d.ts +29 -0
- package/dist/esm/certificate/kinds/Icac.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/Icac.js +118 -0
- package/dist/esm/certificate/kinds/Icac.js.map +6 -0
- package/dist/esm/certificate/kinds/Noc.d.ts +27 -0
- package/dist/esm/certificate/kinds/Noc.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/Noc.js +128 -0
- package/dist/esm/certificate/kinds/Noc.js.map +6 -0
- package/dist/esm/certificate/kinds/OperationalBase.d.ts +24 -0
- package/dist/esm/certificate/kinds/OperationalBase.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/OperationalBase.js +48 -0
- package/dist/esm/certificate/kinds/OperationalBase.js.map +6 -0
- package/dist/esm/certificate/kinds/Rcac.d.ts +25 -0
- package/dist/esm/certificate/kinds/Rcac.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/Rcac.js +99 -0
- package/dist/esm/certificate/kinds/Rcac.js.map +6 -0
- package/dist/esm/certificate/kinds/X509Base.d.ts +92 -0
- package/dist/esm/certificate/kinds/X509Base.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/X509Base.js +347 -0
- package/dist/esm/certificate/kinds/X509Base.js.map +6 -0
- package/dist/esm/certificate/kinds/common.d.ts +18 -0
- package/dist/esm/certificate/kinds/common.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/common.js +22 -0
- package/dist/esm/certificate/kinds/common.js.map +6 -0
- package/dist/esm/certificate/kinds/definitions/asn.d.ts +25 -0
- package/dist/esm/certificate/kinds/definitions/asn.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/definitions/asn.js +63 -0
- package/dist/esm/certificate/kinds/definitions/asn.js.map +6 -0
- package/dist/esm/certificate/kinds/definitions/attestation.d.ts +44 -0
- package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/definitions/attestation.js +6 -0
- package/dist/esm/certificate/kinds/definitions/attestation.js.map +6 -0
- package/dist/esm/certificate/kinds/definitions/base.d.ts +52 -0
- package/dist/esm/certificate/kinds/definitions/base.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/definitions/base.js +23 -0
- package/dist/esm/certificate/kinds/definitions/base.js.map +6 -0
- package/dist/esm/certificate/kinds/definitions/certification-declaration.d.ts +18 -0
- package/dist/esm/certificate/kinds/definitions/certification-declaration.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/definitions/certification-declaration.js +41 -0
- package/dist/esm/certificate/kinds/definitions/certification-declaration.js.map +6 -0
- package/dist/esm/certificate/kinds/definitions/operational.d.ts +368 -0
- package/dist/esm/certificate/kinds/definitions/operational.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/definitions/operational.js +148 -0
- package/dist/esm/certificate/kinds/definitions/operational.js.map +6 -0
- package/dist/esm/certificate/kinds/index.d.ts +12 -0
- package/dist/esm/certificate/kinds/index.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/index.js +12 -0
- package/dist/esm/certificate/kinds/index.js.map +6 -0
- package/dist/esm/fabric/Fabric.d.ts +1 -2
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +28 -36
- package/dist/esm/fabric/Fabric.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.js +2 -1
- package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
- package/dist/esm/session/case/CaseClient.js +3 -3
- package/dist/esm/session/case/CaseClient.js.map +1 -1
- package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
- package/dist/esm/session/case/CaseServer.js +2 -2
- package/dist/esm/session/case/CaseServer.js.map +1 -1
- package/package.json +6 -6
- package/src/certificate/AttestationCertificateManager.ts +20 -16
- package/src/certificate/CertificateAuthority.ts +18 -35
- package/src/certificate/DeviceCertification.ts +2 -6
- package/src/certificate/index.ts +7 -2
- package/src/certificate/kinds/AttestationCertificates.ts +48 -0
- package/src/certificate/kinds/CertificationDeclaration.ts +91 -0
- package/src/certificate/kinds/Icac.ts +156 -0
- package/src/certificate/kinds/Noc.ts +164 -0
- package/src/certificate/kinds/OperationalBase.ts +72 -0
- package/src/certificate/kinds/Rcac.ts +126 -0
- package/src/certificate/kinds/X509Base.ts +380 -0
- package/src/certificate/kinds/common.ts +24 -0
- package/src/certificate/kinds/definitions/asn.ts +97 -0
- package/src/certificate/kinds/definitions/attestation.ts +46 -0
- package/src/certificate/kinds/definitions/base.ts +43 -0
- package/src/certificate/kinds/definitions/certification-declaration.ts +38 -0
- package/src/certificate/kinds/definitions/operational.ts +179 -0
- package/src/certificate/kinds/index.ts +12 -0
- package/src/fabric/Fabric.ts +28 -40
- package/src/peer/ControllerCommissioningFlow.ts +2 -1
- package/src/session/case/CaseClient.ts +3 -3
- package/src/session/case/CaseServer.ts +2 -2
- package/dist/cjs/certificate/CertificateManager.d.ts +0 -578
- package/dist/cjs/certificate/CertificateManager.d.ts.map +0 -1
- package/dist/cjs/certificate/CertificateManager.js +0 -843
- package/dist/cjs/certificate/CertificateManager.js.map +0 -6
- package/dist/cjs/certificate/CertificationDeclarationManager.d.ts +0 -11
- package/dist/cjs/certificate/CertificationDeclarationManager.d.ts.map +0 -1
- package/dist/cjs/certificate/CertificationDeclarationManager.js +0 -54
- package/dist/cjs/certificate/CertificationDeclarationManager.js.map +0 -6
- package/dist/esm/certificate/CertificateManager.d.ts +0 -578
- package/dist/esm/certificate/CertificateManager.d.ts.map +0 -1
- package/dist/esm/certificate/CertificateManager.js +0 -870
- package/dist/esm/certificate/CertificateManager.js.map +0 -6
- package/dist/esm/certificate/CertificationDeclarationManager.d.ts +0 -11
- package/dist/esm/certificate/CertificationDeclarationManager.d.ts.map +0 -1
- package/dist/esm/certificate/CertificationDeclarationManager.js +0 -34
- package/dist/esm/certificate/CertificationDeclarationManager.js.map +0 -6
- package/src/certificate/CertificateManager.ts +0 -1176
- 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
|
+
}
|