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), //