General and node management62 — Operational Credentials

Matter Cluster 62 — Operational Credentials

Matter Cluster 62 (0x003E) Operational Credentials: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 62 — Operational Credentials Cluster

Matter Cluster 62, also written as 0x003E, is the Operational Credentials Cluster. This cluster is used to add or remove Node Operational credentials on a Commissionee or already-configured Node, as well as manage the associated Fabrics.

Cluster Identity

FieldValue
Cluster ID decimal62
Cluster ID hex0x003E
Cluster nameOperational Credentials
Cluster revision (Matter 1.6.1)2
Roleutility
ScopeNode
PICS codeOPCREDS
Typical endpoint0

Revision history

RevisionChange
1Initial revision
2Introduction of command, attributes and fields to support the Fabric Table Vendor ID Verification Procedure and the procedure increased flash storage cost by approximately 90 bytes per fabric

Shadow Path Format

Cluster 62 values in the device shadow use this format:

endpoint_id / 62 / attribute_id

Example:

{
  "0/62/2": 5
}
PartMeaning
0Endpoint ID
62Operational Credentials cluster
2SupportedFabrics attribute

Data Types

CertificateChainTypeEnum

This enumeration is used by the CertificateChainRequest command to convey which certificate from the device attestation certificate chain to transmit back to the client.

ValueNameConformanceMeaning
1DACCertificateMRequest the DER-encoded DAC certificate
2PAICertificateMRequest the DER-encoded PAI certificate

NodeOperationalCertStatusEnum

This enumeration is used by the NOCResponse common response command to convey detailed outcome of several of this cluster's operations.

ValueNameConformanceMeaning
0OKMOK, no error
1InvalidPublicKeyMPublic Key in the NOC does not match the public key in the NOCSR
2InvalidNodeOpIdMThe Node Operational ID in the NOC is not formatted correctly.
3InvalidNOCMAny other validation error in NOC chain
4MissingCsrMNo record of prior CSR for which this NOC could match
5TableFullMNOCs table full, cannot add another one
6InvalidAdminSubjectMInvalid CaseAdminSubject field for an AddNOC command.
9FabricConflictMTrying to AddNOC instead of UpdateNOC against an existing Fabric.
10LabelConflictMLabel already exists on another Fabric.
11InvalidFabricIndexMFabricIndex argument is invalid.

FabricDescriptorStruct (struct) — fabric-scoped

This structure encodes a Fabric Reference for a fabric within which a given Node is currently commissioned.

FieldNameTypeConformanceConstraintMeaning
1RootPublicKeyoctstrMallowed: 65This field contains the public key for the trusted root that scopes the fabric referenced by FabricIndex and its associated operational credential.
2VendorIDvendor-idMdesc—
3FabricIDfabric-idM——
4NodeIDnode-idM——
5LabelstringMmax length 32This field contains a commissioner-set label for the fabric referenced by FabricIndex.
6VIDVerificationStatementoctstrOallowed: 85—

NOCStruct (struct) — fabric-scoped

This encodes a NOC chain, underpinning a commissioned Operational Identity for a given Node. The VVSC field is mutually exclusive with the ICAC field.

FieldNameTypeConformanceConstraintMeaning
1NOCoctstrMmax length 400—
2ICACoctstr (nullable)Mmax length 400—
3VVSCoctstrdescmax length 400—

Cluster 62 Attributes

Cluster 62 defines 6 attributes plus the global attributes. Conformance: M mandatory, O optional, a feature code means "mandatory when that feature is present", square brackets mean "optional when …".

IDHexAttributeTypeConformanceAccessQualitiesDefault
00x0000NOCslist of NOCStructMR (read: admin, fabric-scoped)persisted, change omitted—
10x0001Fabricslist of FabricDescriptorStructMR (read: view, fabric-scoped)persisted—
20x0002SupportedFabricsuint8MR (read: view)——
30x0003CommissionedFabricsuint8MR (read: view)persisted—
40x0004TrustedRootCertificateslist of octstrMR (read: view)persisted, change omitted—
50x0005CurrentFabricIndexuint8MR (read: view)—0

