@matter/protocol 0.15.0-alpha.0-20250620-16e218ed3 → 0.15.0-alpha.0-20250624-e8c89f458
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/kinds/X509Base.d.ts +1 -1
- package/dist/cjs/certificate/kinds/X509Base.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/X509Base.js +40 -14
- package/dist/cjs/certificate/kinds/X509Base.js.map +1 -1
- package/dist/cjs/dcl/DclClient.d.ts +26 -0
- package/dist/cjs/dcl/DclClient.d.ts.map +1 -0
- package/dist/cjs/dcl/DclClient.js +119 -0
- package/dist/cjs/dcl/DclClient.js.map +6 -0
- package/dist/cjs/dcl/DclRestApiTypes.d.ts +49 -0
- package/dist/cjs/dcl/DclRestApiTypes.d.ts.map +1 -0
- package/dist/cjs/dcl/DclRestApiTypes.js +22 -0
- package/dist/cjs/dcl/DclRestApiTypes.js.map +6 -0
- package/dist/cjs/dcl/index.d.ts +7 -0
- package/dist/cjs/dcl/index.d.ts.map +1 -0
- package/dist/cjs/dcl/index.js +24 -0
- package/dist/cjs/dcl/index.js.map +6 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/certificate/kinds/X509Base.d.ts +1 -1
- package/dist/esm/certificate/kinds/X509Base.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/X509Base.js +40 -14
- package/dist/esm/certificate/kinds/X509Base.js.map +1 -1
- package/dist/esm/dcl/DclClient.d.ts +26 -0
- package/dist/esm/dcl/DclClient.d.ts.map +1 -0
- package/dist/esm/dcl/DclClient.js +99 -0
- package/dist/esm/dcl/DclClient.js.map +6 -0
- package/dist/esm/dcl/DclRestApiTypes.d.ts +49 -0
- package/dist/esm/dcl/DclRestApiTypes.d.ts.map +1 -0
- package/dist/esm/dcl/DclRestApiTypes.js +6 -0
- package/dist/esm/dcl/DclRestApiTypes.js.map +6 -0
- package/dist/esm/dcl/index.d.ts +7 -0
- package/dist/esm/dcl/index.d.ts.map +1 -0
- package/dist/esm/dcl/index.js +7 -0
- package/dist/esm/dcl/index.js.map +6 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +6 -6
- package/src/certificate/kinds/X509Base.ts +54 -18
- package/src/dcl/DclClient.ts +140 -0
- package/src/dcl/DclRestApiTypes.ts +55 -0
- package/src/dcl/index.ts +7 -0
- package/src/index.ts +1 -0
|
@@ -87,6 +87,6 @@ export declare abstract class X509Base<CT extends X509Certificate> {
|
|
|
87
87
|
/**
|
|
88
88
|
* Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
|
|
89
89
|
*/
|
|
90
|
-
static getPublicKeyFromCsr(crypto: Crypto,
|
|
90
|
+
static getPublicKeyFromCsr(crypto: Crypto, encodedCsr: Uint8Array): Promise<Uint8Array<ArrayBufferLike>>;
|
|
91
91
|
}
|
|
92
92
|
//# sourceMappingURL=X509Base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"X509Base.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/X509Base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,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,
|
|
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,UAAU,EAAE,UAAU;CAyE1E"}
|
|
@@ -314,24 +314,50 @@ class X509Base {
|
|
|
314
314
|
/**
|
|
315
315
|
* Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
|
|
316
316
|
*/
|
|
317
|
-
static async getPublicKeyFromCsr(crypto,
|
|
318
|
-
const { [import_general.DerKey.Elements]: rootElements } = import_general.DerCodec.decode(
|
|
319
|
-
if (rootElements?.length !== 3)
|
|
317
|
+
static async getPublicKeyFromCsr(crypto, encodedCsr) {
|
|
318
|
+
const { [import_general.DerKey.Elements]: rootElements } = import_general.DerCodec.decode(encodedCsr);
|
|
319
|
+
if (rootElements?.length !== 3) {
|
|
320
|
+
throw new import_common.CertificateError("Invalid CSR data");
|
|
321
|
+
}
|
|
320
322
|
const [requestNode, signAlgorithmNode, signatureNode] = rootElements;
|
|
321
323
|
const { [import_general.DerKey.Elements]: requestElements } = requestNode;
|
|
322
|
-
if (requestElements?.length !== 4)
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
324
|
+
if (requestElements?.length !== 4) {
|
|
325
|
+
throw new import_common.CertificateError("Invalid CSR data");
|
|
326
|
+
}
|
|
327
|
+
const [versionNode, subjectNode, publicKeyNode] = requestElements;
|
|
328
|
+
const requestVersionBytes = versionNode[import_general.DerKey.Bytes];
|
|
329
|
+
if (requestVersionBytes.length !== 1 || requestVersionBytes[0] !== 0) {
|
|
330
|
+
throw new import_common.CertificateError(`Unsupported CSR version ${requestVersionBytes[0]}`);
|
|
331
|
+
}
|
|
332
|
+
if (!subjectNode[import_general.DerKey.Elements]?.length) {
|
|
333
|
+
throw new import_common.CertificateError("Missing subject in CSR data");
|
|
334
|
+
}
|
|
326
335
|
const { [import_general.DerKey.Elements]: publicKeyElements } = publicKeyNode;
|
|
327
|
-
if (publicKeyElements?.length !== 2)
|
|
328
|
-
|
|
336
|
+
if (publicKeyElements?.length !== 2) {
|
|
337
|
+
throw new import_common.CertificateError("Invalid CSR data");
|
|
338
|
+
}
|
|
339
|
+
const [publicKeyTypeNode, publicKeyBytesNode] = publicKeyElements;
|
|
340
|
+
const { [import_general.DerKey.Elements]: publicKeyTypeNodeElements } = publicKeyTypeNode;
|
|
341
|
+
if (publicKeyTypeNodeElements?.length !== 2) {
|
|
342
|
+
throw new import_common.CertificateError("Invalid public key type in CSR");
|
|
343
|
+
}
|
|
344
|
+
if (!import_general.Bytes.areEqual(
|
|
345
|
+
publicKeyTypeNodeElements[0][import_general.DerKey.Bytes],
|
|
346
|
+
import_general.X962.PublicKeyAlgorithmEcPublicKey[import_general.DerKey.Bytes]
|
|
347
|
+
)) {
|
|
348
|
+
throw new import_common.CertificateError("Unsupported public key algorithm in CSR");
|
|
349
|
+
}
|
|
350
|
+
if (!import_general.Bytes.areEqual(
|
|
351
|
+
publicKeyTypeNodeElements[1][import_general.DerKey.Bytes],
|
|
352
|
+
import_general.X962.PublicKeyAlgorithmEcPublicKeyP256[import_general.DerKey.Bytes]
|
|
353
|
+
)) {
|
|
354
|
+
throw new import_common.CertificateError("Unsupported public key curve in CSR");
|
|
355
|
+
}
|
|
329
356
|
const publicKey = publicKeyBytesNode[import_general.DerKey.Bytes];
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
throw new import_common.CertificateError("Unsupported signature type");
|
|
357
|
+
const signatureAlgorithmBytes = signAlgorithmNode[import_general.DerKey.Elements]?.[0]?.[import_general.DerKey.Bytes];
|
|
358
|
+
if (signatureAlgorithmBytes === void 0 || !import_general.Bytes.areEqual(import_general.X962.EcdsaWithSHA256[import_general.DerKey.ObjectId][import_general.DerKey.Bytes], signatureAlgorithmBytes)) {
|
|
359
|
+
throw new import_common.CertificateError("Unsupported signature algorithm in CSR");
|
|
360
|
+
}
|
|
335
361
|
await crypto.verifyEcdsa(
|
|
336
362
|
(0, import_general.PublicKey)(publicKey),
|
|
337
363
|
import_general.DerCodec.encode(requestNode),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/certificate/kinds/X509Base.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DclApiErrorResponse, DclPkiRootCertificateSubjectReference } from "#dcl/DclRestApiTypes.js";
|
|
7
|
+
import { MatterError } from "#general";
|
|
8
|
+
/** Base class for all DCL-related errors */
|
|
9
|
+
export declare class MatterDclError extends MatterError {
|
|
10
|
+
}
|
|
11
|
+
/** Error thrown when fetching data from DCL fails */
|
|
12
|
+
export declare class MatterDclResponseError extends MatterDclError {
|
|
13
|
+
constructor(path: string, error: DclApiErrorResponse);
|
|
14
|
+
}
|
|
15
|
+
/** A client clas to use "fetch" to get REST DAta from DCL (Decentraland) */
|
|
16
|
+
export declare class DclClient {
|
|
17
|
+
#private;
|
|
18
|
+
private readonly production;
|
|
19
|
+
constructor(production?: boolean);
|
|
20
|
+
fetchRootCertificateList(): Promise<DclPkiRootCertificateSubjectReference[]>;
|
|
21
|
+
fetchRootCertificateBySubject(subject: DclPkiRootCertificateSubjectReference): Promise<import("@matter/types").ProductAttestationDclSchema[]>;
|
|
22
|
+
fetchModelByVidPid(vid: number, pid: number): Promise<import("@matter/types").DeviceModelDclSchema>;
|
|
23
|
+
fetchModelVersionsByVidPid(vid: number, pid: number): Promise<number[]>;
|
|
24
|
+
fetchModelVersionByVidPidSoftwareVersion(vid: number, pid: number, softwareVersion: number): Promise<import("@matter/types").DeviceSoftwareVersionModelDclSchema>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=DclClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DclClient.d.ts","sourceRoot":"","sources":["../../../src/dcl/DclClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACH,mBAAmB,EAMnB,qCAAqC,EACxC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKvC,4CAA4C;AAC5C,qBAAa,cAAe,SAAQ,WAAW;CAAG;AAElD,qDAAqD;AACrD,qBAAa,sBAAuB,SAAQ,cAAc;gBAC1C,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;CAGvD;AAED,4EAA4E;AAC5E,qBAAa,SAAS;;IAGN,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,GAAE,OAAc;IAgCjD,wBAAwB;IAUxB,6BAA6B,CAAC,OAAO,EAAE,qCAAqC;IAiB5E,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAe3C,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAenD,wCAAwC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;CAiBnG"}
|
|
@@ -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 DclClient_exports = {};
|
|
20
|
+
__export(DclClient_exports, {
|
|
21
|
+
DclClient: () => DclClient,
|
|
22
|
+
MatterDclError: () => MatterDclError,
|
|
23
|
+
MatterDclResponseError: () => MatterDclResponseError
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(DclClient_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 DCL_PRODUCTION_URL = "https://on.dcl.csa-iot.org";
|
|
33
|
+
const DCL_TEST_URL = "https://on.test-net.dcl.csa-iot.org";
|
|
34
|
+
class MatterDclError extends import_general.MatterError {
|
|
35
|
+
}
|
|
36
|
+
class MatterDclResponseError extends MatterDclError {
|
|
37
|
+
constructor(path, error) {
|
|
38
|
+
super(`Error fetching ${path} from DCL: ${error.code} - ${error.message}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
class DclClient {
|
|
42
|
+
constructor(production = true) {
|
|
43
|
+
this.production = production;
|
|
44
|
+
this.#baseUrl = this.production ? DCL_PRODUCTION_URL : DCL_TEST_URL;
|
|
45
|
+
}
|
|
46
|
+
#baseUrl;
|
|
47
|
+
async #fetchJson(path) {
|
|
48
|
+
const url = new URL(path, this.#baseUrl);
|
|
49
|
+
try {
|
|
50
|
+
const response = await fetch(url.toString(), {
|
|
51
|
+
method: "GET",
|
|
52
|
+
headers: {
|
|
53
|
+
"Content-Type": "application/json"
|
|
54
|
+
},
|
|
55
|
+
signal: AbortSignal.timeout(5e3)
|
|
56
|
+
// 5 seconds timeout
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
throw new MatterDclResponseError(path, await response.json());
|
|
60
|
+
}
|
|
61
|
+
return await response.json();
|
|
62
|
+
} catch (error) {
|
|
63
|
+
if (error instanceof MatterDclResponseError) {
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
throw new MatterDclResponseError(path, {
|
|
67
|
+
code: 500,
|
|
68
|
+
message: error instanceof Error ? error.message : "Unknown Error",
|
|
69
|
+
details: []
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async fetchRootCertificateList() {
|
|
74
|
+
const certList = await this.#fetchJson("/certificates/approved");
|
|
75
|
+
if (certList?.approvedRootCertificates?.schemaVersion !== 0) {
|
|
76
|
+
throw new MatterDclError(
|
|
77
|
+
`Unsupported DCL Root Certificate schema version: ${certList.approvedRootCertificates.schemaVersion}`
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
return certList.approvedRootCertificates.certs;
|
|
81
|
+
}
|
|
82
|
+
async fetchRootCertificateBySubject(subject) {
|
|
83
|
+
const path = `/certificates/${encodeURIComponent(subject.subject)}/${encodeURIComponent(subject.subjectKeyId)}`;
|
|
84
|
+
const response = await this.#fetchJson(path);
|
|
85
|
+
if (!response || !response.approvedRootCertificates || response.approvedRootCertificates.subject !== subject.subject || response.approvedRootCertificates.subjectKeyId !== subject.subjectKeyId || response.approvedRootCertificates.schemaVersion !== 0) {
|
|
86
|
+
throw new MatterDclError(
|
|
87
|
+
`Root certificate not found for subject: ${subject.subject}, subjectKeyId: ${subject.subjectKeyId}`
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
return response.approvedRootCertificates.certs;
|
|
91
|
+
}
|
|
92
|
+
async fetchModelByVidPid(vid, pid) {
|
|
93
|
+
const path = `/models/model/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}`;
|
|
94
|
+
const response = await this.#fetchJson(path);
|
|
95
|
+
if (!response || !response.model || response.model.vid !== vid || response.model.pid !== pid || response.model.schemaVersion !== 0) {
|
|
96
|
+
throw new MatterDclError(`Model not found for VID: ${vid}, PID: ${pid}`);
|
|
97
|
+
}
|
|
98
|
+
return response.model;
|
|
99
|
+
}
|
|
100
|
+
async fetchModelVersionsByVidPid(vid, pid) {
|
|
101
|
+
const path = `/models/versions/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}`;
|
|
102
|
+
const response = await this.#fetchJson(path);
|
|
103
|
+
if (!response || !response.modelVersions || response.modelVersions.vid !== vid || response.modelVersions.pid !== pid || response.modelVersions.schemaVersion !== 0) {
|
|
104
|
+
throw new MatterDclError(`Model versions not found for VID: ${vid}, PID: ${pid}`);
|
|
105
|
+
}
|
|
106
|
+
return response.modelVersions.softwareVersions;
|
|
107
|
+
}
|
|
108
|
+
async fetchModelVersionByVidPidSoftwareVersion(vid, pid, softwareVersion) {
|
|
109
|
+
const path = `/models/versions/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}/${encodeURIComponent(softwareVersion)}`;
|
|
110
|
+
const response = await this.#fetchJson(path);
|
|
111
|
+
if (!response || !response.modelVersion || response.modelVersion.vid !== vid || response.modelVersion.pid !== pid || response.modelVersion.softwareVersion !== softwareVersion || response.modelVersion.schemaVersion !== 0) {
|
|
112
|
+
throw new MatterDclError(
|
|
113
|
+
`Model version not found for VID: ${vid}, PID: ${pid}, Software Version: ${softwareVersion}`
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
return response.modelVersion;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=DclClient.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/dcl/DclClient.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DeviceModelDclSchema, DeviceSoftwareVersionModelDclSchema, ProductAttestationDclSchema } from "@matter/types";
|
|
7
|
+
export interface DclApiErrorResponse {
|
|
8
|
+
code: number;
|
|
9
|
+
message: string;
|
|
10
|
+
details: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface DclPkiRootCertificateSubjectReference {
|
|
13
|
+
subject: string;
|
|
14
|
+
subjectKeyId: string;
|
|
15
|
+
}
|
|
16
|
+
/** Response for /dcl/pki/certificates/approved */
|
|
17
|
+
export interface DclPkiRootCertificatesResponse {
|
|
18
|
+
approvedRootCertificates: {
|
|
19
|
+
certs: DclPkiRootCertificateSubjectReference[];
|
|
20
|
+
schemaVersion: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Response for /dcl/pki/certificates/{subject}/{subjectKeyId} */
|
|
24
|
+
export interface DclPkiCertificateResponse {
|
|
25
|
+
approvedRootCertificates: {
|
|
26
|
+
subject: string;
|
|
27
|
+
subjectKeyId: string;
|
|
28
|
+
certs: ProductAttestationDclSchema[];
|
|
29
|
+
schemaVersion: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Response for /dcl/models/model/{vid}/{pid} */
|
|
33
|
+
export interface DclModelModelsWithVidPidResponse {
|
|
34
|
+
model: DeviceModelDclSchema;
|
|
35
|
+
}
|
|
36
|
+
/** Response for /dcl/model/versions/{vid}/{pid} */
|
|
37
|
+
export interface DclModelVersionsWithVidPidResponse {
|
|
38
|
+
modelVersions: {
|
|
39
|
+
vid: number;
|
|
40
|
+
pid: number;
|
|
41
|
+
softwareVersions: number[];
|
|
42
|
+
schemaVersion: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Response for /dcl/model/versions/{vid}/{pid}/{softwareVersion} */
|
|
46
|
+
export interface DclModelVersionWithVidPidSoftwareVersionResponse {
|
|
47
|
+
modelVersion: DeviceSoftwareVersionModelDclSchema;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=DclRestApiTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DclRestApiTypes.d.ts","sourceRoot":"","sources":["../../../src/dcl/DclRestApiTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEvH,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,qCAAqC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,kDAAkD;AAClD,MAAM,WAAW,8BAA8B;IAC3C,wBAAwB,EAAE;QACtB,KAAK,EAAE,qCAAqC,EAAE,CAAC;QAC/C,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;CACL;AAED,kEAAkE;AAClE,MAAM,WAAW,yBAAyB;IACtC,wBAAwB,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,2BAA2B,EAAE,CAAC;QACrC,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;CACL;AAED,iDAAiD;AACjD,MAAM,WAAW,gCAAgC;IAC7C,KAAK,EAAE,oBAAoB,CAAC;CAC/B;AAED,mDAAmD;AACnD,MAAM,WAAW,kCAAkC;IAC/C,aAAa,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;CACL;AAED,qEAAqE;AACrE,MAAM,WAAW,gDAAgD;IAC7D,YAAY,EAAE,mCAAmC,CAAC;CACrD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var DclRestApiTypes_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(DclRestApiTypes_exports);
|
|
17
|
+
/**
|
|
18
|
+
* @license
|
|
19
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
20
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
+
*/
|
|
22
|
+
//# sourceMappingURL=DclRestApiTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dcl/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var dcl_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(dcl_exports);
|
|
18
|
+
__reExport(dcl_exports, require("./DclClient.js"), module.exports);
|
|
19
|
+
/**
|
|
20
|
+
* @license
|
|
21
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
22
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
23
|
+
*/
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from "./certificate/index.js";
|
|
|
9
9
|
export * from "./cluster/index.js";
|
|
10
10
|
export * from "./codec/index.js";
|
|
11
11
|
export * from "./common/index.js";
|
|
12
|
+
export * from "./dcl/index.js";
|
|
12
13
|
export * from "./events/index.js";
|
|
13
14
|
export * from "./fabric/index.js";
|
|
14
15
|
export * from "./groups/index.js";
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -21,6 +21,7 @@ __reExport(src_exports, require("./certificate/index.js"), module.exports);
|
|
|
21
21
|
__reExport(src_exports, require("./cluster/index.js"), module.exports);
|
|
22
22
|
__reExport(src_exports, require("./codec/index.js"), module.exports);
|
|
23
23
|
__reExport(src_exports, require("./common/index.js"), module.exports);
|
|
24
|
+
__reExport(src_exports, require("./dcl/index.js"), module.exports);
|
|
24
25
|
__reExport(src_exports, require("./events/index.js"), module.exports);
|
|
25
26
|
__reExport(src_exports, require("./fabric/index.js"), module.exports);
|
|
26
27
|
__reExport(src_exports, require("./groups/index.js"), module.exports);
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,8BANd;AAOA,wBAAc,2BAPd;AAQA,wBAAc,mCARd;AASA,wBAAc,+BATd;AAUA,wBAAc,6BAVd;AAWA,wBAAc,8BAXd;AAYA,wBAAc,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,8BANd;AAOA,wBAAc,2BAPd;AAQA,wBAAc,mCARd;AASA,wBAAc,+BATd;AAUA,wBAAc,6BAVd;AAWA,wBAAc,8BAXd;AAYA,wBAAc,2BAZd;AAaA,wBAAc,8BAbd;AAcA,wBAAc,8BAdd;AAeA,wBAAc,8BAfd;AAgBA,wBAAc,mCAhBd;AAiBA,wBAAc,4BAjBd;AAkBA,wBAAc,4BAlBd;AAmBA,wBAAc,gCAnBd;AAoBA,wBAAc,qCApBd;AAqBA,wBAAc,+BArBd;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -87,6 +87,6 @@ export declare abstract class X509Base<CT extends X509Certificate> {
|
|
|
87
87
|
/**
|
|
88
88
|
* Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
|
|
89
89
|
*/
|
|
90
|
-
static getPublicKeyFromCsr(crypto: Crypto,
|
|
90
|
+
static getPublicKeyFromCsr(crypto: Crypto, encodedCsr: Uint8Array): Promise<Uint8Array<ArrayBufferLike>>;
|
|
91
91
|
}
|
|
92
92
|
//# sourceMappingURL=X509Base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"X509Base.d.ts","sourceRoot":"","sources":["../../../../src/certificate/kinds/X509Base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,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,
|
|
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,UAAU,EAAE,UAAU;CAyE1E"}
|
|
@@ -314,24 +314,50 @@ class X509Base {
|
|
|
314
314
|
/**
|
|
315
315
|
* Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
|
|
316
316
|
*/
|
|
317
|
-
static async getPublicKeyFromCsr(crypto,
|
|
318
|
-
const { [DerKey.Elements]: rootElements } = DerCodec.decode(
|
|
319
|
-
if (rootElements?.length !== 3)
|
|
317
|
+
static async getPublicKeyFromCsr(crypto, encodedCsr) {
|
|
318
|
+
const { [DerKey.Elements]: rootElements } = DerCodec.decode(encodedCsr);
|
|
319
|
+
if (rootElements?.length !== 3) {
|
|
320
|
+
throw new CertificateError("Invalid CSR data");
|
|
321
|
+
}
|
|
320
322
|
const [requestNode, signAlgorithmNode, signatureNode] = rootElements;
|
|
321
323
|
const { [DerKey.Elements]: requestElements } = requestNode;
|
|
322
|
-
if (requestElements?.length !== 4)
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
324
|
+
if (requestElements?.length !== 4) {
|
|
325
|
+
throw new CertificateError("Invalid CSR data");
|
|
326
|
+
}
|
|
327
|
+
const [versionNode, subjectNode, publicKeyNode] = requestElements;
|
|
328
|
+
const requestVersionBytes = versionNode[DerKey.Bytes];
|
|
329
|
+
if (requestVersionBytes.length !== 1 || requestVersionBytes[0] !== 0) {
|
|
330
|
+
throw new CertificateError(`Unsupported CSR version ${requestVersionBytes[0]}`);
|
|
331
|
+
}
|
|
332
|
+
if (!subjectNode[DerKey.Elements]?.length) {
|
|
333
|
+
throw new CertificateError("Missing subject in CSR data");
|
|
334
|
+
}
|
|
326
335
|
const { [DerKey.Elements]: publicKeyElements } = publicKeyNode;
|
|
327
|
-
if (publicKeyElements?.length !== 2)
|
|
328
|
-
|
|
336
|
+
if (publicKeyElements?.length !== 2) {
|
|
337
|
+
throw new CertificateError("Invalid CSR data");
|
|
338
|
+
}
|
|
339
|
+
const [publicKeyTypeNode, publicKeyBytesNode] = publicKeyElements;
|
|
340
|
+
const { [DerKey.Elements]: publicKeyTypeNodeElements } = publicKeyTypeNode;
|
|
341
|
+
if (publicKeyTypeNodeElements?.length !== 2) {
|
|
342
|
+
throw new CertificateError("Invalid public key type in CSR");
|
|
343
|
+
}
|
|
344
|
+
if (!Bytes.areEqual(
|
|
345
|
+
publicKeyTypeNodeElements[0][DerKey.Bytes],
|
|
346
|
+
X962.PublicKeyAlgorithmEcPublicKey[DerKey.Bytes]
|
|
347
|
+
)) {
|
|
348
|
+
throw new CertificateError("Unsupported public key algorithm in CSR");
|
|
349
|
+
}
|
|
350
|
+
if (!Bytes.areEqual(
|
|
351
|
+
publicKeyTypeNodeElements[1][DerKey.Bytes],
|
|
352
|
+
X962.PublicKeyAlgorithmEcPublicKeyP256[DerKey.Bytes]
|
|
353
|
+
)) {
|
|
354
|
+
throw new CertificateError("Unsupported public key curve in CSR");
|
|
355
|
+
}
|
|
329
356
|
const publicKey = publicKeyBytesNode[DerKey.Bytes];
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
throw new CertificateError("Unsupported signature type");
|
|
357
|
+
const signatureAlgorithmBytes = signAlgorithmNode[DerKey.Elements]?.[0]?.[DerKey.Bytes];
|
|
358
|
+
if (signatureAlgorithmBytes === void 0 || !Bytes.areEqual(X962.EcdsaWithSHA256[DerKey.ObjectId][DerKey.Bytes], signatureAlgorithmBytes)) {
|
|
359
|
+
throw new CertificateError("Unsupported signature algorithm in CSR");
|
|
360
|
+
}
|
|
335
361
|
await crypto.verifyEcdsa(
|
|
336
362
|
PublicKey(publicKey),
|
|
337
363
|
DerCodec.encode(requestNode),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/certificate/kinds/X509Base.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,4BAAkF;AAC3F,SAAS,0BAA0B,wBAAkC;AACrE;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAkC,+BAAgD;AAQ3E,MAAe,SAAqC;AAAA,EACvD;AAAA,EACA;AAAA,EAEA,YAAY,MAAyB;AACjC,SAAK,QAAQ;AACb,QAAI,eAAe,MAAM;AACrB,WAAK,aAAa,KAAK;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEA,IAAI,OAAqB;AACrB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,KAAK,eAAe;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,YAAY;AACZ,QAAI,KAAK,eAAe,QAAW;AAC/B,YAAM,IAAI,iBAAiB,2BAA2B;AAAA,IAC1D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,UAAU,WAAuB;AACjC,QAAI,KAAK,UAAU;AACf,YAAM,IAAI,iBAAiB,+BAA+B;AAAA,IAC9D;AACA,SAAK,aAAa;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,KAAK,QAAgB,KAAiB;AACxC,SAAK,YAAY,MAAM,OAAO,UAAU,KAAK,KAAK,eAAe,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA,EAKA,iBAA8C;AAC1C,UAAM,YAAY,SAAS,OAAO,KAAK,0BAA0B,KAAK,IAAI,CAAC;AAC3E,6BAAyB,SAAS;AAClC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB,MAAgC;AACnD,UAAM,MAAM,CAAC;AACb,WAAO,QAAQ,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC3C,UAAI,UAAU,QAAW;AACrB;AAAA,MACJ;AACA,cAAQ,KAAK;AAAA,QACT,KAAK;AACD,cAAI,aAAa,KAAK,WAAW,KAAe;AAChD;AAAA,QACJ,KAAK;AACD,cAAI,WAAW,KAAK,QAAQ,KAAe;AAC3C;AAAA,QACJ,KAAK;AACD,cAAI,YAAY,KAAK,aAAa,KAAe;AACjD;AAAA,QACJ,KAAK;AACD,cAAI,cAAc,KAAK,YAAY,KAAe;AAClD;AAAA,QACJ,KAAK;AACD,cAAI,eAAe,KAAK,aAAa,KAAe;AACpD;AAAA,QACJ,KAAK;AACD,cAAI,sBAAsB,KAAK,oBAAoB,KAAe;AAClE;AAAA,QACJ,KAAK;AACD,cAAI,UAAU,KAAK,iBAAiB,KAAe;AACnD;AAAA,QACJ,KAAK;AACD,cAAI,cAAc,KAAK,uBAAuB,KAAe;AAC7D;AAAA,QACJ,KAAK;AACD,cAAI,QAAQ,KAAK,MAAM,KAAe;AACtC;AAAA,QACJ,KAAK;AACD,cAAI,OAAO,KAAK,KAAK,KAAe;AACpC;AAAA,QACJ,KAAK;AACD,cAAI,YAAY,KAAK,UAAU,KAAe;AAC9C;AAAA,QACJ,KAAK;AACD,cAAI,WAAW,KAAK,SAAS,KAAe;AAC5C;AAAA,QACJ,KAAK;AACD,cAAI,eAAe,KAAK,oBAAoB,KAAe;AAC3D;AAAA,QACJ,KAAK;AACD,cAAI,cAAc,KAAK,YAAY,KAAe;AAClD;AAAA,QACJ,KAAK;AACD,cAAI,YAAY,KAAK,UAAU,KAAe;AAC9C;AAAA,QACJ,KAAK;AACD,cAAI,kBAAkB,KAAK,gBAAgB,KAAe;AAC1D;AAAA,QACJ,KAAK;AACD,cAAI,SAAS,cAAc,KAAe;AAC1C;AAAA,QACJ,KAAK;AACD,cAAI,oBAAoB,yBAAyB,KAAe;AAChE;AAAA,QACJ,KAAK;AACD,cAAI,SAAS,cAAc,KAAwB;AACnD;AAAA,QACJ,KAAK;AACD,cAAI,SAAS,cAAc,KAAwB;AACnD;AAAA,QACJ,KAAK;AACD,cAAI,WAAW,gBAAgB,KAAiB;AAChD;AAAA,QACJ,KAAK;AAID,gBAAM,wBAAwB;AAC9B,+BAAqB,mBAAmB,qBAAqB;AAE7D,gBAAM,OAAO,sBAAsB,CAAC;AACpC,gBAAM,OAAO,sBAAsB,CAAC;AACpC,gBAAM,OAAO,sBAAsB,CAAC;AACpC,cAAI,SAAS,QAAW;AACpB,gBAAI,wBAAwB,cAAc,IAAI;AAAA,UAClD;AACA,cAAI,SAAS,QAAW;AACpB,gBAAI,wBAAwB,cAAc,IAAI;AAAA,UAClD;AACA,cAAI,SAAS,QAAW;AACpB,gBAAI,wBAAwB,cAAc,IAAI;AAAA,UAClD;AACA;AAAA,QACJ,KAAK;AACD,cAAI,WAAW,gBAAgB,KAAiB;AAChD;AAAA,QACJ,KAAK;AACD,cAAI,YAAY,iBAAiB,KAAe;AAChD;AAAA,QACJ,KAAK;AACD,cAAI,eAAe,KAAK,WAAW,OAAiB,IAAI;AACxD;AAAA,QACJ,KAAK;AACD,cAAI,aAAa,KAAK,QAAQ,OAAiB,IAAI;AACnD;AAAA,QACJ,KAAK;AACD,cAAI,cAAc,KAAK,aAAa,OAAiB,IAAI;AACzD;AAAA,QACJ,KAAK;AACD,cAAI,gBAAgB,KAAK,YAAY,OAAiB,IAAI;AAC1D;AAAA,QACJ,KAAK;AACD,cAAI,iBAAiB,KAAK,aAAa,OAAiB,IAAI;AAC5D;AAAA,QACJ,KAAK;AACD,cAAI,wBAAwB,KAAK,oBAAoB,OAAiB,IAAI;AAC1E;AAAA,QACJ,KAAK;AACD,cAAI,YAAY,KAAK,iBAAiB,OAAiB,IAAI;AAC3D;AAAA,QACJ,KAAK;AACD,cAAI,gBAAgB,KAAK,uBAAuB,OAAiB,IAAI;AACrE;AAAA,QACJ,KAAK;AACD,cAAI,UAAU,KAAK,MAAM,OAAiB,IAAI;AAC9C;AAAA,QACJ,KAAK;AACD,cAAI,SAAS,KAAK,KAAK,OAAiB,IAAI;AAC5C;AAAA,QACJ,KAAK;AACD,cAAI,cAAc,KAAK,UAAU,OAAiB,IAAI;AACtD;AAAA,QACJ,KAAK;AACD,cAAI,aAAa,KAAK,SAAS,OAAiB,IAAI;AACpD;AAAA,QACJ,KAAK;AACD,cAAI,iBAAiB,KAAK,oBAAoB,OAAiB,IAAI;AACnE;AAAA,QACJ,KAAK;AACD,cAAI,gBAAgB,KAAK,YAAY,OAAiB,IAAI;AAC1D;AAAA,QACJ,KAAK;AACD,cAAI,cAAc,KAAK,UAAU,OAAiB,IAAI;AACtD;AAAA,MACR;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,YAAkC;AAChD,UAAM,MAAM,CAAC;AACb,WAAO,QAAQ,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACjD,UAAI,UAAU,QAAW;AACrB;AAAA,MACJ;AACA,cAAQ,KAAK;AAAA,QACT,KAAK;AACD,cAAI,mBAAmB,KAAK,iBAAiB,KAAK;AAClD;AAAA,QACJ,KAAK;AACD,cAAI,WAAW,KAAK;AAAA,YAChB,wBAAwB;AAAA,cACpB;AAAA,YACJ;AAAA,UACJ;AACA;AAAA,QACJ,KAAK;AACD,cAAI,mBAAmB,KAAK,iBAAiB,KAA6B;AAC1E;AAAA,QACJ,KAAK;AACD,cAAI,uBAAuB,KAAK,qBAAqB,KAAmB;AACxE;AAAA,QACJ,KAAK;AACD,cAAI,yBAAyB,KAAK,uBAAuB,KAAmB;AAC5E;AAAA,QACJ,KAAK;AACD,cAAI,kBAAkB,SAAS,MAAM,OAAO,GAAK,SAAsC,CAAC,CAAE,CAAC;AAC3F;AAAA,MACR;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKU,0BAA0B;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAiB;AACb,UAAM;AAAA,MACF,kBAAkB,EAAE,MAAM,QAAQ;AAAA,IACtC,IAAI;AACJ,QAAI,CAAC,QAAQ,YAAY,QAAW;AAChC,YAAM,IAAI,iBAAiB,wDAAwD;AAAA,IACvF;AACA,WAAO;AAAA,MACH,SAAS,cAAc,GAAG,CAAC;AAAA;AAAA,MAC3B,cAAc,iBAAiB,QAAQ,SAAS,YAAY;AAAA,MAC5D,oBAAoB,KAAK;AAAA,MACzB,QAAQ,KAAK,uBAAuB,MAAM;AAAA,MAC1C,UAAU;AAAA,QACN,WAAW,eAAe,SAAS;AAAA,QACnC,UAAU,eAAe,QAAQ;AAAA,MACrC;AAAA,MACA,SAAS,KAAK,uBAAuB,OAAO;AAAA,MAC5C,WAAW,KAAK,sBAAsB,sBAAsB;AAAA,MAC5D,YAAY,cAAc,GAAG,KAAK,kBAAkB,UAAU,CAAC;AAAA,IACnE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,gCAAgC,QAAgB,KAAU;AACnE,UAAM,UAAU;AAAA,MACZ,SAAS;AAAA,MACT,SAAS,EAAE,cAAc,KAAK,iBAAiB,KAAK,EAAE;AAAA,MACtD,WAAW,KAAK,sBAAsB,IAAI,SAAS;AAAA,MACnD,gBAAgB,cAAc,CAAC;AAAA,IACnC;AAEA,WAAO,SAAS,OAAO;AAAA,MACnB;AAAA,MACA,eAAe,KAAK;AAAA,MACpB,WAAW,aAAa,MAAM,OAAO,UAAU,KAAK,SAAS,OAAO,OAAO,GAAG,KAAK,CAAC;AAAA,IACxF,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,oBAAoB,QAAgB,YAAwB;AACrE,UAAM,EAAE,CAAC,OAAO,QAAQ,GAAG,aAAa,IAAI,SAAS,OAAO,UAAU;AACtE,QAAI,cAAc,WAAW,GAAG;AAC5B,YAAM,IAAI,iBAAiB,kBAAkB;AAAA,IACjD;AACA,UAAM,CAAC,aAAa,mBAAmB,aAAa,IAAI;AAGxD,UAAM,EAAE,CAAC,OAAO,QAAQ,GAAG,gBAAgB,IAAI;AAC/C,QAAI,iBAAiB,WAAW,GAAG;AAC/B,YAAM,IAAI,iBAAiB,kBAAkB;AAAA,IACjD;AACA,UAAM,CAAC,aAAa,aAAa,aAAa,IAAI;AAClD,UAAM,sBAAsB,YAAY,OAAO,KAAK;AACpD,QAAI,oBAAoB,WAAW,KAAK,oBAAoB,CAAC,MAAM,GAAG;AAClE,YAAM,IAAI,iBAAiB,2BAA2B,oBAAoB,CAAC,CAAC,EAAE;AAAA,IAClF;AAGA,QAAI,CAAC,YAAY,OAAO,QAAQ,GAAG,QAAQ;AACvC,YAAM,IAAI,iBAAiB,6BAA6B;AAAA,IAC5D;AAEA,UAAM,EAAE,CAAC,OAAO,QAAQ,GAAG,kBAAkB,IAAI;AACjD,QAAI,mBAAmB,WAAW,GAAG;AACjC,YAAM,IAAI,iBAAiB,kBAAkB;AAAA,IACjD;AACA,UAAM,CAAC,mBAAmB,kBAAkB,IAAI;AAGhD,UAAM,EAAE,CAAC,OAAO,QAAQ,GAAG,0BAA0B,IAAI;AACzD,QAAI,2BAA2B,WAAW,GAAG;AACzC,YAAM,IAAI,iBAAiB,gCAAgC;AAAA,IAC/D;AACA,QACI,CAAC,MAAM;AAAA,MACH,0BAA0B,CAAC,EAAE,OAAO,KAAK;AAAA,MACzC,KAAK,8BAA8B,OAAO,KAAK;AAAA,IACnD,GACF;AACE,YAAM,IAAI,iBAAiB,yCAAyC;AAAA,IACxE;AAEA,QACI,CAAC,MAAM;AAAA,MACH,0BAA0B,CAAC,EAAE,OAAO,KAAK;AAAA,MACzC,KAAK,kCAAkC,OAAO,KAAK;AAAA,IACvD,GACF;AACE,YAAM,IAAI,iBAAiB,qCAAqC;AAAA,IACpE;AAEA,UAAM,YAAY,mBAAmB,OAAO,KAAK;AAGjD,UAAM,0BAA0B,kBAAkB,OAAO,QAAQ,IAAI,CAAC,IAAI,OAAO,KAAK;AACtF,QACI,4BAA4B,UAC5B,CAAC,MAAM,SAAS,KAAK,gBAAgB,OAAO,QAAQ,EAAE,OAAO,KAAK,GAAG,uBAAuB,GAC9F;AACE,YAAM,IAAI,iBAAiB,wCAAwC;AAAA,IACvE;AAGA,UAAM,OAAO;AAAA,MACT,UAAU,SAAS;AAAA,MACnB,SAAS,OAAO,WAAW;AAAA,MAC3B,cAAc,OAAO,KAAK;AAAA,MAC1B;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DclApiErrorResponse, DclPkiRootCertificateSubjectReference } from "#dcl/DclRestApiTypes.js";
|
|
7
|
+
import { MatterError } from "#general";
|
|
8
|
+
/** Base class for all DCL-related errors */
|
|
9
|
+
export declare class MatterDclError extends MatterError {
|
|
10
|
+
}
|
|
11
|
+
/** Error thrown when fetching data from DCL fails */
|
|
12
|
+
export declare class MatterDclResponseError extends MatterDclError {
|
|
13
|
+
constructor(path: string, error: DclApiErrorResponse);
|
|
14
|
+
}
|
|
15
|
+
/** A client clas to use "fetch" to get REST DAta from DCL (Decentraland) */
|
|
16
|
+
export declare class DclClient {
|
|
17
|
+
#private;
|
|
18
|
+
private readonly production;
|
|
19
|
+
constructor(production?: boolean);
|
|
20
|
+
fetchRootCertificateList(): Promise<DclPkiRootCertificateSubjectReference[]>;
|
|
21
|
+
fetchRootCertificateBySubject(subject: DclPkiRootCertificateSubjectReference): Promise<import("@matter/types").ProductAttestationDclSchema[]>;
|
|
22
|
+
fetchModelByVidPid(vid: number, pid: number): Promise<import("@matter/types").DeviceModelDclSchema>;
|
|
23
|
+
fetchModelVersionsByVidPid(vid: number, pid: number): Promise<number[]>;
|
|
24
|
+
fetchModelVersionByVidPidSoftwareVersion(vid: number, pid: number, softwareVersion: number): Promise<import("@matter/types").DeviceSoftwareVersionModelDclSchema>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=DclClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DclClient.d.ts","sourceRoot":"","sources":["../../../src/dcl/DclClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACH,mBAAmB,EAMnB,qCAAqC,EACxC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKvC,4CAA4C;AAC5C,qBAAa,cAAe,SAAQ,WAAW;CAAG;AAElD,qDAAqD;AACrD,qBAAa,sBAAuB,SAAQ,cAAc;gBAC1C,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;CAGvD;AAED,4EAA4E;AAC5E,qBAAa,SAAS;;IAGN,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,GAAE,OAAc;IAgCjD,wBAAwB;IAUxB,6BAA6B,CAAC,OAAO,EAAE,qCAAqC;IAiB5E,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAe3C,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAenD,wCAAwC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;CAiBnG"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { MatterError } from "#general";
|
|
7
|
+
const DCL_PRODUCTION_URL = "https://on.dcl.csa-iot.org";
|
|
8
|
+
const DCL_TEST_URL = "https://on.test-net.dcl.csa-iot.org";
|
|
9
|
+
class MatterDclError extends MatterError {
|
|
10
|
+
}
|
|
11
|
+
class MatterDclResponseError extends MatterDclError {
|
|
12
|
+
constructor(path, error) {
|
|
13
|
+
super(`Error fetching ${path} from DCL: ${error.code} - ${error.message}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class DclClient {
|
|
17
|
+
constructor(production = true) {
|
|
18
|
+
this.production = production;
|
|
19
|
+
this.#baseUrl = this.production ? DCL_PRODUCTION_URL : DCL_TEST_URL;
|
|
20
|
+
}
|
|
21
|
+
#baseUrl;
|
|
22
|
+
async #fetchJson(path) {
|
|
23
|
+
const url = new URL(path, this.#baseUrl);
|
|
24
|
+
try {
|
|
25
|
+
const response = await fetch(url.toString(), {
|
|
26
|
+
method: "GET",
|
|
27
|
+
headers: {
|
|
28
|
+
"Content-Type": "application/json"
|
|
29
|
+
},
|
|
30
|
+
signal: AbortSignal.timeout(5e3)
|
|
31
|
+
// 5 seconds timeout
|
|
32
|
+
});
|
|
33
|
+
if (!response.ok) {
|
|
34
|
+
throw new MatterDclResponseError(path, await response.json());
|
|
35
|
+
}
|
|
36
|
+
return await response.json();
|
|
37
|
+
} catch (error) {
|
|
38
|
+
if (error instanceof MatterDclResponseError) {
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
throw new MatterDclResponseError(path, {
|
|
42
|
+
code: 500,
|
|
43
|
+
message: error instanceof Error ? error.message : "Unknown Error",
|
|
44
|
+
details: []
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async fetchRootCertificateList() {
|
|
49
|
+
const certList = await this.#fetchJson("/certificates/approved");
|
|
50
|
+
if (certList?.approvedRootCertificates?.schemaVersion !== 0) {
|
|
51
|
+
throw new MatterDclError(
|
|
52
|
+
`Unsupported DCL Root Certificate schema version: ${certList.approvedRootCertificates.schemaVersion}`
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
return certList.approvedRootCertificates.certs;
|
|
56
|
+
}
|
|
57
|
+
async fetchRootCertificateBySubject(subject) {
|
|
58
|
+
const path = `/certificates/${encodeURIComponent(subject.subject)}/${encodeURIComponent(subject.subjectKeyId)}`;
|
|
59
|
+
const response = await this.#fetchJson(path);
|
|
60
|
+
if (!response || !response.approvedRootCertificates || response.approvedRootCertificates.subject !== subject.subject || response.approvedRootCertificates.subjectKeyId !== subject.subjectKeyId || response.approvedRootCertificates.schemaVersion !== 0) {
|
|
61
|
+
throw new MatterDclError(
|
|
62
|
+
`Root certificate not found for subject: ${subject.subject}, subjectKeyId: ${subject.subjectKeyId}`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
return response.approvedRootCertificates.certs;
|
|
66
|
+
}
|
|
67
|
+
async fetchModelByVidPid(vid, pid) {
|
|
68
|
+
const path = `/models/model/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}`;
|
|
69
|
+
const response = await this.#fetchJson(path);
|
|
70
|
+
if (!response || !response.model || response.model.vid !== vid || response.model.pid !== pid || response.model.schemaVersion !== 0) {
|
|
71
|
+
throw new MatterDclError(`Model not found for VID: ${vid}, PID: ${pid}`);
|
|
72
|
+
}
|
|
73
|
+
return response.model;
|
|
74
|
+
}
|
|
75
|
+
async fetchModelVersionsByVidPid(vid, pid) {
|
|
76
|
+
const path = `/models/versions/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}`;
|
|
77
|
+
const response = await this.#fetchJson(path);
|
|
78
|
+
if (!response || !response.modelVersions || response.modelVersions.vid !== vid || response.modelVersions.pid !== pid || response.modelVersions.schemaVersion !== 0) {
|
|
79
|
+
throw new MatterDclError(`Model versions not found for VID: ${vid}, PID: ${pid}`);
|
|
80
|
+
}
|
|
81
|
+
return response.modelVersions.softwareVersions;
|
|
82
|
+
}
|
|
83
|
+
async fetchModelVersionByVidPidSoftwareVersion(vid, pid, softwareVersion) {
|
|
84
|
+
const path = `/models/versions/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}/${encodeURIComponent(softwareVersion)}`;
|
|
85
|
+
const response = await this.#fetchJson(path);
|
|
86
|
+
if (!response || !response.modelVersion || response.modelVersion.vid !== vid || response.modelVersion.pid !== pid || response.modelVersion.softwareVersion !== softwareVersion || response.modelVersion.schemaVersion !== 0) {
|
|
87
|
+
throw new MatterDclError(
|
|
88
|
+
`Model version not found for VID: ${vid}, PID: ${pid}, Software Version: ${softwareVersion}`
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
return response.modelVersion;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
DclClient,
|
|
96
|
+
MatterDclError,
|
|
97
|
+
MatterDclResponseError
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=DclClient.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/dcl/DclClient.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DeviceModelDclSchema, DeviceSoftwareVersionModelDclSchema, ProductAttestationDclSchema } from "@matter/types";
|
|
7
|
+
export interface DclApiErrorResponse {
|
|
8
|
+
code: number;
|
|
9
|
+
message: string;
|
|
10
|
+
details: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface DclPkiRootCertificateSubjectReference {
|
|
13
|
+
subject: string;
|
|
14
|
+
subjectKeyId: string;
|
|
15
|
+
}
|
|
16
|
+
/** Response for /dcl/pki/certificates/approved */
|
|
17
|
+
export interface DclPkiRootCertificatesResponse {
|
|
18
|
+
approvedRootCertificates: {
|
|
19
|
+
certs: DclPkiRootCertificateSubjectReference[];
|
|
20
|
+
schemaVersion: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Response for /dcl/pki/certificates/{subject}/{subjectKeyId} */
|
|
24
|
+
export interface DclPkiCertificateResponse {
|
|
25
|
+
approvedRootCertificates: {
|
|
26
|
+
subject: string;
|
|
27
|
+
subjectKeyId: string;
|
|
28
|
+
certs: ProductAttestationDclSchema[];
|
|
29
|
+
schemaVersion: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Response for /dcl/models/model/{vid}/{pid} */
|
|
33
|
+
export interface DclModelModelsWithVidPidResponse {
|
|
34
|
+
model: DeviceModelDclSchema;
|
|
35
|
+
}
|
|
36
|
+
/** Response for /dcl/model/versions/{vid}/{pid} */
|
|
37
|
+
export interface DclModelVersionsWithVidPidResponse {
|
|
38
|
+
modelVersions: {
|
|
39
|
+
vid: number;
|
|
40
|
+
pid: number;
|
|
41
|
+
softwareVersions: number[];
|
|
42
|
+
schemaVersion: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Response for /dcl/model/versions/{vid}/{pid}/{softwareVersion} */
|
|
46
|
+
export interface DclModelVersionWithVidPidSoftwareVersionResponse {
|
|
47
|
+
modelVersion: DeviceSoftwareVersionModelDclSchema;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=DclRestApiTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DclRestApiTypes.d.ts","sourceRoot":"","sources":["../../../src/dcl/DclRestApiTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEvH,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,qCAAqC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,kDAAkD;AAClD,MAAM,WAAW,8BAA8B;IAC3C,wBAAwB,EAAE;QACtB,KAAK,EAAE,qCAAqC,EAAE,CAAC;QAC/C,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;CACL;AAED,kEAAkE;AAClE,MAAM,WAAW,yBAAyB;IACtC,wBAAwB,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,2BAA2B,EAAE,CAAC;QACrC,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;CACL;AAED,iDAAiD;AACjD,MAAM,WAAW,gCAAgC;IAC7C,KAAK,EAAE,oBAAoB,CAAC;CAC/B;AAED,mDAAmD;AACnD,MAAM,WAAW,kCAAkC;IAC/C,aAAa,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;KACzB,CAAC;CACL;AAED,qEAAqE;AACrE,MAAM,WAAW,gDAAgD;IAC7D,YAAY,EAAE,mCAAmC,CAAC;CACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dcl/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from "./certificate/index.js";
|
|
|
9
9
|
export * from "./cluster/index.js";
|
|
10
10
|
export * from "./codec/index.js";
|
|
11
11
|
export * from "./common/index.js";
|
|
12
|
+
export * from "./dcl/index.js";
|
|
12
13
|
export * from "./events/index.js";
|
|
13
14
|
export * from "./fabric/index.js";
|
|
14
15
|
export * from "./groups/index.js";
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export * from "./certificate/index.js";
|
|
|
9
9
|
export * from "./cluster/index.js";
|
|
10
10
|
export * from "./codec/index.js";
|
|
11
11
|
export * from "./common/index.js";
|
|
12
|
+
export * from "./dcl/index.js";
|
|
12
13
|
export * from "./events/index.js";
|
|
13
14
|
export * from "./fabric/index.js";
|
|
14
15
|
export * from "./groups/index.js";
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/protocol",
|
|
3
|
-
"version": "0.15.0-alpha.0-
|
|
3
|
+
"version": "0.15.0-alpha.0-20250624-e8c89f458",
|
|
4
4
|
"description": "Low-level APIs for Matter interaction",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"#*": "./src/*"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@matter/general": "0.15.0-alpha.0-
|
|
44
|
-
"@matter/model": "0.15.0-alpha.0-
|
|
45
|
-
"@matter/types": "0.15.0-alpha.0-
|
|
43
|
+
"@matter/general": "0.15.0-alpha.0-20250624-e8c89f458",
|
|
44
|
+
"@matter/model": "0.15.0-alpha.0-20250624-e8c89f458",
|
|
45
|
+
"@matter/types": "0.15.0-alpha.0-20250624-e8c89f458"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@matter/tools": "0.15.0-alpha.0-
|
|
49
|
-
"@matter/testing": "0.15.0-alpha.0-
|
|
48
|
+
"@matter/tools": "0.15.0-alpha.0-20250624-e8c89f458",
|
|
49
|
+
"@matter/testing": "0.15.0-alpha.0-20250624-e8c89f458"
|
|
50
50
|
},
|
|
51
51
|
"files": [
|
|
52
52
|
"dist/**/*",
|
|
@@ -340,34 +340,70 @@ export abstract class X509Base<CT extends X509Certificate> {
|
|
|
340
340
|
/**
|
|
341
341
|
* Extract the public key from a Certificate Signing Request (CSR) in ASN.1 DER format.
|
|
342
342
|
*/
|
|
343
|
-
static async getPublicKeyFromCsr(crypto: Crypto,
|
|
344
|
-
const { [DerKey.Elements]: rootElements } = DerCodec.decode(
|
|
345
|
-
if (rootElements?.length !== 3)
|
|
343
|
+
static async getPublicKeyFromCsr(crypto: Crypto, encodedCsr: Uint8Array) {
|
|
344
|
+
const { [DerKey.Elements]: rootElements } = DerCodec.decode(encodedCsr);
|
|
345
|
+
if (rootElements?.length !== 3) {
|
|
346
|
+
throw new CertificateError("Invalid CSR data");
|
|
347
|
+
}
|
|
346
348
|
const [requestNode, signAlgorithmNode, signatureNode] = rootElements;
|
|
347
349
|
|
|
348
350
|
// Extract the public key
|
|
349
351
|
const { [DerKey.Elements]: requestElements } = requestNode;
|
|
350
|
-
if (requestElements?.length !== 4)
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
352
|
+
if (requestElements?.length !== 4) {
|
|
353
|
+
throw new CertificateError("Invalid CSR data");
|
|
354
|
+
}
|
|
355
|
+
const [versionNode, subjectNode, publicKeyNode] = requestElements;
|
|
356
|
+
const requestVersionBytes = versionNode[DerKey.Bytes];
|
|
357
|
+
if (requestVersionBytes.length !== 1 || requestVersionBytes[0] !== 0) {
|
|
358
|
+
throw new CertificateError(`Unsupported CSR version ${requestVersionBytes[0]}`);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// Verify the subject, according to spec can be "any value", so just check that it exists
|
|
362
|
+
if (!subjectNode[DerKey.Elements]?.length) {
|
|
363
|
+
throw new CertificateError("Missing subject in CSR data");
|
|
364
|
+
}
|
|
355
365
|
|
|
356
366
|
const { [DerKey.Elements]: publicKeyElements } = publicKeyNode;
|
|
357
|
-
if (publicKeyElements?.length !== 2)
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
const
|
|
367
|
+
if (publicKeyElements?.length !== 2) {
|
|
368
|
+
throw new CertificateError("Invalid CSR data");
|
|
369
|
+
}
|
|
370
|
+
const [publicKeyTypeNode, publicKeyBytesNode] = publicKeyElements;
|
|
361
371
|
|
|
362
|
-
// Verify
|
|
372
|
+
// Verify Public Key Algorithm Type
|
|
373
|
+
const { [DerKey.Elements]: publicKeyTypeNodeElements } = publicKeyTypeNode;
|
|
374
|
+
if (publicKeyTypeNodeElements?.length !== 2) {
|
|
375
|
+
throw new CertificateError("Invalid public key type in CSR");
|
|
376
|
+
}
|
|
363
377
|
if (
|
|
364
|
-
signAlgorithmNode[DerKey.Elements]?.[0]?.[DerKey.Bytes] === undefined ||
|
|
365
378
|
!Bytes.areEqual(
|
|
366
|
-
|
|
367
|
-
|
|
379
|
+
publicKeyTypeNodeElements[0][DerKey.Bytes],
|
|
380
|
+
X962.PublicKeyAlgorithmEcPublicKey[DerKey.Bytes],
|
|
368
381
|
)
|
|
369
|
-
)
|
|
370
|
-
throw new CertificateError("Unsupported
|
|
382
|
+
) {
|
|
383
|
+
throw new CertificateError("Unsupported public key algorithm in CSR");
|
|
384
|
+
}
|
|
385
|
+
// Verify Public Key Curve Type (Parameter to Algorithm)
|
|
386
|
+
if (
|
|
387
|
+
!Bytes.areEqual(
|
|
388
|
+
publicKeyTypeNodeElements[1][DerKey.Bytes],
|
|
389
|
+
X962.PublicKeyAlgorithmEcPublicKeyP256[DerKey.Bytes],
|
|
390
|
+
)
|
|
391
|
+
) {
|
|
392
|
+
throw new CertificateError("Unsupported public key curve in CSR");
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
const publicKey = publicKeyBytesNode[DerKey.Bytes];
|
|
396
|
+
|
|
397
|
+
// Verify the CSR signature algorithm
|
|
398
|
+
const signatureAlgorithmBytes = signAlgorithmNode[DerKey.Elements]?.[0]?.[DerKey.Bytes];
|
|
399
|
+
if (
|
|
400
|
+
signatureAlgorithmBytes === undefined ||
|
|
401
|
+
!Bytes.areEqual(X962.EcdsaWithSHA256[DerKey.ObjectId][DerKey.Bytes], signatureAlgorithmBytes)
|
|
402
|
+
) {
|
|
403
|
+
throw new CertificateError("Unsupported signature algorithm in CSR");
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// Verify the CSR signature
|
|
371
407
|
await crypto.verifyEcdsa(
|
|
372
408
|
PublicKey(publicKey),
|
|
373
409
|
DerCodec.encode(requestNode),
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import {
|
|
7
|
+
DclApiErrorResponse,
|
|
8
|
+
DclModelModelsWithVidPidResponse,
|
|
9
|
+
DclModelVersionsWithVidPidResponse,
|
|
10
|
+
DclModelVersionWithVidPidSoftwareVersionResponse,
|
|
11
|
+
DclPkiCertificateResponse,
|
|
12
|
+
DclPkiRootCertificatesResponse,
|
|
13
|
+
DclPkiRootCertificateSubjectReference,
|
|
14
|
+
} from "#dcl/DclRestApiTypes.js";
|
|
15
|
+
import { MatterError } from "#general";
|
|
16
|
+
|
|
17
|
+
const DCL_PRODUCTION_URL = "https://on.dcl.csa-iot.org";
|
|
18
|
+
const DCL_TEST_URL = "https://on.test-net.dcl.csa-iot.org";
|
|
19
|
+
|
|
20
|
+
/** Base class for all DCL-related errors */
|
|
21
|
+
export class MatterDclError extends MatterError {}
|
|
22
|
+
|
|
23
|
+
/** Error thrown when fetching data from DCL fails */
|
|
24
|
+
export class MatterDclResponseError extends MatterDclError {
|
|
25
|
+
constructor(path: string, error: DclApiErrorResponse) {
|
|
26
|
+
super(`Error fetching ${path} from DCL: ${error.code} - ${error.message}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** A client clas to use "fetch" to get REST DAta from DCL (Decentraland) */
|
|
31
|
+
export class DclClient {
|
|
32
|
+
#baseUrl: string;
|
|
33
|
+
|
|
34
|
+
constructor(private readonly production: boolean = true) {
|
|
35
|
+
this.#baseUrl = this.production ? DCL_PRODUCTION_URL : DCL_TEST_URL;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async #fetchJson<ResponseT>(path: string): Promise<ResponseT> {
|
|
39
|
+
const url = new URL(path, this.#baseUrl);
|
|
40
|
+
try {
|
|
41
|
+
const response = await fetch(url.toString(), {
|
|
42
|
+
method: "GET",
|
|
43
|
+
headers: {
|
|
44
|
+
"Content-Type": "application/json",
|
|
45
|
+
},
|
|
46
|
+
signal: AbortSignal.timeout(5_000), // 5 seconds timeout
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
throw new MatterDclResponseError(path, await response.json());
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return await response.json();
|
|
54
|
+
} catch (error) {
|
|
55
|
+
if (error instanceof MatterDclResponseError) {
|
|
56
|
+
throw error; // Re-throw custom DCL error
|
|
57
|
+
}
|
|
58
|
+
throw new MatterDclResponseError(path, {
|
|
59
|
+
code: 500,
|
|
60
|
+
message: error instanceof Error ? error.message : "Unknown Error",
|
|
61
|
+
details: [],
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async fetchRootCertificateList() {
|
|
67
|
+
const certList = await this.#fetchJson<DclPkiRootCertificatesResponse>("/certificates/approved");
|
|
68
|
+
if (certList?.approvedRootCertificates?.schemaVersion !== 0) {
|
|
69
|
+
throw new MatterDclError(
|
|
70
|
+
`Unsupported DCL Root Certificate schema version: ${certList.approvedRootCertificates.schemaVersion}`,
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
return certList.approvedRootCertificates.certs;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async fetchRootCertificateBySubject(subject: DclPkiRootCertificateSubjectReference) {
|
|
77
|
+
const path = `/certificates/${encodeURIComponent(subject.subject)}/${encodeURIComponent(subject.subjectKeyId)}`;
|
|
78
|
+
const response = await this.#fetchJson<DclPkiCertificateResponse>(path);
|
|
79
|
+
if (
|
|
80
|
+
!response ||
|
|
81
|
+
!response.approvedRootCertificates ||
|
|
82
|
+
response.approvedRootCertificates.subject !== subject.subject ||
|
|
83
|
+
response.approvedRootCertificates.subjectKeyId !== subject.subjectKeyId ||
|
|
84
|
+
response.approvedRootCertificates.schemaVersion !== 0
|
|
85
|
+
) {
|
|
86
|
+
throw new MatterDclError(
|
|
87
|
+
`Root certificate not found for subject: ${subject.subject}, subjectKeyId: ${subject.subjectKeyId}`,
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
return response.approvedRootCertificates.certs;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async fetchModelByVidPid(vid: number, pid: number) {
|
|
94
|
+
const path = `/models/model/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}`;
|
|
95
|
+
const response = await this.#fetchJson<DclModelModelsWithVidPidResponse>(path);
|
|
96
|
+
if (
|
|
97
|
+
!response ||
|
|
98
|
+
!response.model ||
|
|
99
|
+
response.model.vid !== vid ||
|
|
100
|
+
response.model.pid !== pid ||
|
|
101
|
+
response.model.schemaVersion !== 0
|
|
102
|
+
) {
|
|
103
|
+
throw new MatterDclError(`Model not found for VID: ${vid}, PID: ${pid}`);
|
|
104
|
+
}
|
|
105
|
+
return response.model;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async fetchModelVersionsByVidPid(vid: number, pid: number) {
|
|
109
|
+
const path = `/models/versions/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}`;
|
|
110
|
+
const response = await this.#fetchJson<DclModelVersionsWithVidPidResponse>(path);
|
|
111
|
+
if (
|
|
112
|
+
!response ||
|
|
113
|
+
!response.modelVersions ||
|
|
114
|
+
response.modelVersions.vid !== vid ||
|
|
115
|
+
response.modelVersions.pid !== pid ||
|
|
116
|
+
response.modelVersions.schemaVersion !== 0
|
|
117
|
+
) {
|
|
118
|
+
throw new MatterDclError(`Model versions not found for VID: ${vid}, PID: ${pid}`);
|
|
119
|
+
}
|
|
120
|
+
return response.modelVersions.softwareVersions;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async fetchModelVersionByVidPidSoftwareVersion(vid: number, pid: number, softwareVersion: number) {
|
|
124
|
+
const path = `/models/versions/${encodeURIComponent(vid)}/${encodeURIComponent(pid)}/${encodeURIComponent(softwareVersion)}`;
|
|
125
|
+
const response = await this.#fetchJson<DclModelVersionWithVidPidSoftwareVersionResponse>(path);
|
|
126
|
+
if (
|
|
127
|
+
!response ||
|
|
128
|
+
!response.modelVersion ||
|
|
129
|
+
response.modelVersion.vid !== vid ||
|
|
130
|
+
response.modelVersion.pid !== pid ||
|
|
131
|
+
response.modelVersion.softwareVersion !== softwareVersion ||
|
|
132
|
+
response.modelVersion.schemaVersion !== 0
|
|
133
|
+
) {
|
|
134
|
+
throw new MatterDclError(
|
|
135
|
+
`Model version not found for VID: ${vid}, PID: ${pid}, Software Version: ${softwareVersion}`,
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
return response.modelVersion;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DeviceModelDclSchema, DeviceSoftwareVersionModelDclSchema, ProductAttestationDclSchema } from "@matter/types";
|
|
7
|
+
|
|
8
|
+
export interface DclApiErrorResponse {
|
|
9
|
+
code: number;
|
|
10
|
+
message: string;
|
|
11
|
+
details: string[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface DclPkiRootCertificateSubjectReference {
|
|
15
|
+
subject: string;
|
|
16
|
+
subjectKeyId: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Response for /dcl/pki/certificates/approved */
|
|
20
|
+
export interface DclPkiRootCertificatesResponse {
|
|
21
|
+
approvedRootCertificates: {
|
|
22
|
+
certs: DclPkiRootCertificateSubjectReference[];
|
|
23
|
+
schemaVersion: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Response for /dcl/pki/certificates/{subject}/{subjectKeyId} */
|
|
28
|
+
export interface DclPkiCertificateResponse {
|
|
29
|
+
approvedRootCertificates: {
|
|
30
|
+
subject: string;
|
|
31
|
+
subjectKeyId: string;
|
|
32
|
+
certs: ProductAttestationDclSchema[];
|
|
33
|
+
schemaVersion: number;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Response for /dcl/models/model/{vid}/{pid} */
|
|
38
|
+
export interface DclModelModelsWithVidPidResponse {
|
|
39
|
+
model: DeviceModelDclSchema;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Response for /dcl/model/versions/{vid}/{pid} */
|
|
43
|
+
export interface DclModelVersionsWithVidPidResponse {
|
|
44
|
+
modelVersions: {
|
|
45
|
+
vid: number;
|
|
46
|
+
pid: number;
|
|
47
|
+
softwareVersions: number[];
|
|
48
|
+
schemaVersion: number;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Response for /dcl/model/versions/{vid}/{pid}/{softwareVersion} */
|
|
53
|
+
export interface DclModelVersionWithVidPidSoftwareVersionResponse {
|
|
54
|
+
modelVersion: DeviceSoftwareVersionModelDclSchema;
|
|
55
|
+
}
|
package/src/dcl/index.ts
ADDED
package/src/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from "./certificate/index.js";
|
|
|
10
10
|
export * from "./cluster/index.js";
|
|
11
11
|
export * from "./codec/index.js";
|
|
12
12
|
export * from "./common/index.js";
|
|
13
|
+
export * from "./dcl/index.js";
|
|
13
14
|
export * from "./events/index.js";
|
|
14
15
|
export * from "./fabric/index.js";
|
|
15
16
|
export * from "./groups/index.js";
|