Skip to content

Commit 2c59174

Browse files
committed
Generate a NodeOperationalCredentials Cluster [WIP]
1 parent 8595d74 commit 2c59174

14 files changed

+4440
-2
lines changed

Generator/ClusterGenerator.cs

Lines changed: 509 additions & 0 deletions
Large diffs are not rendered by default.

Generator/Clusters/ACL-Cluster.xml

Lines changed: 233 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,233 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
4+
The information within this document is the property of the Connectivity
5+
Standards Alliance and its use and disclosure are restricted, except as
6+
expressly set forth herein.
7+
8+
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
9+
nontransferable, worldwide, limited and revocable license (without the right to
10+
sublicense), under Connectivity Standards Alliance's applicable copyright
11+
rights, to view, download, save, reproduce and use the document solely for your
12+
own internal purposes and in accordance with the terms of the license set forth
13+
herein. This license does not authorize you to, and you expressly warrant that
14+
you shall not: (a) permit others (outside your organization) to use this
15+
document; (b) post or publish this document; (c) modify, adapt, translate, or
16+
otherwise change this document in any manner or create any derivative work
17+
based on this document; (d) remove or modify any notice or label on this
18+
document, including this Copyright Notice, License and Disclaimer. The
19+
Connectivity Standards Alliance does not grant you any license hereunder other
20+
than as expressly stated herein.
21+
22+
Elements of this document may be subject to third party intellectual property
23+
rights, including without limitation, patent, copyright or trademark rights,
24+
and any such third party may or may not be a member of the Connectivity
25+
Standards Alliance. Connectivity Standards Alliance members grant other
26+
Connectivity Standards Alliance members certain intellectual property rights as
27+
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
28+
Standards Alliance members do not grant you any rights under this license. The
29+
Connectivity Standards Alliance is not responsible for, and shall not be held
30+
responsible in any manner for, identifying or failing to identify any or all
31+
such third party intellectual property rights. Please visit www.csa-iot.org for
32+
more information on how to become a member of the Connectivity Standards
33+
Alliance.
34+
35+
This document and the information contained herein are provided on an “AS IS”
36+
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
37+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
38+
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
39+
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
40+
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
41+
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
42+
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
43+
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
44+
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
45+
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
46+
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
47+
LOSS OR DAMAGE.
48+
49+
All company, brand and product names in this document may be trademarks that
50+
are the sole property of their respective owners.
51+
52+
This notice and disclaimer must be included on all copies of this document.
53+
54+
Connectivity Standards Alliance
55+
508 Second Street, Suite 206
56+
Davis, CA 95616, USA
57+
-->
58+
<cluster xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="types types.xsd cluster cluster.xsd" id="0x001F" name="Access Control Cluster" revision="1">
59+
<revisionHistory>
60+
<revision revision="1" summary="Initial Release"/>
61+
</revisionHistory>
62+
<clusterIds>
63+
<clusterId id="0x001F" name="AccessControl"/>
64+
</clusterIds>
65+
<classification hierarchy="base" role="utility" picsCode="ACL" scope="Node"/>
66+
<dataTypes>
67+
<enum name="AccessControlEntryAuthModeEnum">
68+
<item value="1" name="PASE" summary="Passcode authenticated session">
69+
<mandatoryConform/>
70+
</item>
71+
<item value="2" name="CASE" summary="Certificate authenticated session">
72+
<mandatoryConform/>
73+
</item>
74+
<item value="3" name="Group" summary="Group authenticated session">
75+
<mandatoryConform/>
76+
</item>
77+
</enum>
78+
<enum name="AccessControlEntryPrivilegeEnum">
79+
<item value="1" name="View" summary="Can read and observe all (except Access Control Cluster and as seen by a non-Proxy)">
80+
<mandatoryConform/>
81+
</item>
82+
<item value="2" name="Proxy" summary="Can read and observe all (as seen by a Proxy)">
83+
<otherwiseConform>
84+
<provisionalConform/>
85+
<mandatoryConform/>
86+
</otherwiseConform>
87+
</item>
88+
<item value="3" name="Operate" summary="View privileges, and can perform the primary function of this Node (except Access Control Cluster)">
89+
<mandatoryConform/>
90+
</item>
91+
<item value="4" name="Manage" summary="Operate privileges, and can modify persistent configuration of this Node (except Access Control Cluster)">
92+
<mandatoryConform/>
93+
</item>
94+
<item value="5" name="Administer" summary="Manage privileges, and can observe and modify the Access Control Cluster">
95+
<mandatoryConform/>
96+
</item>
97+
</enum>
98+
<enum name="ChangeTypeEnum">
99+
<item value="0" name="Changed" summary="Entry or extension was changed">
100+
<mandatoryConform/>
101+
</item>
102+
<item value="1" name="Added" summary="Entry or extension was added">
103+
<mandatoryConform/>
104+
</item>
105+
<item value="2" name="Removed" summary="Entry or extension was removed">
106+
<mandatoryConform/>
107+
</item>
108+
</enum>
109+
<struct name="AccessControlEntryStruct">
110+
<field id="1" name="Privilege" type="AccessControlEntryPrivilegeEnum">
111+
<access fabricSensitive="true"/>
112+
<mandatoryConform/>
113+
</field>
114+
<field id="2" name="AuthMode" type="AccessControlEntryAuthModeEnum">
115+
<access fabricSensitive="true"/>
116+
<mandatoryConform/>
117+
</field>
118+
<field id="3" name="Subjects" type="list">
119+
<entry type="SubjectID"/>
120+
<access fabricSensitive="true"/>
121+
<quality nullable="true"/>
122+
<mandatoryConform/>
123+
<constraint type="maxCount" value="SubjectsPerAccessControlEntry"/>
124+
</field>
125+
<field id="4" name="Targets" type="list">
126+
<entry type="AccessControlTargetStruct"/>
127+
<access fabricSensitive="true"/>
128+
<quality nullable="true"/>
129+
<mandatoryConform/>
130+
<constraint type="maxCount" value="TargetsPerAccessControlEntry"/>
131+
</field>
132+
<access fabricScoped="true"/>
133+
</struct>
134+
<struct name="AccessControlExtensionStruct">
135+
<field id="1" name="Data" type="octstr">
136+
<access fabricSensitive="true"/>
137+
<mandatoryConform/>
138+
<constraint type="maxLength" value="128"/>
139+
</field>
140+
<access fabricScoped="true"/>
141+
</struct>
142+
<struct name="AccessControlTargetStruct">
143+
<field id="0" name="Cluster" type="cluster-id">
144+
<quality nullable="true"/>
145+
<mandatoryConform/>
146+
</field>
147+
<field id="1" name="Endpoint" type="endpoint-no">
148+
<quality nullable="true"/>
149+
<mandatoryConform/>
150+
</field>
151+
<field id="2" name="DeviceType" type="devtype-id">
152+
<quality nullable="true"/>
153+
<mandatoryConform/>
154+
</field>
155+
</struct>
156+
</dataTypes>
157+
<attributes>
158+
<attribute id="0x0000" name="ACL" type="list" default="desc">
159+
<entry type="AccessControlEntryStruct"/>
160+
<access read="true" write="true" readPrivilege="admin" writePrivilege="admin" fabricScoped="true"/>
161+
<mandatoryConform/>
162+
<constraint type="desc"/>
163+
</attribute>
164+
<attribute id="0x0001" name="Extension" type="list" default="desc">
165+
<entry type="AccessControlExtensionStruct"/>
166+
<access read="true" write="true" readPrivilege="admin" writePrivilege="admin" fabricScoped="true"/>
167+
<optionalConform/>
168+
<constraint type="desc"/>
169+
</attribute>
170+
<attribute id="0x0002" name="SubjectsPerAccessControlEntry" type="uint16" default="4">
171+
<access read="true" readPrivilege="view"/>
172+
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false" sourceAttribution="false" quieterReporting="false"/>
173+
<mandatoryConform/>
174+
<constraint type="min" value="4"/>
175+
</attribute>
176+
<attribute id="0x0003" name="TargetsPerAccessControlEntry" type="uint16" default="3">
177+
<access read="true" readPrivilege="view"/>
178+
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false" sourceAttribution="false" quieterReporting="false"/>
179+
<mandatoryConform/>
180+
<constraint type="min" value="3"/>
181+
</attribute>
182+
<attribute id="0x0004" name="AccessControlEntriesPerFabric" type="uint16" default="4">
183+
<access read="true" readPrivilege="view"/>
184+
<quality changeOmitted="false" nullable="false" scene="false" persistence="fixed" reportable="false" sourceAttribution="false" quieterReporting="false"/>
185+
<mandatoryConform/>
186+
<constraint type="min" value="4"/>
187+
</attribute>
188+
</attributes>
189+
<events>
190+
<event id="0x00" name="AccessControlEntryChanged" priority="info">
191+
<access readPrivilege="admin" fabricSensitive="true"/>
192+
<mandatoryConform/>
193+
<field id="1" name="AdminNodeID" type="node-id">
194+
<quality nullable="true"/>
195+
<mandatoryConform/>
196+
<constraint type="desc"/>
197+
</field>
198+
<field id="2" name="AdminPasscodeID" type="uint16">
199+
<quality nullable="true"/>
200+
<mandatoryConform/>
201+
<constraint type="desc"/>
202+
</field>
203+
<field id="3" name="ChangeType" type="ChangeTypeEnum">
204+
<mandatoryConform/>
205+
</field>
206+
<field id="4" name="LatestValue" type="AccessControlEntryStruct">
207+
<quality nullable="true"/>
208+
<mandatoryConform/>
209+
</field>
210+
</event>
211+
<event id="0x01" name="AccessControlExtensionChanged" priority="info">
212+
<access readPrivilege="admin" fabricSensitive="true"/>
213+
<mandatoryConform/>
214+
<field id="1" name="AdminNodeID" type="node-id">
215+
<quality nullable="true"/>
216+
<mandatoryConform/>
217+
<constraint type="desc"/>
218+
</field>
219+
<field id="2" name="AdminPasscodeID" type="uint16">
220+
<quality nullable="true"/>
221+
<mandatoryConform/>
222+
<constraint type="desc"/>
223+
</field>
224+
<field id="3" name="ChangeType" type="ChangeTypeEnum">
225+
<mandatoryConform/>
226+
</field>
227+
<field id="4" name="LatestValue" type="AccessControlExtensionStruct">
228+
<quality nullable="true"/>
229+
<mandatoryConform/>
230+
</field>
231+
</event>
232+
</events>
233+
</cluster>
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
4+
The information within this document is the property of the Connectivity
5+
Standards Alliance and its use and disclosure are restricted, except as
6+
expressly set forth herein.
7+
8+
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
9+
nontransferable, worldwide, limited and revocable license (without the right to
10+
sublicense), under Connectivity Standards Alliance's applicable copyright
11+
rights, to view, download, save, reproduce and use the document solely for your
12+
own internal purposes and in accordance with the terms of the license set forth
13+
herein. This license does not authorize you to, and you expressly warrant that
14+
you shall not: (a) permit others (outside your organization) to use this
15+
document; (b) post or publish this document; (c) modify, adapt, translate, or
16+
otherwise change this document in any manner or create any derivative work
17+
based on this document; (d) remove or modify any notice or label on this
18+
document, including this Copyright Notice, License and Disclaimer. The
19+
Connectivity Standards Alliance does not grant you any license hereunder other
20+
than as expressly stated herein.
21+
22+
Elements of this document may be subject to third party intellectual property
23+
rights, including without limitation, patent, copyright or trademark rights,
24+
and any such third party may or may not be a member of the Connectivity
25+
Standards Alliance. Connectivity Standards Alliance members grant other
26+
Connectivity Standards Alliance members certain intellectual property rights as
27+
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
28+
Standards Alliance members do not grant you any rights under this license. The
29+
Connectivity Standards Alliance is not responsible for, and shall not be held
30+
responsible in any manner for, identifying or failing to identify any or all
31+
such third party intellectual property rights. Please visit www.csa-iot.org for
32+
more information on how to become a member of the Connectivity Standards
33+
Alliance.
34+
35+
This document and the information contained herein are provided on an “AS IS”
36+
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
37+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
38+
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
39+
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
40+
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
41+
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
42+
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
43+
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
44+
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
45+
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
46+
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
47+
LOSS OR DAMAGE.
48+
49+
All company, brand and product names in this document may be trademarks that
50+
are the sole property of their respective owners.
51+
52+
This notice and disclaimer must be included on all copies of this document.
53+
54+
Connectivity Standards Alliance
55+
508 Second Street, Suite 206
56+
Davis, CA 95616, USA
57+
-->
58+
<cluster xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="types types.xsd cluster cluster.xsd" id="0x003C" name="Administrator Commissioning Cluster" revision="1">
59+
<revisionHistory>
60+
<revision revision="1" summary="Initial Release"/>
61+
</revisionHistory>
62+
<clusterIds>
63+
<clusterId id="0x003C" name="Administrator Commissioning"/>
64+
</clusterIds>
65+
<classification hierarchy="base" role="utility" picsCode="CADMIN" scope="Node"/>
66+
<features>
67+
<feature bit="0" code="BC" name="Basic" summary="Node supports Basic Commissioning Method.">
68+
<optionalConform/>
69+
</feature>
70+
</features>
71+
<dataTypes>
72+
<enum name="CommissioningWindowStatusEnum">
73+
<item value="0" name="WindowNotOpen" summary="Commissioning window not open">
74+
<mandatoryConform/>
75+
</item>
76+
<item value="1" name="EnhancedWindowOpen" summary="An Enhanced Commissioning Method window is open">
77+
<mandatoryConform/>
78+
</item>
79+
<item value="2" name="BasicWindowOpen" summary="A Basic Commissioning Method window is open">
80+
<mandatoryConform>
81+
<feature name="BC"/>
82+
</mandatoryConform>
83+
</item>
84+
</enum>
85+
<enum name="Status Codes" type="status"/>
86+
</dataTypes>
87+
<attributes>
88+
<attribute id="0x0000" name="WindowStatus" type="CommissioningWindowStatusEnum">
89+
<access read="true" readPrivilege="view"/>
90+
<mandatoryConform/>
91+
</attribute>
92+
<attribute id="0x0001" name="AdminFabricIndex" type="fabric-idx">
93+
<access read="true" readPrivilege="view"/>
94+
<quality changeOmitted="false" nullable="true" scene="false" persistence="volatile" reportable="false" sourceAttribution="false" quieterReporting="false"/>
95+
<mandatoryConform/>
96+
</attribute>
97+
<attribute id="0x0002" name="AdminVendorId" type="vendor-id">
98+
<access read="true" readPrivilege="view"/>
99+
<quality changeOmitted="false" nullable="true" scene="false" persistence="volatile" reportable="false" sourceAttribution="false" quieterReporting="false"/>
100+
<mandatoryConform/>
101+
</attribute>
102+
</attributes>
103+
<commands>
104+
<command id="0x00" name="OpenCommissioningWindow" direction="commandToServer" response="Y">
105+
<access invokePrivilege="admin" timed="true"/>
106+
<mandatoryConform/>
107+
<field id="0" name="CommissioningTimeout" type="uint16">
108+
<mandatoryConform/>
109+
<constraint type="desc"/>
110+
</field>
111+
<field id="1" name="PAKEPasscodeVerifier" type="octstr">
112+
<mandatoryConform/>
113+
</field>
114+
<field id="2" name="Discriminator" type="uint16">
115+
<mandatoryConform/>
116+
<constraint type="between" from="0" to="4095"/>
117+
</field>
118+
<field id="3" name="Iterations" type="uint32">
119+
<mandatoryConform/>
120+
<constraint type="between" from="1000" to="100000"/>
121+
</field>
122+
<field id="4" name="Salt" type="octstr">
123+
<mandatoryConform/>
124+
<constraint type="lengthBetween" from="16" to="32"/>
125+
</field>
126+
</command>
127+
<command id="0x01" name="OpenBasicCommissioningWindow" direction="commandToServer" response="Y">
128+
<access invokePrivilege="admin" timed="true"/>
129+
<mandatoryConform>
130+
<feature name="BC"/>
131+
</mandatoryConform>
132+
<field id="0" name="CommissioningTimeout" type="uint16">
133+
<mandatoryConform/>
134+
<constraint type="desc"/>
135+
</field>
136+
</command>
137+
<command id="0x02" name="RevokeCommissioning" direction="commandToServer" response="Y">
138+
<access invokePrivilege="admin" timed="true"/>
139+
<mandatoryConform/>
140+
</command>
141+
</commands>
142+
</cluster>

0 commit comments

Comments
 (0)