Global attributes

IDHexAttributeMeaning
655280xFFF8GeneratedCommandListResponse command IDs this server generates.
655290xFFF9AcceptedCommandListCommand IDs this server accepts.
655310xFFFBAttributeListAttribute IDs implemented.
655320xFFFCFeatureMapImplemented optional features (see above).
655330xFFFDClusterRevisionCluster revision implemented; 2 for a Matter 1.6.1 device.

Attribute Details

Attribute 0 / 0x0000 — NOCs

Path example:

0/62/0

No condensed specification text is available for NOCs; use the type, conformance and constraint below together with the cluster description above.

PropertyValue
Typelist of NOCStruct
ConformanceM
AccessR (read: admin, fabric-scoped)
Qualitiespersisted, change omitted
Constraintmax SupportedFabrics entries

Each entry is a NOCStruct (see Data Types).

Example:

{
  "0/62/0": []
}

Attribute 1 / 0x0001 — Fabrics

Path example:

0/62/1

Indicates all fabrics to which this Node is commissioned, encoded as a read-only list of FabricDescriptorStruct. This information may be computed directly from the NOCs attribute. The Fabrics attribute is also known as "the fabric table". Upon Factory Data Reset, this attribute is set to a default value of an empty list.

PropertyValue
Typelist of FabricDescriptorStruct
ConformanceM
AccessR (read: view, fabric-scoped)
Qualitiespersisted
Constraintmax SupportedFabrics entries

Each entry is a FabricDescriptorStruct (see Data Types).

Example:

{
  "0/62/1": []
}

Attribute 2 / 0x0002 — SupportedFabrics

Path example:

0/62/2

Indicates the number of Fabrics that are supported by the device. This value is fixed for a particular device.

PropertyValue
Typeuint8
ConformanceM
AccessR (read: view)
Constraint5 to 254

Example:

{
  "0/62/2": 5
}

Attribute 3 / 0x0003 — CommissionedFabrics

Path example:

0/62/3

Indicates the number of Fabrics to which the device is currently commissioned. This attribute is equal to the following: - The number of entries in the NOCs attribute. - The number of entries in the Fabrics attribute. Upon Factory Data Reset, this attribute is set to a default value of 0.

PropertyValue
Typeuint8
ConformanceM
AccessR (read: view)
Qualitiespersisted
Constraintmax SupportedFabrics

Example:

{
  "0/62/3": 1
}

Attribute 4 / 0x0004 — TrustedRootCertificates

Path example:

0/62/4

This attribute contains the list of Trusted Root CA Certificates (RCAC) installed on the Node, as octet strings containing their Matter Certificate Encoding representation. These certificates are installed through the AddTrustedRootCertificate command. Depending on the method of storage employed by the server, either shared storage for identical root certificates shared by many fabrics, or individually stored root certificate per fabric, multiple identical root certificates may legally appear within the list.

PropertyValue
Typelist of octstr
ConformanceM
AccessR (read: view)
Qualitiespersisted, change omitted
Constraintmax SupportedFabrics entries

Example:

{
  "0/62/4": []
}

Attribute 5 / 0x0005 — CurrentFabricIndex

Path example:

0/62/5

Indicates the accessing fabric index. This attribute is useful to contextualize Fabric-Scoped entries obtained from response commands or attribute reads, since a given Fabric may be referenced by a different Fabric Index locally on a remote Node.

PropertyValue
Typeuint8
ConformanceM
AccessR (read: view)
Default0

Example:

{
  "0/62/5": 1
}

Cluster 62 Commands

Cluster 62 has 10 client-to-server commands and 5 responses.

