diff --git a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
index 89c64d93c5fcc8..ad7771e53a4821 100644
--- a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
+++ b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
@@ -1228,12 +1228,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1308,6 +1310,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1324,6 +1343,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter
index aad9aaf08a8c02..1bdcf77bf92869 100644
--- a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter
+++ b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter
@@ -1503,12 +1503,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1583,6 +1585,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1599,6 +1618,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 72bf20161f9aff..34c5d04bbc92a8 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -2657,12 +2657,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2737,6 +2739,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2753,6 +2772,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
index e7187a5e5f6c77..0bffb25558dd6d 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
@@ -2424,12 +2424,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2504,6 +2506,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2520,6 +2539,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter
index f33ce16ab55ae7..0663c6a35ccca3 100644
--- a/examples/bridge-app/bridge-common/bridge-app.matter
+++ b/examples/bridge-app/bridge-common/bridge-app.matter
@@ -1913,12 +1913,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1993,6 +1995,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2009,6 +2028,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/camera-app/camera-common/camera-app.matter b/examples/camera-app/camera-common/camera-app.matter
index 0592f24c669731..c9f84a61375cb7 100644
--- a/examples/camera-app/camera-common/camera-app.matter
+++ b/examples/camera-app/camera-common/camera-app.matter
@@ -1883,12 +1883,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1963,6 +1965,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1979,6 +1998,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
index 3708f5f16df630..1d3d3a0e1c12f1 100644
--- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
+++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
@@ -1665,12 +1665,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1745,6 +1747,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1761,6 +1780,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_airpurifier_73a6fe2651.matter b/examples/chef/devices/rootnode_airpurifier_73a6fe2651.matter
index e0e14bea72042a..6cdcf7eebf3fae 100644
--- a/examples/chef/devices/rootnode_airpurifier_73a6fe2651.matter
+++ b/examples/chef/devices/rootnode_airpurifier_73a6fe2651.matter
@@ -1337,12 +1337,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1417,6 +1419,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1433,6 +1452,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
index d97bc10741f53d..6972ad9208a39a 100644
--- a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
+++ b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
@@ -1151,12 +1151,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1231,6 +1233,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1247,6 +1266,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter
index b5ead0bc93177c..68f7a47403b839 100644
--- a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter
+++ b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter
@@ -1524,12 +1524,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1604,6 +1606,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1620,6 +1639,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter
index 2791456702f419..77bf67dbd57c34 100644
--- a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter
+++ b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter
@@ -1462,12 +1462,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1542,6 +1544,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1558,6 +1577,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
index c6d7688cd749ee..5060c56a7aa2f1 100644
--- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
+++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
@@ -1539,12 +1539,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1619,6 +1621,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1635,6 +1654,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_contactsensor_27f76aeaf5.matter b/examples/chef/devices/rootnode_contactsensor_27f76aeaf5.matter
index 387d148dd4c6c3..a81cddf497a3d1 100644
--- a/examples/chef/devices/rootnode_contactsensor_27f76aeaf5.matter
+++ b/examples/chef/devices/rootnode_contactsensor_27f76aeaf5.matter
@@ -1524,12 +1524,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1604,6 +1606,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1620,6 +1639,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
index 7218e30a773734..b12c00032847ad 100644
--- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
+++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
@@ -1622,12 +1622,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1702,6 +1704,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1718,6 +1737,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_contactsensor_lightsensor_occupancysensor_temperaturesensor_pressuresensor_flowsensor_humiditysensor_airqualitysensor_powersource_367e7cea91.matter b/examples/chef/devices/rootnode_contactsensor_lightsensor_occupancysensor_temperaturesensor_pressuresensor_flowsensor_humiditysensor_airqualitysensor_powersource_367e7cea91.matter
index 2e8cb4fa408227..aa693a15b189a7 100644
--- a/examples/chef/devices/rootnode_contactsensor_lightsensor_occupancysensor_temperaturesensor_pressuresensor_flowsensor_humiditysensor_airqualitysensor_powersource_367e7cea91.matter
+++ b/examples/chef/devices/rootnode_contactsensor_lightsensor_occupancysensor_temperaturesensor_pressuresensor_flowsensor_humiditysensor_airqualitysensor_powersource_367e7cea91.matter
@@ -1408,12 +1408,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1488,6 +1490,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1504,6 +1523,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
index dc1caab13daad9..62ea79ca189dba 100644
--- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
+++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
@@ -1560,12 +1560,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1640,6 +1642,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1656,6 +1675,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter
index aaa65fd7f84cae..fb89da8108f26a 100644
--- a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter
+++ b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter
@@ -1560,12 +1560,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1640,6 +1642,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1656,6 +1675,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
index f98d6437080264..40b1d2e60444d7 100644
--- a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
+++ b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
@@ -1219,12 +1219,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1299,6 +1301,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1315,6 +1334,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
index 11c9df1bddefd0..75f78a59789147 100644
--- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
+++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
@@ -1524,12 +1524,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1604,6 +1606,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1620,6 +1639,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
index 67fb7e15633326..a00fb1cf21124d 100644
--- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
+++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
@@ -1560,12 +1560,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1640,6 +1642,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1656,6 +1675,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
index 06d050dbaf5d5c..cd53027e6c92e6 100644
--- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
+++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
@@ -1342,12 +1342,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1422,6 +1424,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1438,6 +1457,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
index be8c40cd8f1f92..ff5eb4bd9956b8 100644
--- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
+++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
@@ -1363,12 +1363,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1443,6 +1445,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1459,6 +1478,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_genericswitch_2dfff6e516.matter b/examples/chef/devices/rootnode_genericswitch_2dfff6e516.matter
index 284c95c7da61ff..ce3f2f2fcc6470 100644
--- a/examples/chef/devices/rootnode_genericswitch_2dfff6e516.matter
+++ b/examples/chef/devices/rootnode_genericswitch_2dfff6e516.matter
@@ -1389,12 +1389,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1469,6 +1471,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1485,6 +1504,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter b/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter
index 264e0dda4a4437..aa01b0db05195c 100644
--- a/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter
+++ b/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter
@@ -1389,12 +1389,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1469,6 +1471,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1485,6 +1504,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
index 74df51a353eb6a..29ac976ad9b5ae 100644
--- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
+++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
@@ -1560,12 +1560,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1640,6 +1642,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1656,6 +1675,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_heatpump_87ivjRAECh.matter b/examples/chef/devices/rootnode_heatpump_87ivjRAECh.matter
index 1424b6e5c68316..0f1a502da0c5e7 100644
--- a/examples/chef/devices/rootnode_heatpump_87ivjRAECh.matter
+++ b/examples/chef/devices/rootnode_heatpump_87ivjRAECh.matter
@@ -1350,12 +1350,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1430,6 +1432,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1446,6 +1465,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
index f9d843310cf98d..3137d781599f80 100644
--- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
+++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
@@ -1363,12 +1363,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1443,6 +1445,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1459,6 +1478,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_laundrydryer_01796fe396.matter b/examples/chef/devices/rootnode_laundrydryer_01796fe396.matter
index 9b7d8b8d0e3fe1..49e9a62c2133d5 100644
--- a/examples/chef/devices/rootnode_laundrydryer_01796fe396.matter
+++ b/examples/chef/devices/rootnode_laundrydryer_01796fe396.matter
@@ -1219,12 +1219,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1299,6 +1301,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1315,6 +1334,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
index 859cc006e54c71..0272b243da88ea 100644
--- a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
+++ b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
@@ -1152,12 +1152,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1232,6 +1234,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1248,6 +1267,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
index 19df33a826bcdb..649b6e1348c740 100644
--- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
+++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
@@ -1363,12 +1363,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1443,6 +1445,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1459,6 +1478,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
index 33430b65a52db5..f488960339c933 100644
--- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
+++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
@@ -1363,12 +1363,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1443,6 +1445,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1459,6 +1478,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
index 8e51da93a88ba4..b5869fc53eb40f 100644
--- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
+++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
@@ -1560,12 +1560,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1640,6 +1642,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1656,6 +1675,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_onofflight_samplemei.matter b/examples/chef/devices/rootnode_onofflight_samplemei.matter
index c9eefc528cfc02..21963e81a3bb11 100644
--- a/examples/chef/devices/rootnode_onofflight_samplemei.matter
+++ b/examples/chef/devices/rootnode_onofflight_samplemei.matter
@@ -1560,12 +1560,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1640,6 +1642,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1656,6 +1675,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
index ec32c8fd55d42c..aa85e87ed8abe2 100644
--- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
+++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
@@ -1435,12 +1435,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1515,6 +1517,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1531,6 +1550,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
index 04a03a890ee85a..8f8d48dc8e139c 100644
--- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
+++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
@@ -1435,12 +1435,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1515,6 +1517,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1531,6 +1550,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
index 2fc51aa6d2d3e9..4a6257ad02f377 100644
--- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
+++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
@@ -1363,12 +1363,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1443,6 +1445,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1459,6 +1478,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_pump_5f904818cc.matter b/examples/chef/devices/rootnode_pump_5f904818cc.matter
index 3b84270148a793..c33f70e684c356 100644
--- a/examples/chef/devices/rootnode_pump_5f904818cc.matter
+++ b/examples/chef/devices/rootnode_pump_5f904818cc.matter
@@ -1125,12 +1125,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1205,6 +1207,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1221,6 +1240,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_pump_a811bb33a0.matter b/examples/chef/devices/rootnode_pump_a811bb33a0.matter
index 02e9e66ca71ab2..7f3eca45b17441 100644
--- a/examples/chef/devices/rootnode_pump_a811bb33a0.matter
+++ b/examples/chef/devices/rootnode_pump_a811bb33a0.matter
@@ -1125,12 +1125,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1205,6 +1207,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1221,6 +1240,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_rainsensor_a7aa5d7738.matter b/examples/chef/devices/rootnode_rainsensor_a7aa5d7738.matter
index f4677e73306f05..1ff0f0572e8341 100644
--- a/examples/chef/devices/rootnode_rainsensor_a7aa5d7738.matter
+++ b/examples/chef/devices/rootnode_rainsensor_a7aa5d7738.matter
@@ -1333,12 +1333,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1413,6 +1415,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1429,6 +1448,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
index 9bb5cc3e5446ec..95257480b57b06 100644
--- a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
+++ b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
@@ -1080,12 +1080,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1160,6 +1162,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1176,6 +1195,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter b/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter
index 0707bf56091801..5e99cb764505e6 100644
--- a/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter
+++ b/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter
@@ -1410,12 +1410,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1490,6 +1492,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1506,6 +1525,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
index 4beb90738f307d..3e5faa36615ec3 100644
--- a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
+++ b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
@@ -1223,12 +1223,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1303,6 +1305,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1319,6 +1338,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter b/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter
index 4f9b45792ad70f..ceef32de847f63 100644
--- a/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter
+++ b/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter
@@ -1410,12 +1410,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1490,6 +1492,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1506,6 +1525,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
index 4a84aafc9526d8..a7c03f3acfbeea 100644
--- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
+++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
@@ -1483,12 +1483,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1563,6 +1565,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1579,6 +1598,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
index 74466e8f88f617..ca6ee8e778eda6 100644
--- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
+++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
@@ -1363,12 +1363,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1443,6 +1445,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1459,6 +1478,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
index 0b130ba09bed7c..b7e3072ee356fd 100644
--- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
+++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
@@ -1424,12 +1424,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1504,6 +1506,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1520,6 +1539,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_waterfreezedetector_dd94a13a16.matter b/examples/chef/devices/rootnode_waterfreezedetector_dd94a13a16.matter
index eb45f311cece37..910a50682a3f7f 100644
--- a/examples/chef/devices/rootnode_waterfreezedetector_dd94a13a16.matter
+++ b/examples/chef/devices/rootnode_waterfreezedetector_dd94a13a16.matter
@@ -1333,12 +1333,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1413,6 +1415,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1429,6 +1448,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter
index 951bd8e49c7c92..ff94acc11cd01c 100644
--- a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter
+++ b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter
@@ -1410,12 +1410,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1490,6 +1492,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1506,6 +1525,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_watervalve_6bb39f1f67.matter b/examples/chef/devices/rootnode_watervalve_6bb39f1f67.matter
index 4fd15cc54d26ab..0a3e9b01a2f6b0 100644
--- a/examples/chef/devices/rootnode_watervalve_6bb39f1f67.matter
+++ b/examples/chef/devices/rootnode_watervalve_6bb39f1f67.matter
@@ -1350,12 +1350,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1430,6 +1432,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1446,6 +1465,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
index 204d5974911184..7302d71d92f595 100644
--- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
+++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
@@ -1363,12 +1363,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1443,6 +1445,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1459,6 +1478,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/contact-sensor-app/bouffalolab/data_model/contact-sensor-app.matter b/examples/contact-sensor-app/bouffalolab/data_model/contact-sensor-app.matter
index e746c4293ed82b..ed88efd02a8772 100644
--- a/examples/contact-sensor-app/bouffalolab/data_model/contact-sensor-app.matter
+++ b/examples/contact-sensor-app/bouffalolab/data_model/contact-sensor-app.matter
@@ -1525,12 +1525,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1605,6 +1607,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1621,6 +1640,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
index ccf3fbd10e723e..512f8ece39fb5c 100644
--- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
+++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
@@ -1627,12 +1627,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1707,6 +1709,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1723,6 +1742,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter
index 6762116c46c720..e006924078cf26 100644
--- a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter
+++ b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter
@@ -1431,12 +1431,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1511,6 +1513,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1527,6 +1546,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter
index c882626f13b96f..cc2e0e8ecab5d6 100644
--- a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter
+++ b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter
@@ -1431,12 +1431,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1511,6 +1513,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1527,6 +1546,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter b/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter
index 69152058d55d6a..a499ed96e0fbd0 100644
--- a/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter
+++ b/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter
@@ -1228,12 +1228,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1308,6 +1310,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1324,6 +1343,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/dishwasher-app/silabs/data_model/dishwasher-thread-app.matter b/examples/dishwasher-app/silabs/data_model/dishwasher-thread-app.matter
index 727f8bdfbb5639..0606fd0dae65f2 100644
--- a/examples/dishwasher-app/silabs/data_model/dishwasher-thread-app.matter
+++ b/examples/dishwasher-app/silabs/data_model/dishwasher-thread-app.matter
@@ -1539,12 +1539,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1619,6 +1621,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1635,6 +1654,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/dishwasher-app/silabs/data_model/dishwasher-wifi-app.matter b/examples/dishwasher-app/silabs/data_model/dishwasher-wifi-app.matter
index f0fbfba4bee8fe..9c4c383815af94 100644
--- a/examples/dishwasher-app/silabs/data_model/dishwasher-wifi-app.matter
+++ b/examples/dishwasher-app/silabs/data_model/dishwasher-wifi-app.matter
@@ -1450,12 +1450,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1530,6 +1532,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1546,6 +1565,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/energy-management-app/energy-management-common/energy-management-app.matter b/examples/energy-management-app/energy-management-common/energy-management-app.matter
index 19b1517be746c8..a5e5d8e1364d39 100644
--- a/examples/energy-management-app/energy-management-common/energy-management-app.matter
+++ b/examples/energy-management-app/energy-management-common/energy-management-app.matter
@@ -1527,12 +1527,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1607,6 +1609,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1623,6 +1642,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/fabric-bridge-app/fabric-bridge-common/fabric-bridge-app.matter b/examples/fabric-bridge-app/fabric-bridge-common/fabric-bridge-app.matter
index 53c3b3363b5024..c108c8b099d831 100644
--- a/examples/fabric-bridge-app/fabric-bridge-common/fabric-bridge-app.matter
+++ b/examples/fabric-bridge-app/fabric-bridge-common/fabric-bridge-app.matter
@@ -1521,12 +1521,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1601,6 +1603,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1617,6 +1636,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/fabric-sync/bridge/fabric-bridge.matter b/examples/fabric-sync/bridge/fabric-bridge.matter
index 53c3b3363b5024..c108c8b099d831 100644
--- a/examples/fabric-sync/bridge/fabric-bridge.matter
+++ b/examples/fabric-sync/bridge/fabric-bridge.matter
@@ -1521,12 +1521,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1601,6 +1603,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1617,6 +1636,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter b/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter
index cd68deef8cb20d..4916cd5ef58970 100644
--- a/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter
+++ b/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter
@@ -1555,12 +1555,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1635,6 +1637,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1651,6 +1670,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/light-switch-app/light-switch-common/icd-lit-light-switch-app.matter b/examples/light-switch-app/light-switch-common/icd-lit-light-switch-app.matter
index 502636a904e60a..dc4a474f6eb3d3 100644
--- a/examples/light-switch-app/light-switch-common/icd-lit-light-switch-app.matter
+++ b/examples/light-switch-app/light-switch-common/icd-lit-light-switch-app.matter
@@ -1974,12 +1974,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2054,6 +2056,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2070,6 +2089,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter
index fff39097bf0039..dc7d42bdc6ae3e 100644
--- a/examples/light-switch-app/light-switch-common/light-switch-app.matter
+++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter
@@ -1974,12 +1974,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2054,6 +2056,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2070,6 +2089,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/light-switch-app/qpg/zap/switch.matter b/examples/light-switch-app/qpg/zap/switch.matter
index bb2cbe0082477b..3f89dbd48a42ae 100644
--- a/examples/light-switch-app/qpg/zap/switch.matter
+++ b/examples/light-switch-app/qpg/zap/switch.matter
@@ -2091,12 +2091,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2171,6 +2173,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2187,6 +2206,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.matter b/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.matter
index ac236688cb6029..5a30af3fcc238d 100644
--- a/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.matter
+++ b/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.matter
@@ -1880,12 +1880,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1960,6 +1962,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1976,6 +1995,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter
index cd5c6fc7810640..b6a9ac3745136b 100644
--- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter
+++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter
@@ -1581,12 +1581,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1661,6 +1663,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1677,6 +1696,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter
index 888565b8e75008..dc6874fbf025a4 100644
--- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter
+++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter
@@ -1705,12 +1705,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1785,6 +1787,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1801,6 +1820,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter
index 13da89122009a6..0ef081c8a5a944 100644
--- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter
+++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter
@@ -1616,12 +1616,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1696,6 +1698,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1712,6 +1731,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter
index 3b2dde41a7e2e2..c60699d846ae39 100644
--- a/examples/lighting-app/lighting-common/lighting-app.matter
+++ b/examples/lighting-app/lighting-common/lighting-app.matter
@@ -1841,12 +1841,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1921,6 +1923,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1937,6 +1956,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter
index b46592166c1a29..b9ddd61f52708b 100644
--- a/examples/lighting-app/nxp/zap/lighting-on-off.matter
+++ b/examples/lighting-app/nxp/zap/lighting-on-off.matter
@@ -1658,12 +1658,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1738,6 +1740,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1754,6 +1773,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app/qpg/zap/light.matter b/examples/lighting-app/qpg/zap/light.matter
index 9e96a8eefb6840..cbb7aeea2194bc 100644
--- a/examples/lighting-app/qpg/zap/light.matter
+++ b/examples/lighting-app/qpg/zap/light.matter
@@ -1705,12 +1705,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1785,6 +1787,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1801,6 +1820,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter
index 2a163472d76d96..cacaff24cbba8f 100644
--- a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter
+++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter
@@ -1621,12 +1621,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1701,6 +1703,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1717,6 +1736,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter
index edb049d5440844..7c9cc1f2d40e6a 100644
--- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter
+++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter
@@ -1875,12 +1875,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1955,6 +1957,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1971,6 +1990,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter
index abe527da52d6bc..642406f5552c1f 100644
--- a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter
+++ b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter
@@ -1492,12 +1492,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1572,6 +1574,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1588,6 +1607,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter
index c604704bbcedab..8b4f2246f414b5 100644
--- a/examples/lock-app/lock-common/lock-app.matter
+++ b/examples/lock-app/lock-common/lock-app.matter
@@ -1835,12 +1835,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1915,6 +1917,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1931,6 +1950,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lock-app/nxp/zap/lock-app.matter b/examples/lock-app/nxp/zap/lock-app.matter
index 40ce2f9aa11bf1..75d0264b1d8562 100644
--- a/examples/lock-app/nxp/zap/lock-app.matter
+++ b/examples/lock-app/nxp/zap/lock-app.matter
@@ -1448,12 +1448,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1528,6 +1530,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1544,6 +1563,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lock-app/qpg/zap/lock.matter b/examples/lock-app/qpg/zap/lock.matter
index 04ad01e69822f9..514542a316366c 100644
--- a/examples/lock-app/qpg/zap/lock.matter
+++ b/examples/lock-app/qpg/zap/lock.matter
@@ -1508,12 +1508,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1588,6 +1590,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1604,6 +1623,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/lock-app/silabs/data_model/lock-app.matter b/examples/lock-app/silabs/data_model/lock-app.matter
index d953d92f62cb61..b046f0ff49fc14 100644
--- a/examples/lock-app/silabs/data_model/lock-app.matter
+++ b/examples/lock-app/silabs/data_model/lock-app.matter
@@ -1835,12 +1835,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1915,6 +1917,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1931,6 +1950,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/log-source-app/log-source-common/log-source-app.matter b/examples/log-source-app/log-source-common/log-source-app.matter
index 4fb8d8d3773999..72110aafcd01b4 100644
--- a/examples/log-source-app/log-source-common/log-source-app.matter
+++ b/examples/log-source-app/log-source-common/log-source-app.matter
@@ -713,12 +713,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -793,6 +795,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -809,6 +828,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
endpoint 0 {
diff --git a/examples/microwave-oven-app/microwave-oven-common/microwave-oven-app.matter b/examples/microwave-oven-app/microwave-oven-common/microwave-oven-app.matter
index d92b50f80e95f4..b8a5570d96d4ec 100644
--- a/examples/microwave-oven-app/microwave-oven-common/microwave-oven-app.matter
+++ b/examples/microwave-oven-app/microwave-oven-common/microwave-oven-app.matter
@@ -1148,12 +1148,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1228,6 +1230,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1244,6 +1263,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/network-manager-app/network-manager-common/network-manager-app.matter b/examples/network-manager-app/network-manager-common/network-manager-app.matter
index c9fbb02c983809..a1c362817b4e4d 100644
--- a/examples/network-manager-app/network-manager-common/network-manager-app.matter
+++ b/examples/network-manager-app/network-manager-common/network-manager-app.matter
@@ -1262,12 +1262,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1342,6 +1344,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1358,6 +1377,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter
index 9319ae5a28f251..4b0b2997c2b261 100644
--- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter
+++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter
@@ -1178,12 +1178,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1258,6 +1260,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1274,6 +1293,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter
index 141ec10b71317f..95a8757cf8de5b 100644
--- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter
+++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter
@@ -1330,12 +1330,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1410,6 +1412,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1426,6 +1445,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter
index 3d67d53abadfd3..7286c5fd41f83d 100644
--- a/examples/placeholder/linux/apps/app1/config.matter
+++ b/examples/placeholder/linux/apps/app1/config.matter
@@ -2906,12 +2906,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2986,6 +2988,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -3002,6 +3021,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */
@@ -3032,12 +3055,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -3112,6 +3137,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -3128,6 +3170,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter
index 73581df42bc8b2..d06ccd4d1dfe94 100644
--- a/examples/placeholder/linux/apps/app2/config.matter
+++ b/examples/placeholder/linux/apps/app2/config.matter
@@ -2863,12 +2863,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2943,6 +2945,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2959,6 +2978,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */
@@ -2989,12 +3012,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -3069,6 +3094,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -3085,6 +3127,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter
index 92b5e7d4dccac9..42714e7c00ac50 100644
--- a/examples/pump-app/pump-common/pump-app.matter
+++ b/examples/pump-app/pump-common/pump-app.matter
@@ -1565,12 +1565,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1645,6 +1647,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1661,6 +1680,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/pump-app/silabs/data_model/pump-thread-app.matter b/examples/pump-app/silabs/data_model/pump-thread-app.matter
index 503eb564a694a5..b498bc053551ee 100644
--- a/examples/pump-app/silabs/data_model/pump-thread-app.matter
+++ b/examples/pump-app/silabs/data_model/pump-thread-app.matter
@@ -1565,12 +1565,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1645,6 +1647,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1661,6 +1680,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/pump-app/silabs/data_model/pump-wifi-app.matter b/examples/pump-app/silabs/data_model/pump-wifi-app.matter
index 503eb564a694a5..b498bc053551ee 100644
--- a/examples/pump-app/silabs/data_model/pump-wifi-app.matter
+++ b/examples/pump-app/silabs/data_model/pump-wifi-app.matter
@@ -1565,12 +1565,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1645,6 +1647,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1661,6 +1680,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
index 8434b069971ae4..b702b5e4213fec 100644
--- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
+++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
@@ -1440,12 +1440,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1520,6 +1522,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1536,6 +1555,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter b/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter
index 6d09035b049de8..2f772f7f80cb89 100644
--- a/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter
+++ b/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter
@@ -1080,12 +1080,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1160,6 +1162,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1176,6 +1195,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/refrigerator-app/silabs/data_model/refrigerator-thread-app.matter b/examples/refrigerator-app/silabs/data_model/refrigerator-thread-app.matter
index c8fa6629d9978d..a6eeee7e8f2710 100644
--- a/examples/refrigerator-app/silabs/data_model/refrigerator-thread-app.matter
+++ b/examples/refrigerator-app/silabs/data_model/refrigerator-thread-app.matter
@@ -1419,12 +1419,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1499,6 +1501,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1515,6 +1534,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/refrigerator-app/silabs/data_model/refrigerator-wifi-app.matter b/examples/refrigerator-app/silabs/data_model/refrigerator-wifi-app.matter
index 3c871bb6d93d19..717cada95dc215 100644
--- a/examples/refrigerator-app/silabs/data_model/refrigerator-wifi-app.matter
+++ b/examples/refrigerator-app/silabs/data_model/refrigerator-wifi-app.matter
@@ -1330,12 +1330,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1410,6 +1412,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1426,6 +1445,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/rvc-app/rvc-common/rvc-app.matter b/examples/rvc-app/rvc-common/rvc-app.matter
index c826cf0b1d6fc6..45a047db96da5b 100644
--- a/examples/rvc-app/rvc-common/rvc-app.matter
+++ b/examples/rvc-app/rvc-common/rvc-app.matter
@@ -1074,12 +1074,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1154,6 +1156,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1170,6 +1189,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter
index 0bf2d1ca1c1c61..42590b6289dd42 100644
--- a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter
+++ b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter
@@ -1767,12 +1767,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1847,6 +1849,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1863,6 +1882,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter
index 44828bad252a76..d6a82c11b9847d 100644
--- a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter
+++ b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter
@@ -1360,12 +1360,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1440,6 +1442,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1456,6 +1475,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/terms-and-conditions-app/terms-and-conditions-common/terms-and-conditions-app.matter b/examples/terms-and-conditions-app/terms-and-conditions-common/terms-and-conditions-app.matter
index 78d60f2bc15404..b6b9da603bba47 100644
--- a/examples/terms-and-conditions-app/terms-and-conditions-common/terms-and-conditions-app.matter
+++ b/examples/terms-and-conditions-app/terms-and-conditions-common/terms-and-conditions-app.matter
@@ -1176,12 +1176,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1256,6 +1258,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1272,6 +1291,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_br.matter b/examples/thermostat/nxp/zap/thermostat_matter_br.matter
index 2facf0aae2387c..df6179a33c3813 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_br.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_br.matter
@@ -1508,12 +1508,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1588,6 +1590,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1604,6 +1623,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
index 730ed8ffab9a33..082a05a80905c5 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
@@ -1431,12 +1431,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1511,6 +1513,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1527,6 +1546,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
index 50e24d2fa7303f..219be740e185b3 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
@@ -1342,12 +1342,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1422,6 +1424,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1438,6 +1457,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
index 1f698fd85310e2..0815e0ea559f55 100644
--- a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
+++ b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
@@ -1605,12 +1605,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1685,6 +1687,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1701,6 +1720,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter
index e80ed1ee9a8f92..68cc219b8a2244 100644
--- a/examples/thermostat/thermostat-common/thermostat.matter
+++ b/examples/thermostat/thermostat-common/thermostat.matter
@@ -1785,12 +1785,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1865,6 +1867,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1881,6 +1900,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/thread-br-app/thread-br-common/thread-br-app.matter b/examples/thread-br-app/thread-br-common/thread-br-app.matter
index 06e5778747b0ea..1c692284df0d74 100644
--- a/examples/thread-br-app/thread-br-common/thread-br-app.matter
+++ b/examples/thread-br-app/thread-br-common/thread-br-app.matter
@@ -1143,12 +1143,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1223,6 +1225,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1239,6 +1258,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter
index ba6b776619d7b4..94bce5db08efd6 100644
--- a/examples/tv-app/tv-common/tv-app.matter
+++ b/examples/tv-app/tv-common/tv-app.matter
@@ -2020,12 +2020,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2100,6 +2102,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2116,6 +2135,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */
@@ -2146,12 +2169,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2226,6 +2251,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2242,6 +2284,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
index 7654b66be372db..4f96676e05997d 100644
--- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
+++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
@@ -1598,12 +1598,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1678,6 +1680,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1694,6 +1713,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
index 39ba8c628eae13..abfa1d86518787 100644
--- a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
+++ b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
@@ -1988,12 +1988,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2068,6 +2070,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2084,6 +2103,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/water-leak-detector-app/water-leak-detector-common/water-leak-detector-app.matter b/examples/water-leak-detector-app/water-leak-detector-common/water-leak-detector-app.matter
index 854d7eeace4515..655a1bb63a3bf5 100644
--- a/examples/water-leak-detector-app/water-leak-detector-common/water-leak-detector-app.matter
+++ b/examples/water-leak-detector-app/water-leak-detector-common/water-leak-detector-app.matter
@@ -1427,12 +1427,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1507,6 +1509,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1523,6 +1542,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter
index 916dfc2305fa26..3b5ec53473df8f 100644
--- a/examples/window-app/common/window-app.matter
+++ b/examples/window-app/common/window-app.matter
@@ -1865,12 +1865,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -1945,6 +1947,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1961,6 +1980,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/integrations/docker/images/base/chip-build/version b/integrations/docker/images/base/chip-build/version
index 84d3e578126e6b..1f9edb7f3a097e 100644
--- a/integrations/docker/images/base/chip-build/version
+++ b/integrations/docker/images/base/chip-build/version
@@ -1 +1 @@
-113 : [Android] set java 8 for java docker
+115 : [nrfconnect] Add gcc-multilib and g++-multilib
diff --git a/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile b/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile
index 66a036a443a223..79fd5dd187b5f9 100644
--- a/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile
+++ b/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile
@@ -12,9 +12,8 @@ RUN set -x \
&& rm -rf /var/lib/apt/lists/ \
&& : # last line
-
-# Download Simplicity SDK v2024.12.0 (8627f84)
-RUN wget https://github.com/SiliconLabs/simplicity_sdk/releases/download/v2024.12.0/gecko-sdk.zip -O /tmp/simplicity_sdk.zip \
+# Download Simplicity SDK v2024.12.1-0 (da66128)
+RUN wget https://github.com/SiliconLabs/simplicity_sdk/releases/download/v2024.12.1-0/simplicity-sdk.zip -O /tmp/simplicity_sdk.zip \
&& unzip /tmp/simplicity_sdk.zip -d /tmp/simplicity_sdk \
&& rm -rf /tmp/simplicity_sdk.zip \
# Deleting files that are not needed to save space
@@ -29,14 +28,14 @@ RUN wget https://github.com/SiliconLabs/simplicity_sdk/releases/download/v2024.1
&& find /tmp/simplicity_sdk/platform/Device/SiliconLabs -mindepth 1 -maxdepth 1 -type d ! \( -name 'EFR32MG24' -o -name 'EFR32MG26' -o -name 'MGM24' -o -name 'MGM26' \) -exec rm -rf {} + \
&& : # last line
-# Clone WiSeConnect Wi-Fi and Bluetooth Software 2.10.3 (b6d6cb5)
-RUN git clone --depth=1 --single-branch --branch=2.10.3 https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git /tmp/wiseconnect-wifi-bt-sdk && \
+# Clone WiSeConnect Wi-Fi and Bluetooth Software 2.11.2 (3dbc243)
+RUN git clone --depth=1 --single-branch --branch=2.11.2 https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git /tmp/wiseconnect-wifi-bt-sdk && \
cd /tmp/wiseconnect-wifi-bt-sdk && \
rm -rf .git examples \
&& : # last line
-# Clone WiSeConnect SDK v3.4.0 (9f6db89)
-RUN git clone --depth=1 --single-branch --branch=v3.4.0 https://github.com/SiliconLabs/wiseconnect.git /tmp/wifi_sdk && \
+# Clone WiSeConnect SDK v3.4.1 (f675628)
+RUN git clone --depth=1 --single-branch --branch=v3.4.1 https://github.com/SiliconLabs/wiseconnect.git /tmp/wifi_sdk && \
cd /tmp/wifi_sdk && \
rm -rf .git examples components/device/stm32 \
&& : # last line
diff --git a/integrations/docker/images/stage-2/chip-build-nrf-platform/Dockerfile b/integrations/docker/images/stage-2/chip-build-nrf-platform/Dockerfile
index 9e827c4cd57874..0dbb47a76f7785 100644
--- a/integrations/docker/images/stage-2/chip-build-nrf-platform/Dockerfile
+++ b/integrations/docker/images/stage-2/chip-build-nrf-platform/Dockerfile
@@ -47,7 +47,7 @@ FROM ghcr.io/project-chip/chip-build:${VERSION}
# Tools for building, flashing and accessing device logs
RUN set -x \
&& apt-get update \
- && apt-get install --no-install-recommends -fy device-tree-compiler \
+ && apt-get install --no-install-recommends -fy device-tree-compiler gcc-multilib g++-multilib \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/ \
&& : # last line
diff --git a/scripts/py_matter_idl/matter_idl/lint/lint_rules_parser.py b/scripts/py_matter_idl/matter_idl/lint/lint_rules_parser.py
index 3f9745850f6ca5..6723c0956d18aa 100755
--- a/scripts/py_matter_idl/matter_idl/lint/lint_rules_parser.py
+++ b/scripts/py_matter_idl/matter_idl/lint/lint_rules_parser.py
@@ -90,6 +90,9 @@ def DecodeClusterFromXml(element: xml.etree.ElementTree.Element):
if 'optional' in attr.attrib and attr.attrib['optional'] == 'true':
continue
+ if 'apiMaturity' in attr.attrib and attr.attrib['apiMaturity'] == 'provisional':
+ continue
+
# when introducing access controls, the content of attributes may either be:
# myName
# or
@@ -112,6 +115,9 @@ def DecodeClusterFromXml(element: xml.etree.ElementTree.Element):
if 'optional' in cmd.attrib and cmd.attrib['optional'] == 'true':
continue
+ if 'apiMaturity' in cmd.attrib and cmd.attrib['apiMaturity'] == 'provisional':
+ continue
+
required_commands.append(RequiredCommand(
name=cmd.attrib["name"], code=parseNumberString(cmd.attrib['code'])))
diff --git a/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml b/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml
index 6c72700003dd72..f954fcfc8e579f 100644
--- a/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml
@@ -574,6 +574,8 @@ limitations under the License.
RecallScene
GetSceneMembership
GetSceneMembershipResponse
+ CopyScene
+ CopySceneResponse
@@ -706,6 +708,8 @@ limitations under the License.
RecallScene
GetSceneMembership
GetSceneMembershipResponse
+ CopyScene
+ CopySceneResponse
@@ -799,6 +803,8 @@ limitations under the License.
RecallScene
GetSceneMembership
GetSceneMembershipResponse
+ CopyScene
+ CopySceneResponse
@@ -873,6 +879,36 @@ limitations under the License.
+
+ MA-mounted-dimmable-load-control
+ CHIP
+ Mounted Dimmable Load Control
+ 0x0103
+ 0x0110
+ Simple
+ Endpoint
+
+
+
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CopyScene
+
+
+
MA-camera
CHIP
@@ -973,10 +1009,10 @@ limitations under the License.
Capacity
OperationMode
-
-
-
-
+
+
+
+
diff --git a/src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml
index 61dd99e58b5d29..b2b5e1c4327e1d 100644
--- a/src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml
@@ -24,6 +24,7 @@ limitations under the License.
+
@@ -42,8 +43,9 @@ limitations under the License.
-
-
+
+
+
@@ -114,7 +116,6 @@ limitations under the License.
-
A certificate signing request (CSR) from the server.
@@ -158,7 +159,7 @@ limitations under the License.
This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data.
-
+
@@ -169,5 +170,30 @@ limitations under the License.
+
+
+ This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate).
+
+
+
+
+
+
+
+
+ This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given.
+
+
+
+
+
+
+
+ This command SHALL contain the response of the SignVidVerificationRequest.
+
+
+
+
+
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 671c65988c6e17..a0c2a60d893e62 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -2697,12 +2697,14 @@ cluster OperationalCredentials = 62 {
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
+ optional octet_string<85> vidVerificationStatement = 6;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
- fabric_sensitive octet_string noc = 1;
- nullable fabric_sensitive octet_string icac = 2;
+ octet_string noc = 1;
+ nullable octet_string icac = 2;
+ optional octet_string vvsc = 3;
fabric_idx fabricIndex = 254;
}
@@ -2777,6 +2779,23 @@ cluster OperationalCredentials = 62 {
octet_string rootCACertificate = 0;
}
+ request struct SetVidVerificationStatementRequest {
+ optional vendor_id vendorID = 0;
+ optional octet_string vidVerificationStatement = 1;
+ optional octet_string vvsc = 2;
+ }
+
+ request struct SignVidVerificationRequestRequest {
+ fabric_idx fabricIndex = 0;
+ octet_string<32> clientChallenge = 1;
+ }
+
+ response struct SignVidVerificationResponse = 14 {
+ fabric_idx fabricIndex = 0;
+ int8u fabricBindingVersion = 1;
+ octet_string signature = 2;
+ }
+
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2793,6 +2812,10 @@ cluster OperationalCredentials = 62 {
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
+ /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
+ fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
+ /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
+ command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
index 2b79ba4e5b2e48..196e15669a86dd 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
@@ -16117,6 +16117,82 @@ public void onResponse(StructType invokeStructValue) {
}}, commandId, commandArgs, timedInvokeTimeoutMs);
}
+ public void setVidVerificationStatement(DefaultClusterCallback callback, Optional vendorID, Optional vidVerificationStatement, Optional vvsc) {
+ setVidVerificationStatement(callback, vendorID, vidVerificationStatement, vvsc, 0);
+ }
+
+ public void setVidVerificationStatement(DefaultClusterCallback callback, Optional vendorID, Optional vidVerificationStatement, Optional vvsc, int timedInvokeTimeoutMs) {
+ final long commandId = 12L;
+
+ ArrayList elements = new ArrayList<>();
+ final long vendorIDFieldID = 0L;
+ BaseTLVType vendorIDtlvValue = vendorID.map((nonOptionalvendorID) -> new UIntType(nonOptionalvendorID)).orElse(new EmptyType());
+ elements.add(new StructElement(vendorIDFieldID, vendorIDtlvValue));
+
+ final long vidVerificationStatementFieldID = 1L;
+ BaseTLVType vidVerificationStatementtlvValue = vidVerificationStatement.map((nonOptionalvidVerificationStatement) -> new ByteArrayType(nonOptionalvidVerificationStatement)).orElse(new EmptyType());
+ elements.add(new StructElement(vidVerificationStatementFieldID, vidVerificationStatementtlvValue));
+
+ final long vvscFieldID = 2L;
+ BaseTLVType vvsctlvValue = vvsc.map((nonOptionalvvsc) -> new ByteArrayType(nonOptionalvvsc)).orElse(new EmptyType());
+ elements.add(new StructElement(vvscFieldID, vvsctlvValue));
+
+ StructType commandArgs = new StructType(elements);
+ invoke(new InvokeCallbackImpl(callback) {
+ @Override
+ public void onResponse(StructType invokeStructValue) {
+ callback.onSuccess();
+ }}, commandId, commandArgs, timedInvokeTimeoutMs);
+ }
+
+ public void signVidVerificationRequest(SignVidVerificationResponseCallback callback, Integer fabricIndex, byte[] clientChallenge) {
+ signVidVerificationRequest(callback, fabricIndex, clientChallenge, 0);
+ }
+
+ public void signVidVerificationRequest(SignVidVerificationResponseCallback callback, Integer fabricIndex, byte[] clientChallenge, int timedInvokeTimeoutMs) {
+ final long commandId = 13L;
+
+ ArrayList elements = new ArrayList<>();
+ final long fabricIndexFieldID = 0L;
+ BaseTLVType fabricIndextlvValue = new UIntType(fabricIndex);
+ elements.add(new StructElement(fabricIndexFieldID, fabricIndextlvValue));
+
+ final long clientChallengeFieldID = 1L;
+ BaseTLVType clientChallengetlvValue = new ByteArrayType(clientChallenge);
+ elements.add(new StructElement(clientChallengeFieldID, clientChallengetlvValue));
+
+ StructType commandArgs = new StructType(elements);
+ invoke(new InvokeCallbackImpl(callback) {
+ @Override
+ public void onResponse(StructType invokeStructValue) {
+ final long fabricIndexFieldID = 0L;
+ Integer fabricIndex = null;
+ final long fabricBindingVersionFieldID = 1L;
+ Integer fabricBindingVersion = null;
+ final long signatureFieldID = 2L;
+ byte[] signature = null;
+ for (StructElement element: invokeStructValue.value()) {
+ if (element.contextTagNum() == fabricIndexFieldID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
+ UIntType castingValue = element.value(UIntType.class);
+ fabricIndex = castingValue.value(Integer.class);
+ }
+ } else if (element.contextTagNum() == fabricBindingVersionFieldID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
+ UIntType castingValue = element.value(UIntType.class);
+ fabricBindingVersion = castingValue.value(Integer.class);
+ }
+ } else if (element.contextTagNum() == signatureFieldID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.ByteArray) {
+ ByteArrayType castingValue = element.value(ByteArrayType.class);
+ signature = castingValue.value(byte[].class);
+ }
+ }
+ }
+ callback.onSuccess(fabricIndex, fabricBindingVersion, signature);
+ }}, commandId, commandArgs, timedInvokeTimeoutMs);
+ }
+
public interface AttestationResponseCallback extends BaseClusterCallback {
void onSuccess(byte[] attestationElements, byte[] attestationSignature);
}
@@ -16133,6 +16209,10 @@ public interface NOCResponseCallback extends BaseClusterCallback {
void onSuccess(Integer statusCode, Optional fabricIndex, Optional debugText);
}
+ public interface SignVidVerificationResponseCallback extends BaseClusterCallback {
+ void onSuccess(Integer fabricIndex, Integer fabricBindingVersion, byte[] signature);
+ }
+
public interface NOCsAttributeCallback extends BaseAttributeCallback {
void onSuccess(List value);
}
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java b/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java
index dcedf7c0539591..5614ac0f8fa5b6 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java
@@ -3077,12 +3077,14 @@ public static class OperationalCredentialsClusterFabricDescriptorStruct {
public Long fabricID;
public Long nodeID;
public String label;
+ public Optional vidVerificationStatement;
public Integer fabricIndex;
private static final long ROOT_PUBLIC_KEY_ID = 1L;
private static final long VENDOR_ID_ID = 2L;
private static final long FABRIC_ID_ID = 3L;
private static final long NODE_ID_ID = 4L;
private static final long LABEL_ID = 5L;
+ private static final long VID_VERIFICATION_STATEMENT_ID = 6L;
private static final long FABRIC_INDEX_ID = 254L;
public OperationalCredentialsClusterFabricDescriptorStruct(
@@ -3091,6 +3093,7 @@ public OperationalCredentialsClusterFabricDescriptorStruct(
Long fabricID,
Long nodeID,
String label,
+ Optional vidVerificationStatement,
Integer fabricIndex
) {
this.rootPublicKey = rootPublicKey;
@@ -3098,6 +3101,7 @@ public OperationalCredentialsClusterFabricDescriptorStruct(
this.fabricID = fabricID;
this.nodeID = nodeID;
this.label = label;
+ this.vidVerificationStatement = vidVerificationStatement;
this.fabricIndex = fabricIndex;
}
@@ -3108,6 +3112,7 @@ public StructType encodeTlv() {
values.add(new StructElement(FABRIC_ID_ID, new UIntType(fabricID)));
values.add(new StructElement(NODE_ID_ID, new UIntType(nodeID)));
values.add(new StructElement(LABEL_ID, new StringType(label)));
+ values.add(new StructElement(VID_VERIFICATION_STATEMENT_ID, vidVerificationStatement.map((nonOptionalvidVerificationStatement) -> new ByteArrayType(nonOptionalvidVerificationStatement)).orElse(new EmptyType())));
values.add(new StructElement(FABRIC_INDEX_ID, new UIntType(fabricIndex)));
return new StructType(values);
@@ -3122,6 +3127,7 @@ public static OperationalCredentialsClusterFabricDescriptorStruct decodeTlv(Base
Long fabricID = null;
Long nodeID = null;
String label = null;
+ Optional vidVerificationStatement = Optional.empty();
Integer fabricIndex = null;
for (StructElement element: ((StructType)tlvValue).value()) {
if (element.contextTagNum() == ROOT_PUBLIC_KEY_ID) {
@@ -3149,6 +3155,11 @@ public static OperationalCredentialsClusterFabricDescriptorStruct decodeTlv(Base
StringType castingValue = element.value(StringType.class);
label = castingValue.value(String.class);
}
+ } else if (element.contextTagNum() == VID_VERIFICATION_STATEMENT_ID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.ByteArray) {
+ ByteArrayType castingValue = element.value(ByteArrayType.class);
+ vidVerificationStatement = Optional.of(castingValue.value(byte[].class));
+ }
} else if (element.contextTagNum() == FABRIC_INDEX_ID) {
if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
UIntType castingValue = element.value(UIntType.class);
@@ -3162,6 +3173,7 @@ public static OperationalCredentialsClusterFabricDescriptorStruct decodeTlv(Base
fabricID,
nodeID,
label,
+ vidVerificationStatement,
fabricIndex
);
}
@@ -3185,6 +3197,9 @@ public String toString() {
output.append("\tlabel: ");
output.append(label);
output.append("\n");
+ output.append("\tvidVerificationStatement: ");
+ output.append(vidVerificationStatement.isPresent() ? Arrays.toString(vidVerificationStatement.get()) : "");
+ output.append("\n");
output.append("\tfabricIndex: ");
output.append(fabricIndex);
output.append("\n");
@@ -3195,18 +3210,22 @@ public String toString() {
public static class OperationalCredentialsClusterNOCStruct {
public byte[] noc;
public @Nullable byte[] icac;
+ public Optional vvsc;
public Integer fabricIndex;
private static final long NOC_ID = 1L;
private static final long ICAC_ID = 2L;
+ private static final long VVSC_ID = 3L;
private static final long FABRIC_INDEX_ID = 254L;
public OperationalCredentialsClusterNOCStruct(
byte[] noc,
@Nullable byte[] icac,
+ Optional vvsc,
Integer fabricIndex
) {
this.noc = noc;
this.icac = icac;
+ this.vvsc = vvsc;
this.fabricIndex = fabricIndex;
}
@@ -3214,6 +3233,7 @@ public StructType encodeTlv() {
ArrayList values = new ArrayList<>();
values.add(new StructElement(NOC_ID, new ByteArrayType(noc)));
values.add(new StructElement(ICAC_ID, icac != null ? new ByteArrayType(icac) : new NullType()));
+ values.add(new StructElement(VVSC_ID, vvsc.map((nonOptionalvvsc) -> new ByteArrayType(nonOptionalvvsc)).orElse(new EmptyType())));
values.add(new StructElement(FABRIC_INDEX_ID, new UIntType(fabricIndex)));
return new StructType(values);
@@ -3225,6 +3245,7 @@ public static OperationalCredentialsClusterNOCStruct decodeTlv(BaseTLVType tlvVa
}
byte[] noc = null;
@Nullable byte[] icac = null;
+ Optional vvsc = Optional.empty();
Integer fabricIndex = null;
for (StructElement element: ((StructType)tlvValue).value()) {
if (element.contextTagNum() == NOC_ID) {
@@ -3237,6 +3258,11 @@ public static OperationalCredentialsClusterNOCStruct decodeTlv(BaseTLVType tlvVa
ByteArrayType castingValue = element.value(ByteArrayType.class);
icac = castingValue.value(byte[].class);
}
+ } else if (element.contextTagNum() == VVSC_ID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.ByteArray) {
+ ByteArrayType castingValue = element.value(ByteArrayType.class);
+ vvsc = Optional.of(castingValue.value(byte[].class));
+ }
} else if (element.contextTagNum() == FABRIC_INDEX_ID) {
if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
UIntType castingValue = element.value(UIntType.class);
@@ -3247,6 +3273,7 @@ public static OperationalCredentialsClusterNOCStruct decodeTlv(BaseTLVType tlvVa
return new OperationalCredentialsClusterNOCStruct(
noc,
icac,
+ vvsc,
fabricIndex
);
}
@@ -3261,6 +3288,9 @@ public String toString() {
output.append("\ticac: ");
output.append(Arrays.toString(icac));
output.append("\n");
+ output.append("\tvvsc: ");
+ output.append(vvsc.isPresent() ? Arrays.toString(vvsc.get()) : "");
+ output.append("\n");
output.append("\tfabricIndex: ");
output.append(fabricIndex);
output.append("\n");
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
index 7b447ab45c3467..84f58394be1ab1 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
@@ -4710,7 +4710,9 @@ public enum Command {
UpdateNOC(7L),
UpdateFabricLabel(9L),
RemoveFabric(10L),
- AddTrustedRootCertificate(11L),;
+ AddTrustedRootCertificate(11L),
+ SetVidVerificationStatement(12L),
+ SignVidVerificationRequest(13L),;
private final long id;
Command(long id) {
this.id = id;
@@ -4864,6 +4866,40 @@ public static AddTrustedRootCertificateCommandField value(int id) throws NoSuchF
}
throw new NoSuchFieldError();
}
+ }public enum SetVidVerificationStatementCommandField {VendorID(0),VidVerificationStatement(1),Vvsc(2),;
+ private final int id;
+ SetVidVerificationStatementCommandField(int id) {
+ this.id = id;
+ }
+
+ public int getID() {
+ return id;
+ }
+ public static SetVidVerificationStatementCommandField value(int id) throws NoSuchFieldError {
+ for (SetVidVerificationStatementCommandField field : SetVidVerificationStatementCommandField.values()) {
+ if (field.getID() == id) {
+ return field;
+ }
+ }
+ throw new NoSuchFieldError();
+ }
+ }public enum SignVidVerificationRequestCommandField {FabricIndex(0),ClientChallenge(1),;
+ private final int id;
+ SignVidVerificationRequestCommandField(int id) {
+ this.id = id;
+ }
+
+ public int getID() {
+ return id;
+ }
+ public static SignVidVerificationRequestCommandField value(int id) throws NoSuchFieldError {
+ for (SignVidVerificationRequestCommandField field : SignVidVerificationRequestCommandField.values()) {
+ if (field.getID() == id) {
+ return field;
+ }
+ }
+ throw new NoSuchFieldError();
+ }
}@Override
public String getAttributeName(long id) throws NoSuchFieldError {
return Attribute.value(id).toString();
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java
index 01152f94a27e12..7eec9891f74967 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java
@@ -5221,6 +5221,32 @@ public void onError(Exception error) {
callback.onFailure(error);
}
}
+
+ public static class DelegatedOperationalCredentialsClusterSignVidVerificationResponseCallback implements ChipClusters.OperationalCredentialsCluster.SignVidVerificationResponseCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onSuccess(Integer fabricIndex, Integer fabricBindingVersion, byte[] signature) {
+ Map responseValues = new LinkedHashMap<>();
+
+ CommandResponseInfo fabricIndexResponseValue = new CommandResponseInfo("fabricIndex", "Integer");
+ responseValues.put(fabricIndexResponseValue, fabricIndex);
+ CommandResponseInfo fabricBindingVersionResponseValue = new CommandResponseInfo("fabricBindingVersion", "Integer");
+ responseValues.put(fabricBindingVersionResponseValue, fabricBindingVersion);
+ CommandResponseInfo signatureResponseValue = new CommandResponseInfo("signature", "byte[]");
+ responseValues.put(signatureResponseValue, signature);
+ callback.onSuccess(responseValues);
+ }
+
+ @Override
+ public void onError(Exception error) {
+ callback.onFailure(error);
+ }
+ }
public static class DelegatedOperationalCredentialsClusterNOCsAttributeCallback implements ChipClusters.OperationalCredentialsCluster.NOCsAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
@@ -26000,6 +26026,57 @@ public Map> getCommandMap() {
);
operationalCredentialsClusterInteractionInfoMap.put("addTrustedRootCertificate", operationalCredentialsaddTrustedRootCertificateInteractionInfo);
+ Map operationalCredentialssetVidVerificationStatementCommandParams = new LinkedHashMap();
+
+ CommandParameterInfo operationalCredentialssetVidVerificationStatementvendorIDCommandParameterInfo = new CommandParameterInfo("vendorID", Optional.class, Integer.class);
+ operationalCredentialssetVidVerificationStatementCommandParams.put("vendorID",operationalCredentialssetVidVerificationStatementvendorIDCommandParameterInfo);
+
+ CommandParameterInfo operationalCredentialssetVidVerificationStatementvidVerificationStatementCommandParameterInfo = new CommandParameterInfo("vidVerificationStatement", Optional.class, byte[].class);
+ operationalCredentialssetVidVerificationStatementCommandParams.put("vidVerificationStatement",operationalCredentialssetVidVerificationStatementvidVerificationStatementCommandParameterInfo);
+
+ CommandParameterInfo operationalCredentialssetVidVerificationStatementvvscCommandParameterInfo = new CommandParameterInfo("vvsc", Optional.class, byte[].class);
+ operationalCredentialssetVidVerificationStatementCommandParams.put("vvsc",operationalCredentialssetVidVerificationStatementvvscCommandParameterInfo);
+ InteractionInfo operationalCredentialssetVidVerificationStatementInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.OperationalCredentialsCluster) cluster)
+ .setVidVerificationStatement((DefaultClusterCallback) callback
+ , (Optional)
+ commandArguments.get("vendorID")
+ , (Optional)
+ commandArguments.get("vidVerificationStatement")
+ , (Optional)
+ commandArguments.get("vvsc")
+ );
+ },
+ () -> new DelegatedDefaultClusterCallback(),
+ operationalCredentialssetVidVerificationStatementCommandParams
+ );
+ operationalCredentialsClusterInteractionInfoMap.put("setVidVerificationStatement", operationalCredentialssetVidVerificationStatementInteractionInfo);
+
+ Map operationalCredentialssignVidVerificationRequestCommandParams = new LinkedHashMap();
+
+ CommandParameterInfo operationalCredentialssignVidVerificationRequestfabricIndexCommandParameterInfo = new CommandParameterInfo("fabricIndex", Integer.class, Integer.class);
+ operationalCredentialssignVidVerificationRequestCommandParams.put("fabricIndex",operationalCredentialssignVidVerificationRequestfabricIndexCommandParameterInfo);
+
+ CommandParameterInfo operationalCredentialssignVidVerificationRequestclientChallengeCommandParameterInfo = new CommandParameterInfo("clientChallenge", byte[].class, byte[].class);
+ operationalCredentialssignVidVerificationRequestCommandParams.put("clientChallenge",operationalCredentialssignVidVerificationRequestclientChallengeCommandParameterInfo);
+ InteractionInfo operationalCredentialssignVidVerificationRequestInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.OperationalCredentialsCluster) cluster)
+ .signVidVerificationRequest((ChipClusters.OperationalCredentialsCluster.SignVidVerificationResponseCallback) callback
+ , (Integer)
+ commandArguments.get("fabricIndex")
+
+ , (byte[])
+ commandArguments.get("clientChallenge")
+
+ );
+ },
+ () -> new DelegatedOperationalCredentialsClusterSignVidVerificationResponseCallback(),
+ operationalCredentialssignVidVerificationRequestCommandParams
+ );
+ operationalCredentialsClusterInteractionInfoMap.put("signVidVerificationRequest", operationalCredentialssignVidVerificationRequestInteractionInfo);
+
commandMap.put("operationalCredentials", operationalCredentialsClusterInteractionInfoMap);
Map groupKeyManagementClusterInteractionInfoMap = new LinkedHashMap<>();
diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/OperationalCredentialsClusterFabricDescriptorStruct.kt b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/OperationalCredentialsClusterFabricDescriptorStruct.kt
index 938092f700fc2a..e5ff8f160860a1 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/OperationalCredentialsClusterFabricDescriptorStruct.kt
+++ b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/OperationalCredentialsClusterFabricDescriptorStruct.kt
@@ -17,6 +17,7 @@
package chip.devicecontroller.cluster.structs
import chip.devicecontroller.cluster.*
+import java.util.Optional
import matter.tlv.ContextSpecificTag
import matter.tlv.Tag
import matter.tlv.TlvReader
@@ -28,6 +29,7 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
val fabricID: ULong,
val nodeID: ULong,
val label: String,
+ val vidVerificationStatement: Optional,
val fabricIndex: UInt,
) {
override fun toString(): String = buildString {
@@ -37,6 +39,7 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
append("\tfabricID : $fabricID\n")
append("\tnodeID : $nodeID\n")
append("\tlabel : $label\n")
+ append("\tvidVerificationStatement : $vidVerificationStatement\n")
append("\tfabricIndex : $fabricIndex\n")
append("}\n")
}
@@ -49,6 +52,10 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
put(ContextSpecificTag(TAG_FABRIC_ID), fabricID)
put(ContextSpecificTag(TAG_NODE_ID), nodeID)
put(ContextSpecificTag(TAG_LABEL), label)
+ if (vidVerificationStatement.isPresent) {
+ val optvidVerificationStatement = vidVerificationStatement.get()
+ put(ContextSpecificTag(TAG_VID_VERIFICATION_STATEMENT), optvidVerificationStatement)
+ }
put(ContextSpecificTag(TAG_FABRIC_INDEX), fabricIndex)
endStructure()
}
@@ -60,6 +67,7 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
private const val TAG_FABRIC_ID = 3
private const val TAG_NODE_ID = 4
private const val TAG_LABEL = 5
+ private const val TAG_VID_VERIFICATION_STATEMENT = 6
private const val TAG_FABRIC_INDEX = 254
fun fromTlv(
@@ -72,6 +80,12 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
val fabricID = tlvReader.getULong(ContextSpecificTag(TAG_FABRIC_ID))
val nodeID = tlvReader.getULong(ContextSpecificTag(TAG_NODE_ID))
val label = tlvReader.getString(ContextSpecificTag(TAG_LABEL))
+ val vidVerificationStatement =
+ if (tlvReader.isNextTag(ContextSpecificTag(TAG_VID_VERIFICATION_STATEMENT))) {
+ Optional.of(tlvReader.getByteArray(ContextSpecificTag(TAG_VID_VERIFICATION_STATEMENT)))
+ } else {
+ Optional.empty()
+ }
val fabricIndex = tlvReader.getUInt(ContextSpecificTag(TAG_FABRIC_INDEX))
tlvReader.exitContainer()
@@ -82,6 +96,7 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
fabricID,
nodeID,
label,
+ vidVerificationStatement,
fabricIndex,
)
}
diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/OperationalCredentialsClusterNOCStruct.kt b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/OperationalCredentialsClusterNOCStruct.kt
index 266ab471fa0d10..961c58f6a8c8d5 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/OperationalCredentialsClusterNOCStruct.kt
+++ b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/OperationalCredentialsClusterNOCStruct.kt
@@ -17,6 +17,7 @@
package chip.devicecontroller.cluster.structs
import chip.devicecontroller.cluster.*
+import java.util.Optional
import matter.tlv.ContextSpecificTag
import matter.tlv.Tag
import matter.tlv.TlvReader
@@ -25,12 +26,14 @@ import matter.tlv.TlvWriter
class OperationalCredentialsClusterNOCStruct(
val noc: ByteArray,
val icac: ByteArray?,
+ val vvsc: Optional,
val fabricIndex: UInt,
) {
override fun toString(): String = buildString {
append("OperationalCredentialsClusterNOCStruct {\n")
append("\tnoc : $noc\n")
append("\ticac : $icac\n")
+ append("\tvvsc : $vvsc\n")
append("\tfabricIndex : $fabricIndex\n")
append("}\n")
}
@@ -44,6 +47,10 @@ class OperationalCredentialsClusterNOCStruct(
} else {
putNull(ContextSpecificTag(TAG_ICAC))
}
+ if (vvsc.isPresent) {
+ val optvvsc = vvsc.get()
+ put(ContextSpecificTag(TAG_VVSC), optvvsc)
+ }
put(ContextSpecificTag(TAG_FABRIC_INDEX), fabricIndex)
endStructure()
}
@@ -52,6 +59,7 @@ class OperationalCredentialsClusterNOCStruct(
companion object {
private const val TAG_NOC = 1
private const val TAG_ICAC = 2
+ private const val TAG_VVSC = 3
private const val TAG_FABRIC_INDEX = 254
fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): OperationalCredentialsClusterNOCStruct {
@@ -64,11 +72,17 @@ class OperationalCredentialsClusterNOCStruct(
tlvReader.getNull(ContextSpecificTag(TAG_ICAC))
null
}
+ val vvsc =
+ if (tlvReader.isNextTag(ContextSpecificTag(TAG_VVSC))) {
+ Optional.of(tlvReader.getByteArray(ContextSpecificTag(TAG_VVSC)))
+ } else {
+ Optional.empty()
+ }
val fabricIndex = tlvReader.getUInt(ContextSpecificTag(TAG_FABRIC_INDEX))
tlvReader.exitContainer()
- return OperationalCredentialsClusterNOCStruct(noc, icac, fabricIndex)
+ return OperationalCredentialsClusterNOCStruct(noc, icac, vvsc, fabricIndex)
}
}
}
diff --git a/src/controller/java/generated/java/matter/controller/cluster/clusters/OperationalCredentialsCluster.kt b/src/controller/java/generated/java/matter/controller/cluster/clusters/OperationalCredentialsCluster.kt
index d96efd654fe092..92c39cc5209acf 100644
--- a/src/controller/java/generated/java/matter/controller/cluster/clusters/OperationalCredentialsCluster.kt
+++ b/src/controller/java/generated/java/matter/controller/cluster/clusters/OperationalCredentialsCluster.kt
@@ -55,6 +55,12 @@ class OperationalCredentialsCluster(
class NOCResponse(val statusCode: UByte, val fabricIndex: UByte?, val debugText: String?)
+ class SignVidVerificationResponse(
+ val fabricIndex: UByte,
+ val fabricBindingVersion: UByte,
+ val signature: ByteArray,
+ )
+
class NOCsAttribute(val value: List)
sealed class NOCsAttributeSubscriptionState {
@@ -660,6 +666,120 @@ class OperationalCredentialsCluster(
logger.log(Level.FINE, "Invoke command succeeded: ${response}")
}
+ suspend fun setVidVerificationStatement(
+ vendorID: UShort?,
+ vidVerificationStatement: ByteArray?,
+ vvsc: ByteArray?,
+ timedInvokeTimeout: Duration? = null,
+ ) {
+ val commandId: UInt = 12u
+
+ val tlvWriter = TlvWriter()
+ tlvWriter.startStructure(AnonymousTag)
+
+ val TAG_VENDOR_ID_REQ: Int = 0
+ vendorID?.let { tlvWriter.put(ContextSpecificTag(TAG_VENDOR_ID_REQ), vendorID) }
+
+ val TAG_VID_VERIFICATION_STATEMENT_REQ: Int = 1
+ vidVerificationStatement?.let {
+ tlvWriter.put(
+ ContextSpecificTag(TAG_VID_VERIFICATION_STATEMENT_REQ),
+ vidVerificationStatement,
+ )
+ }
+
+ val TAG_VVSC_REQ: Int = 2
+ vvsc?.let { tlvWriter.put(ContextSpecificTag(TAG_VVSC_REQ), vvsc) }
+ tlvWriter.endStructure()
+
+ val request: InvokeRequest =
+ InvokeRequest(
+ CommandPath(endpointId, clusterId = CLUSTER_ID, commandId),
+ tlvPayload = tlvWriter.getEncoded(),
+ timedRequest = timedInvokeTimeout,
+ )
+
+ val response: InvokeResponse = controller.invoke(request)
+ logger.log(Level.FINE, "Invoke command succeeded: ${response}")
+ }
+
+ suspend fun signVidVerificationRequest(
+ fabricIndex: UByte,
+ clientChallenge: ByteArray,
+ timedInvokeTimeout: Duration? = null,
+ ): SignVidVerificationResponse {
+ val commandId: UInt = 13u
+
+ val tlvWriter = TlvWriter()
+ tlvWriter.startStructure(AnonymousTag)
+
+ val TAG_FABRIC_INDEX_REQ: Int = 0
+ tlvWriter.put(ContextSpecificTag(TAG_FABRIC_INDEX_REQ), fabricIndex)
+
+ val TAG_CLIENT_CHALLENGE_REQ: Int = 1
+ tlvWriter.put(ContextSpecificTag(TAG_CLIENT_CHALLENGE_REQ), clientChallenge)
+ tlvWriter.endStructure()
+
+ val request: InvokeRequest =
+ InvokeRequest(
+ CommandPath(endpointId, clusterId = CLUSTER_ID, commandId),
+ tlvPayload = tlvWriter.getEncoded(),
+ timedRequest = timedInvokeTimeout,
+ )
+
+ val response: InvokeResponse = controller.invoke(request)
+ logger.log(Level.FINE, "Invoke command succeeded: ${response}")
+
+ val tlvReader = TlvReader(response.payload)
+ tlvReader.enterStructure(AnonymousTag)
+ val TAG_FABRIC_INDEX: Int = 0
+ var fabricIndex_decoded: UByte? = null
+
+ val TAG_FABRIC_BINDING_VERSION: Int = 1
+ var fabricBindingVersion_decoded: UByte? = null
+
+ val TAG_SIGNATURE: Int = 2
+ var signature_decoded: ByteArray? = null
+
+ while (!tlvReader.isEndOfContainer()) {
+ val tag = tlvReader.peekElement().tag
+
+ if (tag == ContextSpecificTag(TAG_FABRIC_INDEX)) {
+ fabricIndex_decoded = tlvReader.getUByte(tag)
+ }
+
+ if (tag == ContextSpecificTag(TAG_FABRIC_BINDING_VERSION)) {
+ fabricBindingVersion_decoded = tlvReader.getUByte(tag)
+ }
+
+ if (tag == ContextSpecificTag(TAG_SIGNATURE)) {
+ signature_decoded = tlvReader.getByteArray(tag)
+ } else {
+ tlvReader.skipElement()
+ }
+ }
+
+ if (fabricIndex_decoded == null) {
+ throw IllegalStateException("fabricIndex not found in TLV")
+ }
+
+ if (fabricBindingVersion_decoded == null) {
+ throw IllegalStateException("fabricBindingVersion not found in TLV")
+ }
+
+ if (signature_decoded == null) {
+ throw IllegalStateException("signature not found in TLV")
+ }
+
+ tlvReader.exitContainer()
+
+ return SignVidVerificationResponse(
+ fabricIndex_decoded,
+ fabricBindingVersion_decoded,
+ signature_decoded,
+ )
+ }
+
suspend fun readNOCsAttribute(): NOCsAttribute {
val ATTRIBUTE_ID: UInt = 0u
diff --git a/src/controller/java/generated/java/matter/controller/cluster/structs/OperationalCredentialsClusterFabricDescriptorStruct.kt b/src/controller/java/generated/java/matter/controller/cluster/structs/OperationalCredentialsClusterFabricDescriptorStruct.kt
index 6fad97097ca764..fb9038728bc870 100644
--- a/src/controller/java/generated/java/matter/controller/cluster/structs/OperationalCredentialsClusterFabricDescriptorStruct.kt
+++ b/src/controller/java/generated/java/matter/controller/cluster/structs/OperationalCredentialsClusterFabricDescriptorStruct.kt
@@ -16,6 +16,7 @@
*/
package matter.controller.cluster.structs
+import java.util.Optional
import matter.controller.cluster.*
import matter.tlv.ContextSpecificTag
import matter.tlv.Tag
@@ -28,6 +29,7 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
val fabricID: ULong,
val nodeID: ULong,
val label: String,
+ val vidVerificationStatement: Optional,
val fabricIndex: UByte,
) {
override fun toString(): String = buildString {
@@ -37,6 +39,7 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
append("\tfabricID : $fabricID\n")
append("\tnodeID : $nodeID\n")
append("\tlabel : $label\n")
+ append("\tvidVerificationStatement : $vidVerificationStatement\n")
append("\tfabricIndex : $fabricIndex\n")
append("}\n")
}
@@ -49,6 +52,10 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
put(ContextSpecificTag(TAG_FABRIC_ID), fabricID)
put(ContextSpecificTag(TAG_NODE_ID), nodeID)
put(ContextSpecificTag(TAG_LABEL), label)
+ if (vidVerificationStatement.isPresent) {
+ val optvidVerificationStatement = vidVerificationStatement.get()
+ put(ContextSpecificTag(TAG_VID_VERIFICATION_STATEMENT), optvidVerificationStatement)
+ }
put(ContextSpecificTag(TAG_FABRIC_INDEX), fabricIndex)
endStructure()
}
@@ -60,6 +67,7 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
private const val TAG_FABRIC_ID = 3
private const val TAG_NODE_ID = 4
private const val TAG_LABEL = 5
+ private const val TAG_VID_VERIFICATION_STATEMENT = 6
private const val TAG_FABRIC_INDEX = 254
fun fromTlv(
@@ -72,6 +80,12 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
val fabricID = tlvReader.getULong(ContextSpecificTag(TAG_FABRIC_ID))
val nodeID = tlvReader.getULong(ContextSpecificTag(TAG_NODE_ID))
val label = tlvReader.getString(ContextSpecificTag(TAG_LABEL))
+ val vidVerificationStatement =
+ if (tlvReader.isNextTag(ContextSpecificTag(TAG_VID_VERIFICATION_STATEMENT))) {
+ Optional.of(tlvReader.getByteArray(ContextSpecificTag(TAG_VID_VERIFICATION_STATEMENT)))
+ } else {
+ Optional.empty()
+ }
val fabricIndex = tlvReader.getUByte(ContextSpecificTag(TAG_FABRIC_INDEX))
tlvReader.exitContainer()
@@ -82,6 +96,7 @@ class OperationalCredentialsClusterFabricDescriptorStruct(
fabricID,
nodeID,
label,
+ vidVerificationStatement,
fabricIndex,
)
}
diff --git a/src/controller/java/generated/java/matter/controller/cluster/structs/OperationalCredentialsClusterNOCStruct.kt b/src/controller/java/generated/java/matter/controller/cluster/structs/OperationalCredentialsClusterNOCStruct.kt
index 3a743a2fcf0423..42b76e139a9007 100644
--- a/src/controller/java/generated/java/matter/controller/cluster/structs/OperationalCredentialsClusterNOCStruct.kt
+++ b/src/controller/java/generated/java/matter/controller/cluster/structs/OperationalCredentialsClusterNOCStruct.kt
@@ -16,6 +16,7 @@
*/
package matter.controller.cluster.structs
+import java.util.Optional
import matter.controller.cluster.*
import matter.tlv.ContextSpecificTag
import matter.tlv.Tag
@@ -25,12 +26,14 @@ import matter.tlv.TlvWriter
class OperationalCredentialsClusterNOCStruct(
val noc: ByteArray,
val icac: ByteArray?,
+ val vvsc: Optional,
val fabricIndex: UByte,
) {
override fun toString(): String = buildString {
append("OperationalCredentialsClusterNOCStruct {\n")
append("\tnoc : $noc\n")
append("\ticac : $icac\n")
+ append("\tvvsc : $vvsc\n")
append("\tfabricIndex : $fabricIndex\n")
append("}\n")
}
@@ -44,6 +47,10 @@ class OperationalCredentialsClusterNOCStruct(
} else {
putNull(ContextSpecificTag(TAG_ICAC))
}
+ if (vvsc.isPresent) {
+ val optvvsc = vvsc.get()
+ put(ContextSpecificTag(TAG_VVSC), optvvsc)
+ }
put(ContextSpecificTag(TAG_FABRIC_INDEX), fabricIndex)
endStructure()
}
@@ -52,6 +59,7 @@ class OperationalCredentialsClusterNOCStruct(
companion object {
private const val TAG_NOC = 1
private const val TAG_ICAC = 2
+ private const val TAG_VVSC = 3
private const val TAG_FABRIC_INDEX = 254
fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): OperationalCredentialsClusterNOCStruct {
@@ -64,11 +72,17 @@ class OperationalCredentialsClusterNOCStruct(
tlvReader.getNull(ContextSpecificTag(TAG_ICAC))
null
}
+ val vvsc =
+ if (tlvReader.isNextTag(ContextSpecificTag(TAG_VVSC))) {
+ Optional.of(tlvReader.getByteArray(ContextSpecificTag(TAG_VVSC)))
+ } else {
+ Optional.empty()
+ }
val fabricIndex = tlvReader.getUByte(ContextSpecificTag(TAG_FABRIC_INDEX))
tlvReader.exitContainer()
- return OperationalCredentialsClusterNOCStruct(noc, icac, fabricIndex)
+ return OperationalCredentialsClusterNOCStruct(noc, icac, vvsc, fabricIndex)
}
}
}
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index 1b50adca846c00..588d3c6120b139 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -9854,6 +9854,22 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
reinterpret_cast(entry_0.icac.Value().data()));
newElement_0_icac = newElement_0_icacByteArray;
}
+ jobject newElement_0_vvsc;
+ if (!entry_0.vvsc.HasValue())
+ {
+ chip::JniReferences::GetInstance().CreateOptional(nullptr, newElement_0_vvsc);
+ }
+ else
+ {
+ jobject newElement_0_vvscInsideOptional;
+ jbyteArray newElement_0_vvscInsideOptionalByteArray =
+ env->NewByteArray(static_cast(entry_0.vvsc.Value().size()));
+ env->SetByteArrayRegion(newElement_0_vvscInsideOptionalByteArray, 0,
+ static_cast(entry_0.vvsc.Value().size()),
+ reinterpret_cast(entry_0.vvsc.Value().data()));
+ newElement_0_vvscInsideOptional = newElement_0_vvscInsideOptionalByteArray;
+ chip::JniReferences::GetInstance().CreateOptional(newElement_0_vvscInsideOptional, newElement_0_vvsc);
+ }
jobject newElement_0_fabricIndex;
std::string newElement_0_fabricIndexClassName = "java/lang/Integer";
std::string newElement_0_fabricIndexCtorSignature = "(I)V";
@@ -9874,7 +9890,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
jmethodID NOCStructStructCtor_1;
err = chip::JniReferences::GetInstance().FindMethod(env, NOCStructStructClass_1, "",
- "([B[BLjava/lang/Integer;)V", &NOCStructStructCtor_1);
+ "([B[BLjava/util/Optional;Ljava/lang/Integer;)V",
+ &NOCStructStructCtor_1);
if (err != CHIP_NO_ERROR || NOCStructStructCtor_1 == nullptr)
{
ChipLogError(Zcl, "Could not find ChipStructs$OperationalCredentialsClusterNOCStruct constructor");
@@ -9882,7 +9899,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
}
newElement_0 = env->NewObject(NOCStructStructClass_1, NOCStructStructCtor_1, newElement_0_noc,
- newElement_0_icac, newElement_0_fabricIndex);
+ newElement_0_icac, newElement_0_vvsc, newElement_0_fabricIndex);
}
chip::JniReferences::GetInstance().AddToList(value, newElement_0);
}
@@ -9933,6 +9950,24 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
jninewElement_0_nodeID, newElement_0_nodeID);
jobject newElement_0_label;
LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label));
+ jobject newElement_0_vidVerificationStatement;
+ if (!entry_0.vidVerificationStatement.HasValue())
+ {
+ chip::JniReferences::GetInstance().CreateOptional(nullptr, newElement_0_vidVerificationStatement);
+ }
+ else
+ {
+ jobject newElement_0_vidVerificationStatementInsideOptional;
+ jbyteArray newElement_0_vidVerificationStatementInsideOptionalByteArray =
+ env->NewByteArray(static_cast(entry_0.vidVerificationStatement.Value().size()));
+ env->SetByteArrayRegion(newElement_0_vidVerificationStatementInsideOptionalByteArray, 0,
+ static_cast(entry_0.vidVerificationStatement.Value().size()),
+ reinterpret_cast(entry_0.vidVerificationStatement.Value().data()));
+ newElement_0_vidVerificationStatementInsideOptional =
+ newElement_0_vidVerificationStatementInsideOptionalByteArray;
+ chip::JniReferences::GetInstance().CreateOptional(newElement_0_vidVerificationStatementInsideOptional,
+ newElement_0_vidVerificationStatement);
+ }
jobject newElement_0_fabricIndex;
std::string newElement_0_fabricIndexClassName = "java/lang/Integer";
std::string newElement_0_fabricIndexCtorSignature = "(I)V";
@@ -9953,10 +9988,11 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
}
jmethodID fabricDescriptorStructStructCtor_1;
- err = chip::JniReferences::GetInstance().FindMethod(
- env, fabricDescriptorStructStructClass_1, "",
- "([BLjava/lang/Integer;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;Ljava/lang/Integer;)V",
- &fabricDescriptorStructStructCtor_1);
+ err =
+ chip::JniReferences::GetInstance().FindMethod(env, fabricDescriptorStructStructClass_1, "",
+ "([BLjava/lang/Integer;Ljava/lang/Long;Ljava/lang/Long;Ljava/"
+ "lang/String;Ljava/util/Optional;Ljava/lang/Integer;)V",
+ &fabricDescriptorStructStructCtor_1);
if (err != CHIP_NO_ERROR || fabricDescriptorStructStructCtor_1 == nullptr)
{
ChipLogError(Zcl,
@@ -9966,7 +10002,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
newElement_0 = env->NewObject(fabricDescriptorStructStructClass_1, fabricDescriptorStructStructCtor_1,
newElement_0_rootPublicKey, newElement_0_vendorID, newElement_0_fabricID,
- newElement_0_nodeID, newElement_0_label, newElement_0_fabricIndex);
+ newElement_0_nodeID, newElement_0_label, newElement_0_vidVerificationStatement,
+ newElement_0_fabricIndex);
}
chip::JniReferences::GetInstance().AddToList(value, newElement_0);
}
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 8bda4542b106ec..7c67594c890494 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -3333,6 +3333,23 @@ class ChipClusters:
"rootCACertificate": "bytes",
},
},
+ 0x0000000C: {
+ "commandId": 0x0000000C,
+ "commandName": "SetVidVerificationStatement",
+ "args": {
+ "vendorID": "int",
+ "vidVerificationStatement": "bytes",
+ "vvsc": "bytes",
+ },
+ },
+ 0x0000000D: {
+ "commandId": 0x0000000D,
+ "commandName": "SignVidVerificationRequest",
+ "args": {
+ "fabricIndex": "int",
+ "clientChallenge": "bytes",
+ },
+ },
},
"attributes": {
0x00000000: {
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 47a513abcc9f09..ff9e61fccb3937 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -12348,6 +12348,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
ClusterObjectFieldDescriptor(Label="fabricID", Tag=3, Type=uint),
ClusterObjectFieldDescriptor(Label="nodeID", Tag=4, Type=uint),
ClusterObjectFieldDescriptor(Label="label", Tag=5, Type=str),
+ ClusterObjectFieldDescriptor(Label="vidVerificationStatement", Tag=6, Type=typing.Optional[bytes]),
ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint),
])
@@ -12356,6 +12357,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
fabricID: 'uint' = 0
nodeID: 'uint' = 0
label: 'str' = ""
+ vidVerificationStatement: 'typing.Optional[bytes]' = None
fabricIndex: 'uint' = 0
@dataclass
@@ -12366,11 +12368,13 @@ def descriptor(cls) -> ClusterObjectDescriptor:
Fields=[
ClusterObjectFieldDescriptor(Label="noc", Tag=1, Type=bytes),
ClusterObjectFieldDescriptor(Label="icac", Tag=2, Type=typing.Union[Nullable, bytes]),
+ ClusterObjectFieldDescriptor(Label="vvsc", Tag=3, Type=typing.Optional[bytes]),
ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint),
])
noc: 'bytes' = b""
icac: 'typing.Union[Nullable, bytes]' = NullValue
+ vvsc: 'typing.Optional[bytes]' = None
fabricIndex: 'uint' = 0
class Commands:
@@ -12586,6 +12590,64 @@ def descriptor(cls) -> ClusterObjectDescriptor:
rootCACertificate: bytes = b""
+ @dataclass
+ class SetVidVerificationStatement(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0000003E
+ command_id: typing.ClassVar[int] = 0x0000000C
+ is_client: typing.ClassVar[bool] = True
+ response_type: typing.ClassVar[typing.Optional[str]] = None
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="vendorID", Tag=0, Type=typing.Optional[uint]),
+ ClusterObjectFieldDescriptor(Label="vidVerificationStatement", Tag=1, Type=typing.Optional[bytes]),
+ ClusterObjectFieldDescriptor(Label="vvsc", Tag=2, Type=typing.Optional[bytes]),
+ ])
+
+ vendorID: typing.Optional[uint] = None
+ vidVerificationStatement: typing.Optional[bytes] = None
+ vvsc: typing.Optional[bytes] = None
+
+ @dataclass
+ class SignVidVerificationRequest(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0000003E
+ command_id: typing.ClassVar[int] = 0x0000000D
+ is_client: typing.ClassVar[bool] = True
+ response_type: typing.ClassVar[str] = 'SignVidVerificationResponse'
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(Label="clientChallenge", Tag=1, Type=bytes),
+ ])
+
+ fabricIndex: uint = 0
+ clientChallenge: bytes = b""
+
+ @dataclass
+ class SignVidVerificationResponse(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0000003E
+ command_id: typing.ClassVar[int] = 0x0000000E
+ is_client: typing.ClassVar[bool] = False
+ response_type: typing.ClassVar[typing.Optional[str]] = None
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(Label="fabricBindingVersion", Tag=1, Type=uint),
+ ClusterObjectFieldDescriptor(Label="signature", Tag=2, Type=bytes),
+ ])
+
+ fabricIndex: uint = 0
+ fabricBindingVersion: uint = 0
+ signature: bytes = b""
+
class Attributes:
@dataclass
class NOCs(ClusterAttributeDescriptor):
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index 1030489bc492d6..baf2956fd5e3b5 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -4615,6 +4615,11 @@ static id _Nullable DecodeAttributeValueForOperationalCredentialsCluster(Attribu
} else {
newElement_0.icac = AsData(entry_0.icac.Value());
}
+ if (entry_0.vvsc.HasValue()) {
+ newElement_0.vvsc = AsData(entry_0.vvsc.Value());
+ } else {
+ newElement_0.vvsc = nil;
+ }
newElement_0.fabricIndex = [NSNumber numberWithUnsignedChar:entry_0.fabricIndex];
[array_0 addObject:newElement_0];
}
@@ -4652,6 +4657,11 @@ static id _Nullable DecodeAttributeValueForOperationalCredentialsCluster(Attribu
*aError = err;
return nil;
}
+ if (entry_0.vidVerificationStatement.HasValue()) {
+ newElement_0.vidVerificationStatement = AsData(entry_0.vidVerificationStatement.Value());
+ } else {
+ newElement_0.vidVerificationStatement = nil;
+ }
newElement_0.fabricIndex = [NSNumber numberWithUnsignedChar:entry_0.fabricIndex];
[array_0 addObject:newElement_0];
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 0db598d9b07ed6..06e1ebe9ee027b 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -3750,6 +3750,20 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
* This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation.
*/
- (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAddTrustedRootCertificateParams *)params completion:(MTRStatusCompletion)completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
+/**
+ * Command SetVidVerificationStatement
+ *
+ * This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate).
+ */
+- (void)setVidVerificationStatementWithParams:(MTROperationalCredentialsClusterSetVidVerificationStatementParams * _Nullable)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
+- (void)setVidVerificationStatementWithCompletion:(MTRStatusCompletion)completion
+ MTR_PROVISIONALLY_AVAILABLE;
+/**
+ * Command SignVidVerificationRequest
+ *
+ * This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given.
+ */
+- (void)signVidVerificationRequestWithParams:(MTROperationalCredentialsClusterSignVidVerificationRequestParams *)params completion:(void (^)(MTROperationalCredentialsClusterSignVidVerificationResponseParams * _Nullable data, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
- (void)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
- (void)subscribeAttributeNOCsWithParams:(MTRSubscribeParams *)params
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index 3d2dc1449d73f0..dada7c0d4c4d2b 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -31220,6 +31220,58 @@ - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAdd
queue:self.callbackQueue
completion:responseHandler];
}
+- (void)setVidVerificationStatementWithCompletion:(MTRStatusCompletion)completion
+{
+ [self setVidVerificationStatementWithParams:nil completion:completion];
+}
+- (void)setVidVerificationStatementWithParams:(MTROperationalCredentialsClusterSetVidVerificationStatementParams * _Nullable)params completion:(MTRStatusCompletion)completion
+{
+ if (params == nil) {
+ params = [[MTROperationalCredentialsClusterSetVidVerificationStatementParams
+ alloc] init];
+ }
+
+ auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
+ completion(error);
+ };
+
+ auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
+
+ using RequestType = OperationalCredentials::Commands::SetVidVerificationStatement::Type;
+ [self.device _invokeKnownCommandWithEndpointID:self.endpointID
+ clusterID:@(RequestType::GetClusterId())
+ commandID:@(RequestType::GetCommandId())
+ commandPayload:params
+ timedInvokeTimeout:timedInvokeTimeoutMs
+ serverSideProcessingTimeout:params.serverSideProcessingTimeout
+ responseClass:nil
+ queue:self.callbackQueue
+ completion:responseHandler];
+}
+- (void)signVidVerificationRequestWithParams:(MTROperationalCredentialsClusterSignVidVerificationRequestParams *)params completion:(void (^)(MTROperationalCredentialsClusterSignVidVerificationResponseParams * _Nullable data, NSError * _Nullable error))completion
+{
+ if (params == nil) {
+ params = [[MTROperationalCredentialsClusterSignVidVerificationRequestParams
+ alloc] init];
+ }
+
+ auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
+ completion(response, error);
+ };
+
+ auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
+
+ using RequestType = OperationalCredentials::Commands::SignVidVerificationRequest::Type;
+ [self.device _invokeKnownCommandWithEndpointID:self.endpointID
+ clusterID:@(RequestType::GetClusterId())
+ commandID:@(RequestType::GetCommandId())
+ commandPayload:params
+ timedInvokeTimeout:timedInvokeTimeoutMs
+ serverSideProcessingTimeout:params.serverSideProcessingTimeout
+ responseClass:MTROperationalCredentialsClusterSignVidVerificationResponseParams.class
+ queue:self.callbackQueue
+ completion:responseHandler];
+}
- (void)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
{
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
index 4f514715da7644..dca23dfc6fba3d 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
@@ -6274,6 +6274,9 @@ typedef NS_ENUM(uint32_t, MTRCommandIDType) {
MTRCommandIDTypeClusterOperationalCredentialsCommandUpdateFabricLabelID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x00000009,
MTRCommandIDTypeClusterOperationalCredentialsCommandRemoveFabricID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x0000000A,
MTRCommandIDTypeClusterOperationalCredentialsCommandAddTrustedRootCertificateID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x0000000B,
+ MTRCommandIDTypeClusterOperationalCredentialsCommandSetVidVerificationStatementID MTR_PROVISIONALLY_AVAILABLE = 0x0000000C,
+ MTRCommandIDTypeClusterOperationalCredentialsCommandSignVidVerificationRequestID MTR_PROVISIONALLY_AVAILABLE = 0x0000000D,
+ MTRCommandIDTypeClusterOperationalCredentialsCommandSignVidVerificationResponseID MTR_PROVISIONALLY_AVAILABLE = 0x0000000E,
// Cluster GroupKeyManagement deprecated command id names
MTRClusterGroupKeyManagementCommandKeySetWriteID
@@ -7702,6 +7705,7 @@ typedef NS_ENUM(uint32_t, MTRDeviceTypeIDType) {
MTRDeviceTypeIDTypeColorTemperatureLightID MTR_AVAILABLE(ios(18.2), macos(15.2), watchos(11.2), tvos(18.2)) = 0x0000010C,
MTRDeviceTypeIDTypeExtendedColorLightID MTR_AVAILABLE(ios(18.2), macos(15.2), watchos(11.2), tvos(18.2)) = 0x0000010D,
MTRDeviceTypeIDTypeMountedOnOffControlID MTR_PROVISIONALLY_AVAILABLE = 0x0000010F,
+ MTRDeviceTypeIDTypeMountedDimmableLoadControlID MTR_PROVISIONALLY_AVAILABLE = 0x00000110,
MTRDeviceTypeIDTypeCameraID MTR_PROVISIONALLY_AVAILABLE = 0x00000142,
MTRDeviceTypeIDTypeWindowCoveringID MTR_AVAILABLE(ios(18.2), macos(15.2), watchos(11.2), tvos(18.2)) = 0x00000202,
MTRDeviceTypeIDTypeWindowCoveringControllerID MTR_AVAILABLE(ios(18.2), macos(15.2), watchos(11.2), tvos(18.2)) = 0x00000203,
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
index 6f1498c91e32e6..223c4279fd7c7e 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
@@ -9348,6 +9348,14 @@
result = @"AddTrustedRootCertificate";
break;
+ case MTRCommandIDTypeClusterOperationalCredentialsCommandSetVidVerificationStatementID:
+ result = @"SetVidVerificationStatement";
+ break;
+
+ case MTRCommandIDTypeClusterOperationalCredentialsCommandSignVidVerificationRequestID:
+ result = @"SignVidVerificationRequest";
+ break;
+
default:
result = [NSString stringWithFormat:@"", commandID];
break;
@@ -11796,6 +11804,10 @@
result = @"NOCResponse";
break;
+ case MTRCommandIDTypeClusterOperationalCredentialsCommandSignVidVerificationResponseID:
+ result = @"SignVidVerificationResponse";
+ break;
+
default:
result = [NSString stringWithFormat:@"", commandID];
break;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
index dabafeb2d21895..925e77df6f9e69 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
@@ -1724,6 +1724,10 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
- (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabricLabelParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(void (^)(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error))completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
- (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(void (^)(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error))completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
- (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAddTrustedRootCertificateParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
+- (void)setVidVerificationStatementWithParams:(MTROperationalCredentialsClusterSetVidVerificationStatementParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
+- (void)setVidVerificationStatementWithExpectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
+ MTR_PROVISIONALLY_AVAILABLE;
+- (void)signVidVerificationRequestWithParams:(MTROperationalCredentialsClusterSignVidVerificationRequestParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(void (^)(MTROperationalCredentialsClusterSignVidVerificationResponseParams * _Nullable data, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
- (NSDictionary * _Nullable)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index a4c7fe64bda10a..85d74c0955cfa4 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -5283,6 +5283,64 @@ - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAdd
completion:responseHandler];
}
+- (void)setVidVerificationStatementWithExpectedValues:(NSArray *> *)expectedValues expectedValueInterval:(NSNumber *)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
+{
+ [self setVidVerificationStatementWithParams:nil expectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completion];
+}
+- (void)setVidVerificationStatementWithParams:(MTROperationalCredentialsClusterSetVidVerificationStatementParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
+{
+ if (params == nil) {
+ params = [[MTROperationalCredentialsClusterSetVidVerificationStatementParams
+ alloc] init];
+ }
+
+ auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
+ completion(error);
+ };
+
+ auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
+
+ using RequestType = OperationalCredentials::Commands::SetVidVerificationStatement::Type;
+ [self.device _invokeKnownCommandWithEndpointID:self.endpointID
+ clusterID:@(RequestType::GetClusterId())
+ commandID:@(RequestType::GetCommandId())
+ commandPayload:params
+ expectedValues:expectedValues
+ expectedValueInterval:expectedValueIntervalMs
+ timedInvokeTimeout:timedInvokeTimeoutMs
+ serverSideProcessingTimeout:params.serverSideProcessingTimeout
+ responseClass:nil
+ queue:self.callbackQueue
+ completion:responseHandler];
+}
+
+- (void)signVidVerificationRequestWithParams:(MTROperationalCredentialsClusterSignVidVerificationRequestParams *)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(void (^)(MTROperationalCredentialsClusterSignVidVerificationResponseParams * _Nullable data, NSError * _Nullable error))completion
+{
+ if (params == nil) {
+ params = [[MTROperationalCredentialsClusterSignVidVerificationRequestParams
+ alloc] init];
+ }
+
+ auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
+ completion(response, error);
+ };
+
+ auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
+
+ using RequestType = OperationalCredentials::Commands::SignVidVerificationRequest::Type;
+ [self.device _invokeKnownCommandWithEndpointID:self.endpointID
+ clusterID:@(RequestType::GetClusterId())
+ commandID:@(RequestType::GetCommandId())
+ commandPayload:params
+ expectedValues:expectedValues
+ expectedValueInterval:expectedValueIntervalMs
+ timedInvokeTimeout:timedInvokeTimeoutMs
+ serverSideProcessingTimeout:params.serverSideProcessingTimeout
+ responseClass:MTROperationalCredentialsClusterSignVidVerificationResponseParams.class
+ queue:self.callbackQueue
+ completion:responseHandler];
+}
+
- (NSDictionary * _Nullable)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params
{
return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeOperationalCredentialsID) attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeNOCsID) params:params];
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
index 4a562b3ba21ecb..f1b91583eedce0 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
@@ -3554,6 +3554,95 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
@property (nonatomic, copy) NSData * _Nonnull rootCertificate MTR_DEPRECATED("Please use rootCACertificate", ios(16.1, 16.4), macos(13.0, 13.3), watchos(9.1, 9.4), tvos(16.1, 16.4));
@end
+MTR_PROVISIONALLY_AVAILABLE
+@interface MTROperationalCredentialsClusterSetVidVerificationStatementParams : NSObject
+
+@property (nonatomic, copy) NSNumber * _Nullable vendorID MTR_PROVISIONALLY_AVAILABLE;
+
+@property (nonatomic, copy) NSData * _Nullable vidVerificationStatement MTR_PROVISIONALLY_AVAILABLE;
+
+@property (nonatomic, copy) NSData * _Nullable vvsc MTR_PROVISIONALLY_AVAILABLE;
+/**
+ * Controls whether the command is a timed command (using Timed Invoke).
+ *
+ * If nil (the default value), a regular invoke is done for commands that do
+ * not require a timed invoke and a timed invoke with some default timed request
+ * timeout is done for commands that require a timed invoke.
+ *
+ * If not nil, a timed invoke is done, with the provided value used as the timed
+ * request timeout. The value should be chosen small enough to provide the
+ * desired security properties but large enough that it will allow a round-trip
+ * from the sever to the client (for the status response and actual invoke
+ * request) within the timeout window.
+ *
+ */
+@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+
+/**
+ * Controls how much time, in seconds, we will allow for the server to process the command.
+ *
+ * The command will then time out if that much time, plus an allowance for retransmits due to network failures, passes.
+ *
+ * If nil, the framework will try to select an appropriate timeout value itself.
+ */
+@property (nonatomic, copy, nullable) NSNumber * serverSideProcessingTimeout;
+@end
+
+MTR_PROVISIONALLY_AVAILABLE
+@interface MTROperationalCredentialsClusterSignVidVerificationRequestParams : NSObject
+
+@property (nonatomic, copy) NSNumber * _Nonnull fabricIndex MTR_PROVISIONALLY_AVAILABLE;
+
+@property (nonatomic, copy) NSData * _Nonnull clientChallenge MTR_PROVISIONALLY_AVAILABLE;
+/**
+ * Controls whether the command is a timed command (using Timed Invoke).
+ *
+ * If nil (the default value), a regular invoke is done for commands that do
+ * not require a timed invoke and a timed invoke with some default timed request
+ * timeout is done for commands that require a timed invoke.
+ *
+ * If not nil, a timed invoke is done, with the provided value used as the timed
+ * request timeout. The value should be chosen small enough to provide the
+ * desired security properties but large enough that it will allow a round-trip
+ * from the sever to the client (for the status response and actual invoke
+ * request) within the timeout window.
+ *
+ */
+@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+
+/**
+ * Controls how much time, in seconds, we will allow for the server to process the command.
+ *
+ * The command will then time out if that much time, plus an allowance for retransmits due to network failures, passes.
+ *
+ * If nil, the framework will try to select an appropriate timeout value itself.
+ */
+@property (nonatomic, copy, nullable) NSNumber * serverSideProcessingTimeout;
+@end
+
+MTR_PROVISIONALLY_AVAILABLE
+@interface MTROperationalCredentialsClusterSignVidVerificationResponseParams : NSObject
+
+@property (nonatomic, copy) NSNumber * _Nonnull fabricIndex MTR_PROVISIONALLY_AVAILABLE;
+
+@property (nonatomic, copy) NSNumber * _Nonnull fabricBindingVersion MTR_PROVISIONALLY_AVAILABLE;
+
+@property (nonatomic, copy) NSData * _Nonnull signature MTR_PROVISIONALLY_AVAILABLE;
+
+/**
+ * Initialize an MTROperationalCredentialsClusterSignVidVerificationResponseParams with a response-value dictionary
+ * of the sort that MTRDeviceResponseHandler would receive.
+ *
+ * Will return nil and hand out an error if the response-value dictionary is not
+ * a command data response or is not the right command response.
+ *
+ * Will return nil and hand out an error if the data response does not match the known
+ * schema for this command.
+ */
+- (nullable instancetype)initWithResponseValue:(NSDictionary *)responseValue
+ error:(NSError * __autoreleasing *)error MTR_PROVISIONALLY_AVAILABLE;
+@end
+
MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
@interface MTRGroupKeyManagementClusterKeySetWriteParams : NSObject
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
index b1714a5181ca27..f66bb0c3b8bd18 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
@@ -9421,6 +9421,282 @@ - (NSData * _Nonnull)rootCertificate
return self.rootCACertificate;
}
@end
+@implementation MTROperationalCredentialsClusterSetVidVerificationStatementParams
+- (instancetype)init
+{
+ if (self = [super init]) {
+
+ _vendorID = nil;
+
+ _vidVerificationStatement = nil;
+
+ _vvsc = nil;
+ _timedInvokeTimeoutMs = nil;
+ _serverSideProcessingTimeout = nil;
+ }
+ return self;
+}
+
+- (id)copyWithZone:(NSZone * _Nullable)zone;
+{
+ auto other = [[MTROperationalCredentialsClusterSetVidVerificationStatementParams alloc] init];
+
+ other.vendorID = self.vendorID;
+ other.vidVerificationStatement = self.vidVerificationStatement;
+ other.vvsc = self.vvsc;
+ other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
+ other.serverSideProcessingTimeout = self.serverSideProcessingTimeout;
+
+ return other;
+}
+
+- (NSString *)description
+{
+ NSString * descriptionString = [NSString stringWithFormat:@"<%@: vendorID:%@; vidVerificationStatement:%@; vvsc:%@; >", NSStringFromClass([self class]), _vendorID, [_vidVerificationStatement base64EncodedStringWithOptions:0], [_vvsc base64EncodedStringWithOptions:0]];
+ return descriptionString;
+}
+
+@end
+
+@implementation MTROperationalCredentialsClusterSetVidVerificationStatementParams (InternalMethods)
+
+- (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader
+{
+ chip::app::Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::Type encodableStruct;
+ ListFreer listFreer;
+ {
+ if (self.vendorID != nil) {
+ auto & definedValue_0 = encodableStruct.vendorID.Emplace();
+ definedValue_0 = static_cast>(self.vendorID.unsignedShortValue);
+ }
+ }
+ {
+ if (self.vidVerificationStatement != nil) {
+ auto & definedValue_0 = encodableStruct.vidVerificationStatement.Emplace();
+ definedValue_0 = AsByteSpan(self.vidVerificationStatement);
+ }
+ }
+ {
+ if (self.vvsc != nil) {
+ auto & definedValue_0 = encodableStruct.vvsc.Emplace();
+ definedValue_0 = AsByteSpan(self.vvsc);
+ }
+ }
+
+ auto buffer = chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSizeWithoutReserve, 0);
+ if (buffer.IsNull()) {
+ return CHIP_ERROR_NO_MEMORY;
+ }
+
+ chip::System::PacketBufferTLVWriter writer;
+ // Commands never need chained buffers, since they cannot be chunked.
+ writer.Init(std::move(buffer), /* useChainedBuffers = */ false);
+
+ ReturnErrorOnFailure(chip::app::DataModel::Encode(writer, chip::TLV::AnonymousTag(), encodableStruct));
+
+ ReturnErrorOnFailure(writer.Finalize(&buffer));
+
+ reader.Init(std::move(buffer));
+ return reader.Next(chip::TLV::kTLVType_Structure, chip::TLV::AnonymousTag());
+}
+
+- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error
+{
+ chip::System::PacketBufferTLVReader reader;
+ CHIP_ERROR err = [self _encodeToTLVReader:reader];
+ if (err != CHIP_NO_ERROR) {
+ if (error) {
+ *error = [MTRError errorForCHIPErrorCode:err];
+ }
+ return nil;
+ }
+
+ auto decodedObj = MTRDecodeDataValueDictionaryFromCHIPTLV(&reader);
+ if (decodedObj == nil) {
+ if (error) {
+ *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE];
+ }
+ }
+ return decodedObj;
+}
+@end
+
+@implementation MTROperationalCredentialsClusterSignVidVerificationRequestParams
+- (instancetype)init
+{
+ if (self = [super init]) {
+
+ _fabricIndex = @(0);
+
+ _clientChallenge = [NSData data];
+ _timedInvokeTimeoutMs = nil;
+ _serverSideProcessingTimeout = nil;
+ }
+ return self;
+}
+
+- (id)copyWithZone:(NSZone * _Nullable)zone;
+{
+ auto other = [[MTROperationalCredentialsClusterSignVidVerificationRequestParams alloc] init];
+
+ other.fabricIndex = self.fabricIndex;
+ other.clientChallenge = self.clientChallenge;
+ other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
+ other.serverSideProcessingTimeout = self.serverSideProcessingTimeout;
+
+ return other;
+}
+
+- (NSString *)description
+{
+ NSString * descriptionString = [NSString stringWithFormat:@"<%@: fabricIndex:%@; clientChallenge:%@; >", NSStringFromClass([self class]), _fabricIndex, [_clientChallenge base64EncodedStringWithOptions:0]];
+ return descriptionString;
+}
+
+@end
+
+@implementation MTROperationalCredentialsClusterSignVidVerificationRequestParams (InternalMethods)
+
+- (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader
+{
+ chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationRequest::Type encodableStruct;
+ ListFreer listFreer;
+ {
+ encodableStruct.fabricIndex = self.fabricIndex.unsignedCharValue;
+ }
+ {
+ encodableStruct.clientChallenge = AsByteSpan(self.clientChallenge);
+ }
+
+ auto buffer = chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSizeWithoutReserve, 0);
+ if (buffer.IsNull()) {
+ return CHIP_ERROR_NO_MEMORY;
+ }
+
+ chip::System::PacketBufferTLVWriter writer;
+ // Commands never need chained buffers, since they cannot be chunked.
+ writer.Init(std::move(buffer), /* useChainedBuffers = */ false);
+
+ ReturnErrorOnFailure(chip::app::DataModel::Encode(writer, chip::TLV::AnonymousTag(), encodableStruct));
+
+ ReturnErrorOnFailure(writer.Finalize(&buffer));
+
+ reader.Init(std::move(buffer));
+ return reader.Next(chip::TLV::kTLVType_Structure, chip::TLV::AnonymousTag());
+}
+
+- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error
+{
+ chip::System::PacketBufferTLVReader reader;
+ CHIP_ERROR err = [self _encodeToTLVReader:reader];
+ if (err != CHIP_NO_ERROR) {
+ if (error) {
+ *error = [MTRError errorForCHIPErrorCode:err];
+ }
+ return nil;
+ }
+
+ auto decodedObj = MTRDecodeDataValueDictionaryFromCHIPTLV(&reader);
+ if (decodedObj == nil) {
+ if (error) {
+ *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE];
+ }
+ }
+ return decodedObj;
+}
+@end
+
+@implementation MTROperationalCredentialsClusterSignVidVerificationResponseParams
+- (instancetype)init
+{
+ if (self = [super init]) {
+
+ _fabricIndex = @(0);
+
+ _fabricBindingVersion = @(0);
+
+ _signature = [NSData data];
+ }
+ return self;
+}
+
+- (id)copyWithZone:(NSZone * _Nullable)zone;
+{
+ auto other = [[MTROperationalCredentialsClusterSignVidVerificationResponseParams alloc] init];
+
+ other.fabricIndex = self.fabricIndex;
+ other.fabricBindingVersion = self.fabricBindingVersion;
+ other.signature = self.signature;
+
+ return other;
+}
+
+- (NSString *)description
+{
+ NSString * descriptionString = [NSString stringWithFormat:@"<%@: fabricIndex:%@; fabricBindingVersion:%@; signature:%@; >", NSStringFromClass([self class]), _fabricIndex, _fabricBindingVersion, [_signature base64EncodedStringWithOptions:0]];
+ return descriptionString;
+}
+
+- (nullable instancetype)initWithResponseValue:(NSDictionary *)responseValue
+ error:(NSError * __autoreleasing *)error
+{
+ if (!(self = [super init])) {
+ return nil;
+ }
+
+ using DecodableType = chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationResponse::DecodableType;
+ chip::System::PacketBufferHandle buffer = [MTRBaseDevice _responseDataForCommand:responseValue
+ clusterID:DecodableType::GetClusterId()
+ commandID:DecodableType::GetCommandId()
+ error:error];
+ if (buffer.IsNull()) {
+ return nil;
+ }
+
+ chip::TLV::TLVReader reader;
+ reader.Init(buffer->Start(), buffer->DataLength());
+
+ CHIP_ERROR err = reader.Next(chip::TLV::AnonymousTag());
+ if (err == CHIP_NO_ERROR) {
+ DecodableType decodedStruct;
+ err = chip::app::DataModel::Decode(reader, decodedStruct);
+ if (err == CHIP_NO_ERROR) {
+ err = [self _setFieldsFromDecodableStruct:decodedStruct];
+ if (err == CHIP_NO_ERROR) {
+ return self;
+ }
+ }
+ }
+
+ NSString * errorStr = [NSString stringWithFormat:@"Command payload decoding failed: %s", err.AsString()];
+ MTR_LOG_ERROR("%s", errorStr.UTF8String);
+ if (error != nil) {
+ NSDictionary * userInfo = @{ NSLocalizedFailureReasonErrorKey : NSLocalizedString(errorStr, nil) };
+ *error = [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeSchemaMismatch userInfo:userInfo];
+ }
+ return nil;
+}
+
+@end
+
+@implementation MTROperationalCredentialsClusterSignVidVerificationResponseParams (InternalMethods)
+
+- (CHIP_ERROR)_setFieldsFromDecodableStruct:(const chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationResponse::DecodableType &)decodableStruct
+{
+ {
+ self.fabricIndex = [NSNumber numberWithUnsignedChar:decodableStruct.fabricIndex];
+ }
+ {
+ self.fabricBindingVersion = [NSNumber numberWithUnsignedChar:decodableStruct.fabricBindingVersion];
+ }
+ {
+ self.signature = AsData(decodableStruct.signature);
+ }
+ return CHIP_NO_ERROR;
+}
+
+@end
+
@implementation MTRGroupKeyManagementClusterKeySetWriteParams
- (instancetype)init
{
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h
index 3b3faa8202ad9c..0e06f9600d3292 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h
@@ -616,6 +616,24 @@ NS_ASSUME_NONNULL_BEGIN
@end
+@interface MTROperationalCredentialsClusterSetVidVerificationStatementParams (InternalMethods)
+
+- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error;
+
+@end
+
+@interface MTROperationalCredentialsClusterSignVidVerificationRequestParams (InternalMethods)
+
+- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error;
+
+@end
+
+@interface MTROperationalCredentialsClusterSignVidVerificationResponseParams (InternalMethods)
+
+- (CHIP_ERROR)_setFieldsFromDecodableStruct:(const chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationResponse::DecodableType &)decodableStruct;
+
+@end
+
@interface MTRGroupKeyManagementClusterKeySetWriteParams (InternalMethods)
- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRDeviceTypeMetadata.mm b/src/darwin/Framework/CHIP/zap-generated/MTRDeviceTypeMetadata.mm
index 0f74d63fe599ae..a1d790b8a901cb 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRDeviceTypeMetadata.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRDeviceTypeMetadata.mm
@@ -78,6 +78,7 @@
{ 0x0000010C, MTRDeviceTypeClass::Simple, @"Color Temperature Light" },
{ 0x0000010D, MTRDeviceTypeClass::Simple, @"Extended Color Light" },
{ 0x0000010F, MTRDeviceTypeClass::Simple, @"Mounted On/Off Control" },
+ { 0x00000110, MTRDeviceTypeClass::Simple, @"Mounted Dimmable Load Control" },
{ 0x00000142, MTRDeviceTypeClass::Simple, @"Camera" },
{ 0x00000202, MTRDeviceTypeClass::Simple, @"Window Covering" },
{ 0x00000203, MTRDeviceTypeClass::Simple, @"Window Covering Controller" },
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
index 7d5dbf37d19742..d79edaec9e3b16 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
@@ -751,6 +751,7 @@ MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4))
@property (nonatomic, copy) NSNumber * _Nonnull nodeID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
@property (nonatomic, copy) NSNumber * _Nonnull nodeId MTR_DEPRECATED("Please use nodeID", ios(16.4, 16.4), macos(13.3, 13.3), watchos(9.4, 9.4), tvos(16.4, 16.4));
@property (nonatomic, copy) NSString * _Nonnull label MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
+@property (nonatomic, copy) NSData * _Nullable vidVerificationStatement MTR_PROVISIONALLY_AVAILABLE;
@property (nonatomic, copy) NSNumber * _Nonnull fabricIndex MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
@end
@@ -765,6 +766,7 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
@interface MTROperationalCredentialsClusterNOCStruct : NSObject
@property (nonatomic, copy) NSData * _Nonnull noc MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
@property (nonatomic, copy) NSData * _Nullable icac MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+@property (nonatomic, copy) NSData * _Nullable vvsc MTR_PROVISIONALLY_AVAILABLE;
@property (nonatomic, copy) NSNumber * _Nonnull fabricIndex MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
@end
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
index 24b5adc876c8f5..b9a6b60e3ab770 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
@@ -2723,6 +2723,8 @@ - (instancetype)init
_label = @"";
+ _vidVerificationStatement = nil;
+
_fabricIndex = @(0);
}
return self;
@@ -2737,6 +2739,7 @@ - (id)copyWithZone:(NSZone * _Nullable)zone
other.fabricID = self.fabricID;
other.nodeID = self.nodeID;
other.label = self.label;
+ other.vidVerificationStatement = self.vidVerificationStatement;
other.fabricIndex = self.fabricIndex;
return other;
@@ -2744,7 +2747,7 @@ - (id)copyWithZone:(NSZone * _Nullable)zone
- (NSString *)description
{
- NSString * descriptionString = [NSString stringWithFormat:@"<%@: rootPublicKey:%@; vendorID:%@; fabricID:%@; nodeID:%@; label:%@; fabricIndex:%@; >", NSStringFromClass([self class]), [_rootPublicKey base64EncodedStringWithOptions:0], _vendorID, _fabricID, _nodeID, _label, _fabricIndex];
+ NSString * descriptionString = [NSString stringWithFormat:@"<%@: rootPublicKey:%@; vendorID:%@; fabricID:%@; nodeID:%@; label:%@; vidVerificationStatement:%@; fabricIndex:%@; >", NSStringFromClass([self class]), [_rootPublicKey base64EncodedStringWithOptions:0], _vendorID, _fabricID, _nodeID, _label, [_vidVerificationStatement base64EncodedStringWithOptions:0], _fabricIndex];
return descriptionString;
}
@@ -2795,6 +2798,8 @@ - (instancetype)init
_icac = nil;
+ _vvsc = nil;
+
_fabricIndex = @(0);
}
return self;
@@ -2806,6 +2811,7 @@ - (id)copyWithZone:(NSZone * _Nullable)zone
other.noc = self.noc;
other.icac = self.icac;
+ other.vvsc = self.vvsc;
other.fabricIndex = self.fabricIndex;
return other;
@@ -2813,7 +2819,7 @@ - (id)copyWithZone:(NSZone * _Nullable)zone
- (NSString *)description
{
- NSString * descriptionString = [NSString stringWithFormat:@"<%@: noc:%@; icac:%@; fabricIndex:%@; >", NSStringFromClass([self class]), [_noc base64EncodedStringWithOptions:0], [_icac base64EncodedStringWithOptions:0], _fabricIndex];
+ NSString * descriptionString = [NSString stringWithFormat:@"<%@: noc:%@; icac:%@; vvsc:%@; fabricIndex:%@; >", NSStringFromClass([self class]), [_noc base64EncodedStringWithOptions:0], [_icac base64EncodedStringWithOptions:0], [_vvsc base64EncodedStringWithOptions:0], _fabricIndex];
return descriptionString;
}
diff --git a/src/platform/nxp/common/NXPConfigNVS.cpp b/src/platform/nxp/common/NXPConfigNVS.cpp
index 2256ac1e6479dc..b18863ed31ae17 100644
--- a/src/platform/nxp/common/NXPConfigNVS.cpp
+++ b/src/platform/nxp/common/NXPConfigNVS.cpp
@@ -333,7 +333,9 @@ CHIP_ERROR NXPConfig::ClearConfigValue(Key key)
{
char key_name[SETTINGS_MAX_NAME_LEN + 1];
sprintf(key_name, CHIP_DEVICE_INTEGER_SETTINGS_KEY "/%04x", key);
- return ClearConfigValue(key_name);
+ if (settings_delete(key_name) != 0)
+ return CHIP_ERROR_PERSISTED_STORAGE_FAILED;
+ return CHIP_NO_ERROR;
}
CHIP_ERROR NXPConfig::ClearConfigValue(const char * keyString)
diff --git a/src/platform/nxp/k32w0/LowPowerHooks.cpp b/src/platform/nxp/k32w0/LowPowerHooks.cpp
index 55c05733d2ef29..bf8f997e2d67f1 100644
--- a/src/platform/nxp/k32w0/LowPowerHooks.cpp
+++ b/src/platform/nxp/k32w0/LowPowerHooks.cpp
@@ -48,10 +48,14 @@ extern "C" void stopM2();
extern "C" void sched_enable();
extern "C" uint64_t otPlatTimeGet(void);
extern "C" void vOptimizeConsumption(void);
+extern "C" void BOARD_CheckPowerDownDcdcVoltage(void);
+extern "C" void BOARD_CheckWakeUpDcdcVoltage(void);
WEAK void dm_switch_wakeupCallBack(void);
WEAK void dm_switch_preSleepCallBack(void);
WEAK void vOptimizeConsumption(void);
+WEAK void BOARD_CheckPowerDownDcdcVoltage(void);
+WEAK void BOARD_CheckWakeUpDcdcVoltage(void);
static void ThreadExitSleep();
static void BOARD_SetClockForWakeup(void);
@@ -106,6 +110,10 @@ uint32_t dm_switch_get15_4InitWakeUpTime(void)
WEAK void dm_switch_wakeupCallBack(void)
{
+ /* Check VBAT voltage after wakeup and set DCDC voltage
+ according for K32W041A/AM variants */
+ BOARD_CheckWakeUpDcdcVoltage();
+
BOARD_SetClockForWakeup();
SHA_ClkInit(SHA_INSTANCE);
CLOCK_EnableClock(kCLOCK_Aes);
@@ -164,6 +172,16 @@ WEAK void vOptimizeConsumption(void)
/* Intentionally left empty, user needs to redefine it at application level */
}
+WEAK void BOARD_CheckPowerDownDcdcVoltage(void)
+{
+ /* Intentionally left empty, will be linked to board.c function */
+}
+
+WEAK void BOARD_CheckWakeUpDcdcVoltage(void)
+{
+ /* Intentionally left empty, will be linked to board.c function */
+}
+
WEAK void dm_switch_preSleepCallBack(void)
{
#if ENABLE_LOW_POWER_LOGS
@@ -198,6 +216,10 @@ WEAK void dm_switch_preSleepCallBack(void)
BOARD_DeInitAdc();
/* DeInit the necessary clocks */
BOARD_SetClockForPowerMode();
+
+ /* Check VBAT voltage before going to sleep and set DCDC voltage
+ according for K32W041A/AM variants */
+ BOARD_CheckPowerDownDcdcVoltage();
}
void dm_switch_init15_4AfterWakeUp(void)
diff --git a/src/platform/silabs/efr32/CHIPCryptoPALPsaEfr32.cpp b/src/platform/silabs/efr32/CHIPCryptoPALPsaEfr32.cpp
index 8794491d67affd..bc728ce5b127bc 100644
--- a/src/platform/silabs/efr32/CHIPCryptoPALPsaEfr32.cpp
+++ b/src/platform/silabs/efr32/CHIPCryptoPALPsaEfr32.cpp
@@ -161,13 +161,14 @@ CHIP_ERROR AES_CCM_encrypt(const uint8_t * plaintext, size_t plaintext_length, c
// Add the aligned part of the plaintext
status = psa_aead_update(&operation, plaintext, block_aligned_length, ciphertext, block_aligned_length, &out_length);
VerifyOrReturnError(status == PSA_SUCCESS, CHIP_ERROR_INTERNAL);
- VerifyOrReturnError(out_length == block_aligned_length, CHIP_ERROR_INTERNAL);
+ VerifyOrReturnError(out_length <= block_aligned_length, CHIP_ERROR_INTERNAL);
ciphertext_length += out_length;
if (partial_block_length > 0)
{
// The update output should fit in the temp buffer
size_t max_output = PSA_AEAD_UPDATE_OUTPUT_SIZE(PSA_KEY_TYPE_AES, algorithm, partial_block_length);
+ VerifyOrReturnError(max_output <= sizeof(temp), CHIP_ERROR_INTERNAL);
// Add the non-aligned end of the plaintext
status =
@@ -254,13 +255,14 @@ CHIP_ERROR AES_CCM_decrypt(const uint8_t * ciphertext, size_t ciphertext_length,
// Add the aligned part of the ciphertext
status = psa_aead_update(&operation, ciphertext, block_aligned_length, plaintext, block_aligned_length, &out_length);
VerifyOrReturnError(status == PSA_SUCCESS, CHIP_ERROR_INTERNAL);
- VerifyOrReturnError(out_length == block_aligned_length, CHIP_ERROR_INTERNAL);
+ VerifyOrReturnError(out_length <= block_aligned_length, CHIP_ERROR_INTERNAL);
plaintext_length += out_length;
if (partial_block_length > 0)
{
// The update output should fit in the temp buffer
size_t max_output = PSA_AEAD_UPDATE_OUTPUT_SIZE(PSA_KEY_TYPE_AES, algorithm, partial_block_length);
+ VerifyOrReturnError(max_output <= sizeof(temp), CHIP_ERROR_INTERNAL);
// Add the non-aligned end of the ciphertext
status =
diff --git a/src/platform/silabs/wifi/icd/WifiSleepManager.h b/src/platform/silabs/wifi/icd/WifiSleepManager.h
index a9677e4ab9321d..54a5d0d47d7bf1 100644
--- a/src/platform/silabs/wifi/icd/WifiSleepManager.h
+++ b/src/platform/silabs/wifi/icd/WifiSleepManager.h
@@ -59,7 +59,7 @@ class WifiSleepManager
mIsCommissioningInProgress = true;
// TODO: Remove High Performance Req during commissioning when sleep issues are resolved
- // WifiSleepManager::GetInstance().RequestHighPerformance();
+ WifiSleepManager::GetInstance().RequestHighPerformance();
}
inline void HandleCommissioningSessionStopped()
diff --git a/src/platform/silabs/wifi/wf200/WifiInterfaceImpl.cpp b/src/platform/silabs/wifi/wf200/WifiInterfaceImpl.cpp
index 5edeaa9359fd9c..8a2540b621f6e7 100644
--- a/src/platform/silabs/wifi/wf200/WifiInterfaceImpl.cpp
+++ b/src/platform/silabs/wifi/wf200/WifiInterfaceImpl.cpp
@@ -284,6 +284,26 @@ sl_status_t get_all_counters(void)
return result;
}
+/**
+ * @brief Convert RCPI to RSSI
+
+ * This function converts the Received Channel Power Indicator (RCPI) to
+ * the Received Signal Strength Indicator (RSSI). If the result of the
+ * conversion exceeds the range of a int16_t, it will be clamped to the maximum
+ * or minimum value of int16_t.
+
+ * @param[in] rcpi: Received Channel Power Indicator value
+
+ * @return RSSI value
+ */
+inline int16_t ConvertRcpiToRssi(uint32_t rcpi)
+{
+ int64_t rssi = (rcpi / 2) - 110;
+ // Checking for overflows
+ VerifyOrReturnValue(rssi <= std::numeric_limits::max(), std::numeric_limits::max());
+ VerifyOrReturnValue(rssi >= std::numeric_limits::min(), std::numeric_limits::min());
+ return rssi;
+}
} // namespace
CHIP_ERROR GetMacAddress(sl_wfx_interface_t interface, MutableByteSpan & address)
@@ -404,7 +424,7 @@ CHIP_ERROR GetAccessPointInfo(wfx_wifi_scan_result_t & info)
sl_status_t status = sl_wfx_get_signal_strength(&signal_strength);
VerifyOrReturnError(status == SL_STATUS_OK, CHIP_ERROR_INTERNAL);
- info.rssi = (signal_strength - 220) / 2;
+ info.rssi = ConvertRcpiToRssi(signal_strength);
ChipLogDetail(DeviceLayer, "WIFI:SSID : %s", ap_info.ssid);
ChipLogDetail(DeviceLayer, "WIFI:BSSID : %02x:%02x:%02x:%02x:%02x:%02x", ap_info.bssid[0], ap_info.bssid[1],
@@ -583,7 +603,7 @@ static void sl_wfx_scan_result_callback(sl_wfx_scan_result_ind_body_t * scan_res
{
ChipLogDetail(DeviceLayer, "# %2d %2d %03d %02X:%02X:%02X:%02X:%02X:%02X %s", scan_count, scan_result->channel,
- ((int16_t) (scan_result->rcpi - 220) / 2), scan_result->mac[0], scan_result->mac[1], scan_result->mac[2],
+ (ConvertRcpiToRssi(scan_result->rcpi)), scan_result->mac[0], scan_result->mac[1], scan_result->mac[2],
scan_result->mac[3], scan_result->mac[4], scan_result->mac[5], scan_result->ssid_def.ssid);
chip::ByteSpan requestedSsid(scan_ssid, scan_ssid_length);
@@ -628,7 +648,7 @@ static void sl_wfx_scan_result_callback(sl_wfx_scan_result_ind_body_t * scan_res
}
ap->scan.chan = scan_result->channel;
- ap->scan.rssi = (scan_result->rcpi - 220) / 2;
+ ap->scan.rssi = ConvertRcpiToRssi(scan_result->rcpi);
chip::ByteSpan scannedBssid(scan_result->mac, kWifiMacAddressLength);
chip::MutableByteSpan outputBssid(ap->scan.bssid, kWifiMacAddressLength);
diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h
index 4f0cc3bd1e7367..2f8de827b62ebf 100644
--- a/zzz_generated/app-common/app-common/zap-generated/callback.h
+++ b/zzz_generated/app-common/app-common/zap-generated/callback.h
@@ -6098,6 +6098,18 @@ bool emberAfOperationalCredentialsClusterRemoveFabricCallback(
bool emberAfOperationalCredentialsClusterAddTrustedRootCertificateCallback(
chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
const chip::app::Clusters::OperationalCredentials::Commands::AddTrustedRootCertificate::DecodableType & commandData);
+/**
+ * @brief Operational Credentials Cluster SetVidVerificationStatement Command callback (from client)
+ */
+bool emberAfOperationalCredentialsClusterSetVidVerificationStatementCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::DecodableType & commandData);
+/**
+ * @brief Operational Credentials Cluster SignVidVerificationRequest Command callback (from client)
+ */
+bool emberAfOperationalCredentialsClusterSignVidVerificationRequestCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationRequest::DecodableType & commandData);
/**
* @brief Group Key Management Cluster KeySetWrite Command callback (from client)
*/
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
index e42936851990a3..048e14a818425b 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
@@ -8929,6 +8929,7 @@ CHIP_ERROR Type::DoEncode(TLV::TLVWriter & aWriter, TLV::Tag aTag, const Optiona
encoder.Encode(to_underlying(Fields::kFabricID), fabricID);
encoder.Encode(to_underlying(Fields::kNodeID), nodeID);
encoder.Encode(to_underlying(Fields::kLabel), label);
+ encoder.Encode(to_underlying(Fields::kVidVerificationStatement), vidVerificationStatement);
if (aAccessingFabricIndex.HasValue())
{
encoder.Encode(to_underlying(Fields::kFabricIndex), fabricIndex);
@@ -8971,6 +8972,10 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
{
err = DataModel::Decode(reader, label);
}
+ else if (__context_tag == to_underlying(Fields::kVidVerificationStatement))
+ {
+ err = DataModel::Decode(reader, vidVerificationStatement);
+ }
else if (__context_tag == to_underlying(Fields::kFabricIndex))
{
err = DataModel::Decode(reader, fabricIndex);
@@ -8998,18 +9003,12 @@ CHIP_ERROR Type::EncodeForRead(TLV::TLVWriter & aWriter, TLV::Tag aTag, FabricIn
CHIP_ERROR Type::DoEncode(TLV::TLVWriter & aWriter, TLV::Tag aTag, const Optional & aAccessingFabricIndex) const
{
- bool includeSensitive = !aAccessingFabricIndex.HasValue() || (aAccessingFabricIndex.Value() == fabricIndex);
DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
- if (includeSensitive)
- {
- encoder.Encode(to_underlying(Fields::kNoc), noc);
- }
- if (includeSensitive)
- {
- encoder.Encode(to_underlying(Fields::kIcac), icac);
- }
+ encoder.Encode(to_underlying(Fields::kNoc), noc);
+ encoder.Encode(to_underlying(Fields::kIcac), icac);
+ encoder.Encode(to_underlying(Fields::kVvsc), vvsc);
if (aAccessingFabricIndex.HasValue())
{
encoder.Encode(to_underlying(Fields::kFabricIndex), fabricIndex);
@@ -9040,6 +9039,10 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
{
err = DataModel::Decode(reader, icac);
}
+ else if (__context_tag == to_underlying(Fields::kVvsc))
+ {
+ err = DataModel::Decode(reader, vvsc);
+ }
else if (__context_tag == to_underlying(Fields::kFabricIndex))
{
err = DataModel::Decode(reader, fabricIndex);
@@ -9514,6 +9517,133 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
}
}
} // namespace AddTrustedRootCertificate.
+namespace SetVidVerificationStatement {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
+{
+ DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
+ encoder.Encode(to_underlying(Fields::kVendorID), vendorID);
+ encoder.Encode(to_underlying(Fields::kVidVerificationStatement), vidVerificationStatement);
+ encoder.Encode(to_underlying(Fields::kVvsc), vvsc);
+ return encoder.Finalize();
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ detail::StructDecodeIterator __iterator(reader);
+ while (true)
+ {
+ auto __element = __iterator.Next();
+ if (std::holds_alternative(__element))
+ {
+ return std::get(__element);
+ }
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ const uint8_t __context_tag = std::get(__element);
+
+ if (__context_tag == to_underlying(Fields::kVendorID))
+ {
+ err = DataModel::Decode(reader, vendorID);
+ }
+ else if (__context_tag == to_underlying(Fields::kVidVerificationStatement))
+ {
+ err = DataModel::Decode(reader, vidVerificationStatement);
+ }
+ else if (__context_tag == to_underlying(Fields::kVvsc))
+ {
+ err = DataModel::Decode(reader, vvsc);
+ }
+ else
+ {
+ }
+
+ ReturnErrorOnFailure(err);
+ }
+}
+} // namespace SetVidVerificationStatement.
+namespace SignVidVerificationRequest {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
+{
+ DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
+ encoder.Encode(to_underlying(Fields::kFabricIndex), fabricIndex);
+ encoder.Encode(to_underlying(Fields::kClientChallenge), clientChallenge);
+ return encoder.Finalize();
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ detail::StructDecodeIterator __iterator(reader);
+ while (true)
+ {
+ auto __element = __iterator.Next();
+ if (std::holds_alternative(__element))
+ {
+ return std::get(__element);
+ }
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ const uint8_t __context_tag = std::get(__element);
+
+ if (__context_tag == to_underlying(Fields::kFabricIndex))
+ {
+ err = DataModel::Decode(reader, fabricIndex);
+ }
+ else if (__context_tag == to_underlying(Fields::kClientChallenge))
+ {
+ err = DataModel::Decode(reader, clientChallenge);
+ }
+ else
+ {
+ }
+
+ ReturnErrorOnFailure(err);
+ }
+}
+} // namespace SignVidVerificationRequest.
+namespace SignVidVerificationResponse {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
+{
+ DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
+ encoder.Encode(to_underlying(Fields::kFabricIndex), fabricIndex);
+ encoder.Encode(to_underlying(Fields::kFabricBindingVersion), fabricBindingVersion);
+ encoder.Encode(to_underlying(Fields::kSignature), signature);
+ return encoder.Finalize();
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ detail::StructDecodeIterator __iterator(reader);
+ while (true)
+ {
+ auto __element = __iterator.Next();
+ if (std::holds_alternative(__element))
+ {
+ return std::get(__element);
+ }
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ const uint8_t __context_tag = std::get(__element);
+
+ if (__context_tag == to_underlying(Fields::kFabricIndex))
+ {
+ err = DataModel::Decode(reader, fabricIndex);
+ }
+ else if (__context_tag == to_underlying(Fields::kFabricBindingVersion))
+ {
+ err = DataModel::Decode(reader, fabricBindingVersion);
+ }
+ else if (__context_tag == to_underlying(Fields::kSignature))
+ {
+ err = DataModel::Decode(reader, signature);
+ }
+ else
+ {
+ }
+
+ ReturnErrorOnFailure(err);
+ }
+}
+} // namespace SignVidVerificationResponse.
} // namespace Commands
namespace Attributes {
@@ -36740,6 +36870,8 @@ bool CommandIsFabricScoped(ClusterId aCluster, CommandId aCommand)
return true;
case Clusters::OperationalCredentials::Commands::UpdateFabricLabel::Id:
return true;
+ case Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::Id:
+ return true;
default:
return false;
}
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
index f5313d04cf45be..0cb615dd2c4fa4 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
@@ -11732,12 +11732,13 @@ namespace Structs {
namespace FabricDescriptorStruct {
enum class Fields : uint8_t
{
- kRootPublicKey = 1,
- kVendorID = 2,
- kFabricID = 3,
- kNodeID = 4,
- kLabel = 5,
- kFabricIndex = 254,
+ kRootPublicKey = 1,
+ kVendorID = 2,
+ kFabricID = 3,
+ kNodeID = 4,
+ kLabel = 5,
+ kVidVerificationStatement = 6,
+ kFabricIndex = 254,
};
struct Type
@@ -11748,6 +11749,7 @@ struct Type
chip::FabricId fabricID = static_cast(0);
chip::NodeId nodeID = static_cast(0);
chip::CharSpan label;
+ Optional vidVerificationStatement;
chip::FabricIndex fabricIndex = static_cast(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -11773,6 +11775,7 @@ enum class Fields : uint8_t
{
kNoc = 1,
kIcac = 2,
+ kVvsc = 3,
kFabricIndex = 254,
};
@@ -11781,6 +11784,7 @@ struct Type
public:
chip::ByteSpan noc;
DataModel::Nullable icac;
+ Optional vvsc;
chip::FabricIndex fabricIndex = static_cast(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -11866,6 +11870,21 @@ struct Type;
struct DecodableType;
} // namespace AddTrustedRootCertificate
+namespace SetVidVerificationStatement {
+struct Type;
+struct DecodableType;
+} // namespace SetVidVerificationStatement
+
+namespace SignVidVerificationRequest {
+struct Type;
+struct DecodableType;
+} // namespace SignVidVerificationRequest
+
+namespace SignVidVerificationResponse {
+struct Type;
+struct DecodableType;
+} // namespace SignVidVerificationResponse
+
} // namespace Commands
namespace Commands {
@@ -12283,6 +12302,117 @@ struct DecodableType
CHIP_ERROR Decode(TLV::TLVReader & reader);
};
}; // namespace AddTrustedRootCertificate
+namespace SetVidVerificationStatement {
+enum class Fields : uint8_t
+{
+ kVendorID = 0,
+ kVidVerificationStatement = 1,
+ kVvsc = 2,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::SetVidVerificationStatement::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
+
+ Optional vendorID;
+ Optional vidVerificationStatement;
+ Optional vvsc;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
+
+ using ResponseType = DataModel::NullObjectType;
+
+ static constexpr bool MustUseTimedInvoke() { return false; }
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::SetVidVerificationStatement::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
+
+ Optional vendorID;
+ Optional vidVerificationStatement;
+ Optional vvsc;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace SetVidVerificationStatement
+namespace SignVidVerificationRequest {
+enum class Fields : uint8_t
+{
+ kFabricIndex = 0,
+ kClientChallenge = 1,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::SignVidVerificationRequest::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
+
+ chip::FabricIndex fabricIndex = static_cast(0);
+ chip::ByteSpan clientChallenge;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
+
+ using ResponseType = Clusters::OperationalCredentials::Commands::SignVidVerificationResponse::DecodableType;
+
+ static constexpr bool MustUseTimedInvoke() { return false; }
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::SignVidVerificationRequest::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
+
+ chip::FabricIndex fabricIndex = static_cast(0);
+ chip::ByteSpan clientChallenge;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace SignVidVerificationRequest
+namespace SignVidVerificationResponse {
+enum class Fields : uint8_t
+{
+ kFabricIndex = 0,
+ kFabricBindingVersion = 1,
+ kSignature = 2,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::SignVidVerificationResponse::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
+
+ chip::FabricIndex fabricIndex = static_cast(0);
+ uint8_t fabricBindingVersion = static_cast(0);
+ chip::ByteSpan signature;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
+
+ using ResponseType = DataModel::NullObjectType;
+
+ static constexpr bool MustUseTimedInvoke() { return false; }
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::SignVidVerificationResponse::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
+
+ chip::FabricIndex fabricIndex = static_cast(0);
+ uint8_t fabricBindingVersion = static_cast(0);
+ chip::ByteSpan signature;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace SignVidVerificationResponse
} // namespace Commands
namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
index de6d243ab1785a..94f4605280a88f 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
@@ -550,6 +550,18 @@ namespace AddTrustedRootCertificate {
static constexpr CommandId Id = 0x0000000B;
} // namespace AddTrustedRootCertificate
+namespace SetVidVerificationStatement {
+static constexpr CommandId Id = 0x0000000C;
+} // namespace SetVidVerificationStatement
+
+namespace SignVidVerificationRequest {
+static constexpr CommandId Id = 0x0000000D;
+} // namespace SignVidVerificationRequest
+
+namespace SignVidVerificationResponse {
+static constexpr CommandId Id = 0x0000000E;
+} // namespace SignVidVerificationResponse
+
} // namespace Commands
} // namespace OperationalCredentials
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
index 83e14851863579..a9c6375744c483 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
@@ -3671,6 +3671,8 @@ class AdministratorCommissioningRevokeCommissioning : public ClusterCommand
| * UpdateFabricLabel | 0x09 |
| * RemoveFabric | 0x0A |
| * AddTrustedRootCertificate | 0x0B |
+| * SetVidVerificationStatement | 0x0C |
+| * SignVidVerificationRequest | 0x0D |
|------------------------------------------------------------------------------|
| Attributes: | |
| * NOCs | 0x0000 |
@@ -3995,6 +3997,87 @@ class OperationalCredentialsAddTrustedRootCertificate : public ClusterCommand
chip::app::Clusters::OperationalCredentials::Commands::AddTrustedRootCertificate::Type mRequest;
};
+/*
+ * Command SetVidVerificationStatement
+ */
+class OperationalCredentialsSetVidVerificationStatement : public ClusterCommand
+{
+public:
+ OperationalCredentialsSetVidVerificationStatement(CredentialIssuerCommands * credsIssuerConfig) :
+ ClusterCommand("set-vid-verification-statement", credsIssuerConfig)
+ {
+ AddArgument("VendorID", 0, UINT16_MAX, &mRequest.vendorID);
+ AddArgument("VidVerificationStatement", &mRequest.vidVerificationStatement);
+ AddArgument("Vvsc", &mRequest.vvsc);
+ ClusterCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(chip::DeviceProxy * device, std::vector endpointIds) override
+ {
+ constexpr chip::ClusterId clusterId = chip::app::Clusters::OperationalCredentials::Id;
+ constexpr chip::CommandId commandId =
+ chip::app::Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::Id;
+
+ ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on endpoint %u", clusterId,
+ commandId, endpointIds.at(0));
+ return ClusterCommand::SendCommand(device, endpointIds.at(0), clusterId, commandId, mRequest);
+ }
+
+ CHIP_ERROR SendGroupCommand(chip::GroupId groupId, chip::FabricIndex fabricIndex) override
+ {
+ constexpr chip::ClusterId clusterId = chip::app::Clusters::OperationalCredentials::Id;
+ constexpr chip::CommandId commandId =
+ chip::app::Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::Id;
+
+ ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on Group %u", clusterId, commandId,
+ groupId);
+
+ return ClusterCommand::SendGroupCommand(groupId, fabricIndex, clusterId, commandId, mRequest);
+ }
+
+private:
+ chip::app::Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::Type mRequest;
+};
+
+/*
+ * Command SignVidVerificationRequest
+ */
+class OperationalCredentialsSignVidVerificationRequest : public ClusterCommand
+{
+public:
+ OperationalCredentialsSignVidVerificationRequest(CredentialIssuerCommands * credsIssuerConfig) :
+ ClusterCommand("sign-vid-verification-request", credsIssuerConfig)
+ {
+ AddArgument("FabricIndex", 0, UINT8_MAX, &mRequest.fabricIndex);
+ AddArgument("ClientChallenge", &mRequest.clientChallenge);
+ ClusterCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(chip::DeviceProxy * device, std::vector endpointIds) override
+ {
+ constexpr chip::ClusterId clusterId = chip::app::Clusters::OperationalCredentials::Id;
+ constexpr chip::CommandId commandId = chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationRequest::Id;
+
+ ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on endpoint %u", clusterId,
+ commandId, endpointIds.at(0));
+ return ClusterCommand::SendCommand(device, endpointIds.at(0), clusterId, commandId, mRequest);
+ }
+
+ CHIP_ERROR SendGroupCommand(chip::GroupId groupId, chip::FabricIndex fabricIndex) override
+ {
+ constexpr chip::ClusterId clusterId = chip::app::Clusters::OperationalCredentials::Id;
+ constexpr chip::CommandId commandId = chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationRequest::Id;
+
+ ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on Group %u", clusterId, commandId,
+ groupId);
+
+ return ClusterCommand::SendGroupCommand(groupId, fabricIndex, clusterId, commandId, mRequest);
+ }
+
+private:
+ chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationRequest::Type mRequest;
+};
+
/*----------------------------------------------------------------------------*\
| Cluster GroupKeyManagement | 0x003F |
|------------------------------------------------------------------------------|
@@ -20035,15 +20118,17 @@ void registerClusterOperationalCredentials(Commands & commands, CredentialIssuer
//
// Commands
//
- make_unique(Id, credsIssuerConfig), //
- make_unique(credsIssuerConfig), //
- make_unique(credsIssuerConfig), //
- make_unique(credsIssuerConfig), //
- make_unique(credsIssuerConfig), //
- make_unique(credsIssuerConfig), //
- make_unique(credsIssuerConfig), //
- make_unique(credsIssuerConfig), //
- make_unique(credsIssuerConfig), //
+ make_unique(Id, credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
+ make_unique(credsIssuerConfig), //
//
// Attributes
//
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
index ad88826578a3f6..4121c85cf30051 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
@@ -2212,6 +2212,14 @@ ComplexArgumentParser::Setup(const char * label,
ReturnErrorOnFailure(ComplexArgumentParser::Setup(labelWithMember, request.label, value["label"]));
valueCopy.removeMember("label");
+ if (value.isMember("vidVerificationStatement"))
+ {
+ snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "vidVerificationStatement");
+ ReturnErrorOnFailure(
+ ComplexArgumentParser::Setup(labelWithMember, request.vidVerificationStatement, value["vidVerificationStatement"]));
+ }
+ valueCopy.removeMember("vidVerificationStatement");
+
if (value.isMember("fabricIndex"))
{
snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "fabricIndex");
@@ -2229,6 +2237,7 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::OperationalCredentials
ComplexArgumentParser::Finalize(request.fabricID);
ComplexArgumentParser::Finalize(request.nodeID);
ComplexArgumentParser::Finalize(request.label);
+ ComplexArgumentParser::Finalize(request.vidVerificationStatement);
ComplexArgumentParser::Finalize(request.fabricIndex);
}
@@ -2253,6 +2262,13 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
ReturnErrorOnFailure(ComplexArgumentParser::Setup(labelWithMember, request.icac, value["icac"]));
valueCopy.removeMember("icac");
+ if (value.isMember("vvsc"))
+ {
+ snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "vvsc");
+ ReturnErrorOnFailure(ComplexArgumentParser::Setup(labelWithMember, request.vvsc, value["vvsc"]));
+ }
+ valueCopy.removeMember("vvsc");
+
if (value.isMember("fabricIndex"))
{
snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "fabricIndex");
@@ -2267,6 +2283,7 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::OperationalCredentials
{
ComplexArgumentParser::Finalize(request.noc);
ComplexArgumentParser::Finalize(request.icac);
+ ComplexArgumentParser::Finalize(request.vvsc);
ComplexArgumentParser::Finalize(request.fabricIndex);
}
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
index 64e1e66495430e..cb33c79471bbcd 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
@@ -2007,6 +2007,14 @@ DataModelLogger::LogValue(const char * label, size_t indent,
return err;
}
}
+ {
+ CHIP_ERROR err = LogValue("VidVerificationStatement", indent + 1, value.vidVerificationStatement);
+ if (err != CHIP_NO_ERROR)
+ {
+ DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'VidVerificationStatement'");
+ return err;
+ }
+ }
{
CHIP_ERROR err = LogValue("FabricIndex", indent + 1, value.fabricIndex);
if (err != CHIP_NO_ERROR)
@@ -2040,6 +2048,14 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
return err;
}
}
+ {
+ CHIP_ERROR err = LogValue("Vvsc", indent + 1, value.vvsc);
+ if (err != CHIP_NO_ERROR)
+ {
+ DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'Vvsc'");
+ return err;
+ }
+ }
{
CHIP_ERROR err = LogValue("FabricIndex", indent + 1, value.fabricIndex);
if (err != CHIP_NO_ERROR)
@@ -9920,6 +9936,16 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
DataModelLogger::LogString(indent, "}");
return CHIP_NO_ERROR;
}
+CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
+ const OperationalCredentials::Commands::SignVidVerificationResponse::DecodableType & value)
+{
+ DataModelLogger::LogString(label, indent, "{");
+ ReturnErrorOnFailure(DataModelLogger::LogValue("fabricIndex", indent + 1, value.fabricIndex));
+ ReturnErrorOnFailure(DataModelLogger::LogValue("fabricBindingVersion", indent + 1, value.fabricBindingVersion));
+ ReturnErrorOnFailure(DataModelLogger::LogValue("signature", indent + 1, value.signature));
+ DataModelLogger::LogString(indent, "}");
+ return CHIP_NO_ERROR;
+}
CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
const GroupKeyManagement::Commands::KeySetReadResponse::DecodableType & value)
{
@@ -20599,6 +20625,11 @@ CHIP_ERROR DataModelLogger::LogCommand(const chip::app::ConcreteCommandPath & pa
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
return DataModelLogger::LogValue("NOCResponse", 1, value);
}
+ case OperationalCredentials::Commands::SignVidVerificationResponse::Id: {
+ OperationalCredentials::Commands::SignVidVerificationResponse::DecodableType value;
+ ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
+ return DataModelLogger::LogValue("SignVidVerificationResponse", 1, value);
+ }
}
break;
}
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
index cebbf479e877f5..c4b3a233a0e468 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
@@ -859,6 +859,9 @@ static CHIP_ERROR LogValue(const char * label, size_t indent,
const chip::app::Clusters::OperationalCredentials::Commands::CSRResponse::DecodableType & value);
static CHIP_ERROR LogValue(const char * label, size_t indent,
const chip::app::Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType & value);
+static CHIP_ERROR
+LogValue(const char * label, size_t indent,
+ const chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationResponse::DecodableType & value);
static CHIP_ERROR LogValue(const char * label, size_t indent,
const chip::app::Clusters::GroupKeyManagement::Commands::KeySetReadResponse::DecodableType & value);
static CHIP_ERROR
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp
index d5162cb77c3557..2a513089e7a261 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp
@@ -5031,6 +5031,10 @@ char const * AcceptedCommandIdToText(chip::ClusterId cluster, chip::CommandId id
return "RemoveFabric";
case chip::app::Clusters::OperationalCredentials::Commands::AddTrustedRootCertificate::Id:
return "AddTrustedRootCertificate";
+ case chip::app::Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::Id:
+ return "SetVidVerificationStatement";
+ case chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationRequest::Id:
+ return "SignVidVerificationRequest";
default:
return "Unknown";
}
@@ -6141,6 +6145,8 @@ char const * GeneratedCommandIdToText(chip::ClusterId cluster, chip::CommandId i
return "CSRResponse";
case chip::app::Clusters::OperationalCredentials::Commands::NOCResponse::Id:
return "NOCResponse";
+ case chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationResponse::Id:
+ return "SignVidVerificationResponse";
default:
return "Unknown";
}
@@ -6699,6 +6705,8 @@ char const * DeviceTypeIdToText(chip::DeviceTypeId id)
return "Extended Color Light";
case 0x0000010F:
return "Mounted On/Off Control";
+ case 0x00000110:
+ return "Mounted Dimmable Load Control";
case 0x00000142:
return "Camera";
case 0x00000202:
diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
index 27dee001243df8..73f63f92f4b202 100644
--- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
@@ -39068,6 +39068,8 @@ class SubscribeAttributeAdministratorCommissioningClusterRevision : public Subsc
| * UpdateFabricLabel | 0x09 |
| * RemoveFabric | 0x0A |
| * AddTrustedRootCertificate | 0x0B |
+| * SetVidVerificationStatement | 0x0C |
+| * SignVidVerificationRequest | 0x0D |
|------------------------------------------------------------------------------|
| Attributes: | |
| * NOCs | 0x0000 |
@@ -39527,6 +39529,149 @@ class OperationalCredentialsAddTrustedRootCertificate : public ClusterCommand {
chip::app::Clusters::OperationalCredentials::Commands::AddTrustedRootCertificate::Type mRequest;
};
+#if MTR_ENABLE_PROVISIONAL
+/*
+ * Command SetVidVerificationStatement
+ */
+class OperationalCredentialsSetVidVerificationStatement : public ClusterCommand {
+public:
+ OperationalCredentialsSetVidVerificationStatement()
+ : ClusterCommand("set-vid-verification-statement")
+ {
+#if MTR_ENABLE_PROVISIONAL
+ AddArgument("VendorID", 0, UINT16_MAX, &mRequest.vendorID);
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+ AddArgument("VidVerificationStatement", &mRequest.vidVerificationStatement);
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+ AddArgument("Vvsc", &mRequest.vvsc);
+#endif // MTR_ENABLE_PROVISIONAL
+ ClusterCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
+ {
+ constexpr chip::ClusterId clusterId = chip::app::Clusters::OperationalCredentials::Id;
+ constexpr chip::CommandId commandId = chip::app::Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::Id;
+
+ ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on endpoint %u", clusterId, commandId, endpointId);
+
+ dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL);
+ __auto_type * cluster = [[MTRBaseClusterOperationalCredentials alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+ __auto_type * params = [[MTROperationalCredentialsClusterSetVidVerificationStatementParams alloc] init];
+ params.timedInvokeTimeoutMs = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
+#if MTR_ENABLE_PROVISIONAL
+ if (mRequest.vendorID.HasValue()) {
+ params.vendorID = [NSNumber numberWithUnsignedShort:chip::to_underlying(mRequest.vendorID.Value())];
+ } else {
+ params.vendorID = nil;
+ }
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+ if (mRequest.vidVerificationStatement.HasValue()) {
+ params.vidVerificationStatement = [NSData dataWithBytes:mRequest.vidVerificationStatement.Value().data() length:mRequest.vidVerificationStatement.Value().size()];
+ } else {
+ params.vidVerificationStatement = nil;
+ }
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+ if (mRequest.vvsc.HasValue()) {
+ params.vvsc = [NSData dataWithBytes:mRequest.vvsc.Value().data() length:mRequest.vvsc.Value().size()];
+ } else {
+ params.vvsc = nil;
+ }
+#endif // MTR_ENABLE_PROVISIONAL
+ uint16_t repeatCount = mRepeatCount.ValueOr(1);
+ uint16_t __block responsesNeeded = repeatCount;
+ while (repeatCount--) {
+ [cluster setVidVerificationStatementWithParams:params completion:
+ ^(NSError * _Nullable error) {
+ responsesNeeded--;
+ if (error != nil) {
+ mError = error;
+ LogNSError("Error", error);
+ RemoteDataModelLogger::LogCommandErrorAsJSON(@(endpointId), @(clusterId), @(commandId), error);
+ }
+ if (responsesNeeded == 0) {
+ SetCommandExitStatus(mError);
+ }
+ }];
+ }
+ return CHIP_NO_ERROR;
+ }
+
+private:
+ chip::app::Clusters::OperationalCredentials::Commands::SetVidVerificationStatement::Type mRequest;
+};
+
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+/*
+ * Command SignVidVerificationRequest
+ */
+class OperationalCredentialsSignVidVerificationRequest : public ClusterCommand {
+public:
+ OperationalCredentialsSignVidVerificationRequest()
+ : ClusterCommand("sign-vid-verification-request")
+ {
+#if MTR_ENABLE_PROVISIONAL
+ AddArgument("FabricIndex", 0, UINT8_MAX, &mRequest.fabricIndex);
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+ AddArgument("ClientChallenge", &mRequest.clientChallenge);
+#endif // MTR_ENABLE_PROVISIONAL
+ ClusterCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
+ {
+ constexpr chip::ClusterId clusterId = chip::app::Clusters::OperationalCredentials::Id;
+ constexpr chip::CommandId commandId = chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationRequest::Id;
+
+ ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on endpoint %u", clusterId, commandId, endpointId);
+
+ dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL);
+ __auto_type * cluster = [[MTRBaseClusterOperationalCredentials alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+ __auto_type * params = [[MTROperationalCredentialsClusterSignVidVerificationRequestParams alloc] init];
+ params.timedInvokeTimeoutMs = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
+#if MTR_ENABLE_PROVISIONAL
+ params.fabricIndex = [NSNumber numberWithUnsignedChar:mRequest.fabricIndex];
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+ params.clientChallenge = [NSData dataWithBytes:mRequest.clientChallenge.data() length:mRequest.clientChallenge.size()];
+#endif // MTR_ENABLE_PROVISIONAL
+ uint16_t repeatCount = mRepeatCount.ValueOr(1);
+ uint16_t __block responsesNeeded = repeatCount;
+ while (repeatCount--) {
+ [cluster signVidVerificationRequestWithParams:params completion:
+ ^(MTROperationalCredentialsClusterSignVidVerificationResponseParams * _Nullable values, NSError * _Nullable error) {
+ NSLog(@"Values: %@", values);
+ if (error == nil) {
+ constexpr chip::CommandId responseId = chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationResponse::Id;
+ RemoteDataModelLogger::LogCommandAsJSON(@(endpointId), @(clusterId), @(responseId), values);
+ }
+ responsesNeeded--;
+ if (error != nil) {
+ mError = error;
+ LogNSError("Error", error);
+ constexpr chip::CommandId responseId = chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationResponse::Id;
+ RemoteDataModelLogger::LogCommandErrorAsJSON(@(endpointId), @(clusterId), @(responseId), error);
+ }
+ if (responsesNeeded == 0) {
+ SetCommandExitStatus(mError);
+ }
+ }];
+ }
+ return CHIP_NO_ERROR;
+ }
+
+private:
+ chip::app::Clusters::OperationalCredentials::Commands::SignVidVerificationRequest::Type mRequest;
+};
+
+#endif // MTR_ENABLE_PROVISIONAL
+
/*
* Attribute NOCs
*/
@@ -179353,6 +179498,12 @@ void registerClusterOperationalCredentials(Commands & commands)
make_unique(), //
make_unique(), //
make_unique(), //
+#if MTR_ENABLE_PROVISIONAL
+ make_unique(), //
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+ make_unique(), //
+#endif // MTR_ENABLE_PROVISIONAL
make_unique(Id), //
make_unique(Id), //
make_unique(Id), //