| <?xml version="1.0"?> |
| <!-- |
| Copyright (c) 2021 Project CHIP Authors |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <configurator> |
| <domain name="CHIP" /> |
| |
| <struct name="GroupKeyMapStruct" isFabricScoped="true"> |
| <cluster code="0x003F"/> |
| <item fieldId="1" name="GroupId" type="group_id"/> |
| <item fieldId="2" name="GroupKeySetID" type="INT16U"/> |
| </struct> |
| |
| <struct name="GroupInfoMapStruct" isFabricScoped="true"> |
| <cluster code="0x003F"/> |
| <item fieldId="1" name="GroupId" type="group_id"/> |
| <item fieldId="2" name="Endpoints" type="endpoint_no" array="true"/> |
| <item fieldId="3" name="GroupName" type="CHAR_STRING" length="16" optional="true"/> |
| </struct> |
| |
| <struct name="GroupKeySetStruct"> |
| <cluster code="0x003F"/> |
| <item fieldId="0" name="GroupKeySetID" type="INT16U"/> |
| <item fieldId="1" name="GroupKeySecurityPolicy" type="GroupKeySecurityPolicy"/> |
| <item fieldId="2" name="EpochKey0" type="OCTET_STRING" length="16" isNullable="true"/> |
| <item fieldId="3" name="EpochStartTime0" type="epoch_us" isNullable="true"/> |
| <item fieldId="4" name="EpochKey1" type="OCTET_STRING" length="16" isNullable="true"/> |
| <item fieldId="5" name="EpochStartTime1" type="epoch_us" isNullable="true"/> |
| <item fieldId="6" name="EpochKey2" type="OCTET_STRING" length="16" isNullable="true"/> |
| <item fieldId="7" name="EpochStartTime2" type="epoch_us" isNullable="true"/> |
| </struct> |
| |
| <enum name="GroupKeySecurityPolicy" type="ENUM8"> |
| <cluster code="0x003F"/> |
| <item name="TrustFirst" value="0x00"/> |
| <item name="CacheAndSync" value="0x01"/> |
| </enum> |
| |
| <cluster> |
| <domain>General</domain> |
| <name>Group Key Management</name> |
| <code>0x003F</code> |
| <define>GROUP_KEY_MANAGEMENT_CLUSTER</define> |
| <description>The Group Key Management Cluster is the mechanism by which group keys are managed.</description> |
| <attribute side="server" code="0x0000" define="GROUP_KEY_MAP" type="ARRAY" length="254" entryType="GroupKeyMapStruct" writable="true" optional="false"> |
| <description>GroupKeyMap</description> |
| <access op="read" privilege="view"/> |
| <access op="write" privilege="manage"/> |
| </attribute> |
| <attribute side="server" code="0x0001" define="GROUP_TABLE" type="ARRAY" length="254" entryType="GroupInfoMapStruct" writable="false" optional="false">GroupTable</attribute> |
| <attribute side="server" code="0x0002" define="MAX_GROUPS_PER_FABRIC" type="INT16U" writable="false" optional="false">MaxGroupsPerFabric</attribute> |
| <attribute side="server" code="0x0003" define="MAX_GROUP_KEYS_PER_FABRIC" type="INT16U" writable="false" optional="false">MaxGroupKeysPerFabric</attribute> |
| |
| <command source="client" code="0x00" name="KeySetWrite" isFabricScoped="true" optional="false" cli="zcl GroupKeyManagement KeySetWrite"> |
| <description>Write a new set of keys for the given key set id.</description> |
| <arg name="GroupKeySet" type="GroupKeySetStruct"/> |
| <access op="invoke" privilege="administer"/> |
| </command> |
| |
| <command source="client" code="0x01" name="KeySetRead" isFabricScoped="true" response="KeySetReadResponse" optional="false" cli="zcl GroupKeyManagement KeySetRead"> |
| <description>Read the keys for a given key set id.</description> |
| <arg name="GroupKeySetID" type="INT16U"/> |
| <access op="invoke" privilege="administer"/> |
| </command> |
| |
| <command source="server" code="0x02" name="KeySetReadResponse" optional="false" disableDefaultResponse="true"> |
| <description> |
| Response to KeySetRead |
| </description> |
| <arg name="GroupKeySet" type="GroupKeySetStruct"/> |
| </command> |
| |
| <command source="client" code="0x03" name="KeySetRemove" isFabricScoped="true" optional="false" cli="zcl GroupKeyManagement KeySetRemove"> |
| <description>Revoke a Root Key from a Group</description> |
| <arg name="GroupKeySetID" type="INT16U"/> |
| <access op="invoke" privilege="administer"/> |
| </command> |
| |
| <command source="client" code="0x04" name="KeySetReadAllIndices" response="KeySetReadAllIndicesResponse" isFabricScoped="true" optional="false" cli="zcl GroupKeyManagement KeySetReadAllIndices"> |
| <description>Return the list of Group Key Sets associated with the accessing fabric</description> |
| <arg name="GroupKeySetIDs" type="INT16U" array="true"/> |
| <access op="invoke" privilege="administer"/> |
| </command> |
| |
| <command source="server" code="0x05" name="KeySetReadAllIndicesResponse" optional="false" disableDefaultResponse="true"> |
| <description> |
| Reseponse to KeySetReadAllIndices |
| </description> |
| <arg name="GroupKeySetIDs" type="INT16U" array="true"/> |
| </command> |
| |
| </cluster> |
| </configurator> |