IDHexCommandDirectionConformanceResponseDescription
00x00AttestationRequestclient → serverMAttestationResponseThis command is used to perform an attestation request.
10x01AttestationResponseserver → clientM—This command is used to report the results of the AttestationRequest command.
20x02CertificateChainRequestclient → serverMCertificateChainResponseThis command is used to request a certificate from the device attestation certificate chain.
30x03CertificateChainResponseserver → clientM—This command is used to report the results of the CertificateChainRequest command.
40x04CSRRequestclient → serverMCSRResponse—
50x05CSRResponseserver → clientM——
60x06AddNOCclient → serverMNOCResponse—
70x07UpdateNOCclient → serverMNOCResponse—
80x08NOCResponseserver → clientM——
90x09UpdateFabricLabelclient → serverMNOCResponseThis command is used to set the user-visible fabric label for a given Fabric.
100x0ARemoveFabricclient → serverMNOCResponseThis command is used to remove a Fabric from the device.
110x0BAddTrustedRootCertificateclient → serverMstatusThis command is used to add a trusted root certificate to the device.
120x0CSetVIDVerificationStatementclient → serverMstatus—
130x0DSignVIDVerificationRequestclient → serverMSignVIDVerificationResponse—
140x0ESignVIDVerificationResponseserver → clientM——

AcceptedCommandList

The AcceptedCommandList attribute lists the command IDs the endpoint actually implements:

endpoint_id / 62 / 65529
{
  "0/62/65529": [
    0,
    2,
    4,
    6,
    7,
    9,
    10,
    11,
    12,
    13
  ]
}

Before sending a Cluster 62 command, check that the command ID exists in endpoint/62/65529. Optional commands are only present when the matching feature is set in FeatureMap.


Bridge Command Payload Format

The bridge accepts Matter commands in this structure:

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "AttestationRequest",
    "payload": {},
    "timed_request_timeout_ms": 1000
  }
}

For Cluster 62, always use "cluster_id": 62. Payload keys are the command field names in lowerCamelCase. Octet-string fields are base64-encoded. timed_request_timeout_ms is required for timed commands and ignored otherwise.


Command: AttestationRequest

Purpose

This command is used to perform an attestation request. This command is generated to request the Attestation Information, in the form of an AttestationResponse Command. If the AttestationNonce that is provided in the command is malformed, a recipient must fail the command with a Status Code of INVALID_COMMAND. The AttestationNonce field is used in the computation of the Attestation Information.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameAttestationRequest
Directionclient → server
ConformanceM
ResponseAttestationResponse
Access(invoke: admin)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0AttestationNonceattestationNonceoctstrMallowed: 32—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "AttestationRequest",
    "payload": {
      "attestationNonce": "AQID"
    }
  }
}

The device answers with AttestationResponse (see below).


Command: AttestationResponse

Purpose

This command is used to report the results of the AttestationRequest command.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameAttestationResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0AttestationElementsattestationElementsoctstrMmax length RESP_MAXThis field contains the octet string of the serialized attestation_elements_message.
1AttestationSignatureattestationSignatureoctstrMallowed: 64This field contains the octet string of the necessary attestation_signature.

Command: CertificateChainRequest

Purpose

This command is used to request a certificate from the device attestation certificate chain. If the CertificateType is not a valid value per CertificateChainTypeEnum then the command must fail with a Status Code of INVALID_COMMAND.

Command Identity

FieldValue
Command ID2
Command hex0x02
Command nameCertificateChainRequest
Directionclient → server
ConformanceM
ResponseCertificateChainResponse
Access(invoke: admin)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0CertificateTypecertificateTypeCertificateChainTypeEnumMdesc—

CertificateType values (CertificateChainTypeEnum): 1 = DACCertificate, 2 = PAICertificate

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "CertificateChainRequest",
    "payload": {
      "certificateType": 1
    }
  }
}

The device answers with CertificateChainResponse (see below).


Command: CertificateChainResponse

Purpose

This command is used to report the results of the CertificateChainRequest command. This command is generated in response to a CertificateChainRequest command.

Command Identity

FieldValue
Command ID3
Command hex0x03
Command nameCertificateChainResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0CertificatecertificateoctstrMmax length 600This field is the DER encoded certificate corresponding to the CertificateType field in the CertificateChainRequest command.

