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

  <enum name="GroupKeySecurityPolicyEnum" type="enum8">
    <cluster code="0x003F"/>
    <item name="TrustFirst" value="0x00"/>
    <item name="CacheAndSync" value="0x01"/>
  </enum>

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

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

    <features>
      <feature bit="0" code="CS" name="CacheAndSync" summary="The ability to support CacheAndSync security policy and MCSP.">
        <optionalConform/>
      </feature>
    </features>

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