<?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>