Command: CSRRequest

Purpose

CSRRequest is a client-to-server command of the Operational Credentials cluster.

Command Identity

FieldValue
Command ID4
Command hex0x04
Command nameCSRRequest
Directionclient → server
ConformanceM
ResponseCSRResponse
Access(invoke: admin)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0CSRNoncecsrNonceoctstrMallowed: 32—
1IsForUpdateNOCisForUpdateNOCboolO——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "CSRRequest",
    "payload": {
      "csrNonce": "AQID"
    }
  }
}

The device answers with CSRResponse (see below).


Command: CSRResponse

Purpose

CSRResponse is a server response of the Operational Credentials cluster.

Command Identity

FieldValue
Command ID5
Command hex0x05
Command nameCSRResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0NOCSRElementsnocsrElementsoctstrMmax length RESP_MAX—
1AttestationSignatureattestationSignatureoctstrMallowed: 64—

Command: AddNOC

Purpose

AddNOC is a client-to-server command of the Operational Credentials cluster.

Command Identity

FieldValue
Command ID6
Command hex0x06
Command nameAddNOC
Directionclient → server
ConformanceM
ResponseNOCResponse
Access(invoke: admin)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0NOCValuenocValueoctstrMmax length 400—
1ICACValueicacValueoctstrOmax length 400—
2IPKValueipkValueoctstrMallowed: 16—
3CaseAdminSubjectcaseAdminSubjectsubject-idM——
4AdminVendorIdadminVendorIdvendor-idM——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "AddNOC",
    "payload": {
      "nocValue": "AQID",
      "ipkValue": "AQID",
      "caseAdminSubject": 1,
      "adminVendorId": 1
    }
  }
}

The device answers with NOCResponse (see below).


Command: UpdateNOC

Purpose

UpdateNOC is a client-to-server command of the Operational Credentials cluster.

Command Identity

FieldValue
Command ID7
Command hex0x07
Command nameUpdateNOC
Directionclient → server
ConformanceM
ResponseNOCResponse
Access(invoke: admin, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0NOCValuenocValueoctstrMmax length 400—
1ICACValueicacValueoctstrOmax length 400—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "UpdateNOC",
    "payload": {
      "nocValue": "AQID"
    }
  }
}

The device answers with NOCResponse (see below).


Command: NOCResponse

Purpose

NOCResponse is a server response of the Operational Credentials cluster.

Command Identity

FieldValue
Command ID8
Command hex0x08
Command nameNOCResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0StatusCodestatusCodeNodeOperationalCertStatusEnumM——
1FabricIndexfabricIndexfabric-idxStatusCode = status, O1 to 254—
2DebugTextdebugTextstringOmax length 128—

StatusCode values (NodeOperationalCertStatusEnum): 0 = OK, 1 = InvalidPublicKey, 2 = InvalidNodeOpId, 3 = InvalidNOC, 4 = MissingCsr, 5 = TableFull, 6 = InvalidAdminSubject, 9 = FabricConflict, 10 = LabelConflict, 11 = InvalidFabricIndex


Command: UpdateFabricLabel

Purpose

This command is used to set the user-visible fabric label for a given Fabric. This command is used by an Administrator to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. An Administrator must use this command to set the Label to a string (possibly selected by the user themselves) that the user can recognize and relate to this Administrator - during the commissioning process, and - whenever the user chooses to update this string.

Command Identity

FieldValue
Command ID9
Command hex0x09
Command nameUpdateFabricLabel
Directionclient → server
ConformanceM
ResponseNOCResponse
Access(invoke: admin, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0LabellabelstringMmax length 32This field contains the label to set for the fabric associated with the current secure session.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "UpdateFabricLabel",
    "payload": {
      "label": "example"
    }
  }
}

The device answers with NOCResponse (see below).


Command: RemoveFabric

Purpose

