blob: 3b4961ea816505c447010a6690c0bebc406bb69e [file] [log] [blame]
<?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="GroupKeySecurityPolicyEnum"/>
<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="GroupKeySecurityPolicyEnum" 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>