This command is used to remove a Fabric from the device. This command is used by Administrators to remove a given Fabric and delete all associated fabric-scoped data. If the given Fabric being removed is the last one to reference a given Trusted Root CA Certificate stored in the Trusted Root Certificates list, then that Trusted Root Certificate is removed. This command, if referring to an already existing Fabric not under the control of the invoking Administrator, must ONLY be invoked after obtaining some form of explicit user consent through some method executed by the Administrator or Commissioner.

Command Identity

FieldValue
Command ID10
Command hex0x0A
Command nameRemoveFabric
Directionclient → server
ConformanceM
ResponseNOCResponse
Access(invoke: admin)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0FabricIndexfabricIndexfabric-idxM1 to 254This field contains the Fabric Index reference associated with the Fabric which is to be removed from the device.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "RemoveFabric",
    "payload": {
      "fabricIndex": 1
    }
  }
}

The device answers with NOCResponse (see below).


Command: AddTrustedRootCertificate

Purpose

This command is used to add a trusted root certificate to the device. This command must add a Trusted Root CA Certificate, provided as its Matter Certificate Encoding representation, to the TrustedRootCertificates Attribute list and must ensure the next AddNOC command executed uses the provided certificate as its root of trust. If the certificate from the RootCACertificate field is already installed, based on exact byte-for-byte equality, then this command must succeed with no change to the list. If this command is received without an armed fail-safe context, then this command must fail with a FAILSAFE_REQUIRED status code sent back to the initiator.

Command Identity

FieldValue
Command ID11
Command hex0x0B
Command nameAddTrustedRootCertificate
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: admin)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0RootCACertificaterootCACertificateoctstrMmax length 400—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "AddTrustedRootCertificate",
    "payload": {
      "rootCACertificate": "AQID"
    }
  }
}

Command: SetVIDVerificationStatement

Purpose

SetVIDVerificationStatement is a client-to-server command of the Operational Credentials cluster.

Command Identity

FieldValue
Command ID12
Command hex0x0C
Command nameSetVIDVerificationStatement
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: admin, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0VendorIDvendorIDvendor-idO——
1VIDVerificationStatementvidVerificationStatementoctstrOmax length 85—
2VVSCvvscoctstrOmax length 400—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "SetVIDVerificationStatement",
    "payload": {
      "vendorID": 1,
      "vidVerificationStatement": "AQID"
    }
  }
}

Command: SignVIDVerificationRequest

Purpose

SignVIDVerificationRequest is a client-to-server command of the Operational Credentials cluster.

Command Identity

FieldValue
Command ID13
Command hex0x0D
Command nameSignVIDVerificationRequest
Directionclient → server
ConformanceM
ResponseSignVIDVerificationResponse
Access(invoke: admin)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0FabricIndexfabricIndexfabric-idxM1 to 254—
1ClientChallengeclientChallengeoctstrMallowed: 32—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 62,
    "command_name": "SignVIDVerificationRequest",
    "payload": {
      "fabricIndex": 1,
      "clientChallenge": "AQID"
    }
  }
}

The device answers with SignVIDVerificationResponse (see below).


Command: SignVIDVerificationResponse

Purpose

SignVIDVerificationResponse is a server response of the Operational Credentials cluster.

Command Identity

FieldValue
Command ID14
Command hex0x0E
Command nameSignVIDVerificationResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0FabricIndexfabricIndexfabric-idxM1 to 254—
1FabricBindingVersionfabricBindingVersionuint8M1 to 255—
2SignaturesignatureoctstrMmin length 1—

Cluster 62 Events

Cluster 62 defines no events.


SmartphoneKey Notes

  • Operational Credentials (NOC certificates, ~1.3 KB) is excluded from the state shadow by the bridge, like Thread Network Diagnostics (53).
  • Shadow paths follow endpoint/62/attribute; attribute values that the device reports as unreadable are written as n/a.
  • Attribute IDs, command IDs and enum values on this page come from the CSA Matter 1.6.1 data model; descriptions are condensed from the specification text.