Skip to content

Commit 6b21935

Browse files
Add support for Aliro credential provisioning in door locks (project-chip#31144)
* Add support for Aliro credential provisioning in door locks - Add enums, attributes and commands for supporting Aliro credential provisioning to door locks - Add auto generated code corresponding to changes in the XML * Update src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> * Update src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> * Update src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> * Update src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> * Apply suggestions from code review Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> * Regenerate the zap files * Add AliroExpeditedTransactionSupportedProtocolVersions and AliroSupportedBLEUWBProtocolVersions attributes as lists --------- Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
1 parent 64449a1 commit 6b21935

File tree

44 files changed

+5703
-53
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+5703
-53
lines changed

examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter

+29
Original file line numberDiff line numberDiff line change
@@ -2617,6 +2617,9 @@ cluster DoorLock = 257 {
26172617
kFingerprint = 3;
26182618
kFingerVein = 4;
26192619
kFace = 5;
2620+
kAliroCredentialIssuerKey = 6;
2621+
kAliroEvictableEndpointKey = 7;
2622+
kAliroNonEvictableEndpointKey = 8;
26202623
}
26212624

26222625
enum DataOperationTypeEnum : enum8 {
@@ -2729,6 +2732,9 @@ cluster DoorLock = 257 {
27292732
kFingerprint = 8;
27302733
kFingerVein = 9;
27312734
kFace = 10;
2735+
kAliroCredentialIssuerKey = 11;
2736+
kAliroEvictableEndpointKey = 12;
2737+
kAliroNonEvictableEndpointKey = 13;
27322738
}
27332739

27342740
enum LockOperationTypeEnum : enum8 {
@@ -2766,6 +2772,7 @@ cluster DoorLock = 257 {
27662772
kRemote = 7;
27672773
kRFID = 8;
27682774
kBiometric = 9;
2775+
kAliro = 10;
27692776
}
27702777

27712778
enum UserStatusEnum : enum8 {
@@ -2926,6 +2933,8 @@ cluster DoorLock = 257 {
29262933
kYearDayAccessSchedules = 0x400;
29272934
kHolidaySchedules = 0x800;
29282935
kUnbolt = 0x1000;
2936+
kAliroProvisioning = 0x2000;
2937+
kAliroBLEUWB = 0x4000;
29292938
}
29302939

29312940
struct CredentialStruct {
@@ -3006,6 +3015,15 @@ cluster DoorLock = 257 {
30063015
attribute access(write: administer) optional boolean sendPINOverTheAir = 50;
30073016
attribute access(write: administer) optional boolean requirePINforRemoteOperation = 51;
30083017
attribute access(write: administer) optional int16u expiringUserTimeout = 53;
3018+
readonly attribute access(read: administer) optional nullable octet_string<65> aliroReaderVerificationKey = 128;
3019+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroReaderGroupIdentifier = 129;
3020+
readonly attribute access(read: administer) optional octet_string<16> aliroReaderGroupSubIdentifier = 130;
3021+
readonly attribute access(read: administer) optional octet_string aliroExpeditedTransactionSupportedProtocolVersions[] = 131;
3022+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroGroupResolvingKey = 132;
3023+
readonly attribute access(read: administer) optional octet_string aliroSupportedBLEUWBProtocolVersions[] = 133;
3024+
readonly attribute access(read: administer) optional int8u aliroBLEAdvertisingVersion = 134;
3025+
readonly attribute optional int16u numberOfAliroCredentialIssuerKeysSupported = 135;
3026+
readonly attribute optional int16u numberOfAliroEndpointKeysSupported = 136;
30093027
readonly attribute command_id generatedCommandList[] = 65528;
30103028
readonly attribute command_id acceptedCommandList[] = 65529;
30113029
readonly attribute event_id eventList[] = 65530;
@@ -3171,6 +3189,13 @@ cluster DoorLock = 257 {
31713189
optional octet_string PINCode = 0;
31723190
}
31733191

3192+
request struct SetAliroReaderConfigRequest {
3193+
octet_string<32> signingKey = 0;
3194+
octet_string<65> verificationKey = 1;
3195+
octet_string<16> groupIdentifier = 2;
3196+
optional octet_string<16> groupResolvingKey = 3;
3197+
}
3198+
31743199
/** This command causes the lock device to lock the door. */
31753200
timed command LockDoor(LockDoorRequest): DefaultSuccess = 0;
31763201
/** This command causes the lock device to unlock the door. */
@@ -3209,6 +3234,10 @@ cluster DoorLock = 257 {
32093234
timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38;
32103235
/** This command causes the lock device to unlock the door without pulling the latch. */
32113236
timed command UnboltDoor(UnboltDoorRequest): DefaultSuccess = 39;
3237+
/** This command communicates an Aliro Reader configuration to the lock. */
3238+
timed command access(invoke: administer) SetAliroReaderConfig(SetAliroReaderConfigRequest): DefaultSuccess = 40;
3239+
/** This command clears an existing Aliro Reader configuration for the lock. */
3240+
timed command access(invoke: administer) ClearAliroReaderConfig(): DefaultSuccess = 41;
32123241
}
32133242

32143243
/** Provides an interface for controlling and adjusting automatic window coverings. */

examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter

+29
Original file line numberDiff line numberDiff line change
@@ -1318,6 +1318,9 @@ cluster DoorLock = 257 {
13181318
kFingerprint = 3;
13191319
kFingerVein = 4;
13201320
kFace = 5;
1321+
kAliroCredentialIssuerKey = 6;
1322+
kAliroEvictableEndpointKey = 7;
1323+
kAliroNonEvictableEndpointKey = 8;
13211324
}
13221325

13231326
enum DataOperationTypeEnum : enum8 {
@@ -1430,6 +1433,9 @@ cluster DoorLock = 257 {
14301433
kFingerprint = 8;
14311434
kFingerVein = 9;
14321435
kFace = 10;
1436+
kAliroCredentialIssuerKey = 11;
1437+
kAliroEvictableEndpointKey = 12;
1438+
kAliroNonEvictableEndpointKey = 13;
14331439
}
14341440

14351441
enum LockOperationTypeEnum : enum8 {
@@ -1467,6 +1473,7 @@ cluster DoorLock = 257 {
14671473
kRemote = 7;
14681474
kRFID = 8;
14691475
kBiometric = 9;
1476+
kAliro = 10;
14701477
}
14711478

14721479
enum UserStatusEnum : enum8 {
@@ -1627,6 +1634,8 @@ cluster DoorLock = 257 {
16271634
kYearDayAccessSchedules = 0x400;
16281635
kHolidaySchedules = 0x800;
16291636
kUnbolt = 0x1000;
1637+
kAliroProvisioning = 0x2000;
1638+
kAliroBLEUWB = 0x4000;
16301639
}
16311640

16321641
struct CredentialStruct {
@@ -1707,6 +1716,15 @@ cluster DoorLock = 257 {
17071716
attribute access(write: administer) optional boolean sendPINOverTheAir = 50;
17081717
attribute access(write: administer) optional boolean requirePINforRemoteOperation = 51;
17091718
attribute access(write: administer) optional int16u expiringUserTimeout = 53;
1719+
readonly attribute access(read: administer) optional nullable octet_string<65> aliroReaderVerificationKey = 128;
1720+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroReaderGroupIdentifier = 129;
1721+
readonly attribute access(read: administer) optional octet_string<16> aliroReaderGroupSubIdentifier = 130;
1722+
readonly attribute access(read: administer) optional octet_string aliroExpeditedTransactionSupportedProtocolVersions[] = 131;
1723+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroGroupResolvingKey = 132;
1724+
readonly attribute access(read: administer) optional octet_string aliroSupportedBLEUWBProtocolVersions[] = 133;
1725+
readonly attribute access(read: administer) optional int8u aliroBLEAdvertisingVersion = 134;
1726+
readonly attribute optional int16u numberOfAliroCredentialIssuerKeysSupported = 135;
1727+
readonly attribute optional int16u numberOfAliroEndpointKeysSupported = 136;
17101728
readonly attribute command_id generatedCommandList[] = 65528;
17111729
readonly attribute command_id acceptedCommandList[] = 65529;
17121730
readonly attribute event_id eventList[] = 65530;
@@ -1872,6 +1890,13 @@ cluster DoorLock = 257 {
18721890
optional octet_string PINCode = 0;
18731891
}
18741892

1893+
request struct SetAliroReaderConfigRequest {
1894+
octet_string<32> signingKey = 0;
1895+
octet_string<65> verificationKey = 1;
1896+
octet_string<16> groupIdentifier = 2;
1897+
optional octet_string<16> groupResolvingKey = 3;
1898+
}
1899+
18751900
/** This command causes the lock device to lock the door. */
18761901
timed command LockDoor(LockDoorRequest): DefaultSuccess = 0;
18771902
/** This command causes the lock device to unlock the door. */
@@ -1910,6 +1935,10 @@ cluster DoorLock = 257 {
19101935
timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38;
19111936
/** This command causes the lock device to unlock the door without pulling the latch. */
19121937
timed command UnboltDoor(UnboltDoorRequest): DefaultSuccess = 39;
1938+
/** This command communicates an Aliro Reader configuration to the lock. */
1939+
timed command access(invoke: administer) SetAliroReaderConfig(SetAliroReaderConfigRequest): DefaultSuccess = 40;
1940+
/** This command clears an existing Aliro Reader configuration for the lock. */
1941+
timed command access(invoke: administer) ClearAliroReaderConfig(): DefaultSuccess = 41;
19131942
}
19141943

19151944
endpoint 0 {

examples/lock-app/lock-common/lock-app.matter

+29
Original file line numberDiff line numberDiff line change
@@ -1846,6 +1846,9 @@ cluster DoorLock = 257 {
18461846
kFingerprint = 3;
18471847
kFingerVein = 4;
18481848
kFace = 5;
1849+
kAliroCredentialIssuerKey = 6;
1850+
kAliroEvictableEndpointKey = 7;
1851+
kAliroNonEvictableEndpointKey = 8;
18491852
}
18501853

18511854
enum DataOperationTypeEnum : enum8 {
@@ -1958,6 +1961,9 @@ cluster DoorLock = 257 {
19581961
kFingerprint = 8;
19591962
kFingerVein = 9;
19601963
kFace = 10;
1964+
kAliroCredentialIssuerKey = 11;
1965+
kAliroEvictableEndpointKey = 12;
1966+
kAliroNonEvictableEndpointKey = 13;
19611967
}
19621968

19631969
enum LockOperationTypeEnum : enum8 {
@@ -1995,6 +2001,7 @@ cluster DoorLock = 257 {
19952001
kRemote = 7;
19962002
kRFID = 8;
19972003
kBiometric = 9;
2004+
kAliro = 10;
19982005
}
19992006

20002007
enum UserStatusEnum : enum8 {
@@ -2155,6 +2162,8 @@ cluster DoorLock = 257 {
21552162
kYearDayAccessSchedules = 0x400;
21562163
kHolidaySchedules = 0x800;
21572164
kUnbolt = 0x1000;
2165+
kAliroProvisioning = 0x2000;
2166+
kAliroBLEUWB = 0x4000;
21582167
}
21592168

21602169
struct CredentialStruct {
@@ -2235,6 +2244,15 @@ cluster DoorLock = 257 {
22352244
attribute access(write: administer) optional boolean sendPINOverTheAir = 50;
22362245
attribute access(write: administer) optional boolean requirePINforRemoteOperation = 51;
22372246
attribute access(write: administer) optional int16u expiringUserTimeout = 53;
2247+
readonly attribute access(read: administer) optional nullable octet_string<65> aliroReaderVerificationKey = 128;
2248+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroReaderGroupIdentifier = 129;
2249+
readonly attribute access(read: administer) optional octet_string<16> aliroReaderGroupSubIdentifier = 130;
2250+
readonly attribute access(read: administer) optional octet_string aliroExpeditedTransactionSupportedProtocolVersions[] = 131;
2251+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroGroupResolvingKey = 132;
2252+
readonly attribute access(read: administer) optional octet_string aliroSupportedBLEUWBProtocolVersions[] = 133;
2253+
readonly attribute access(read: administer) optional int8u aliroBLEAdvertisingVersion = 134;
2254+
readonly attribute optional int16u numberOfAliroCredentialIssuerKeysSupported = 135;
2255+
readonly attribute optional int16u numberOfAliroEndpointKeysSupported = 136;
22382256
readonly attribute command_id generatedCommandList[] = 65528;
22392257
readonly attribute command_id acceptedCommandList[] = 65529;
22402258
readonly attribute event_id eventList[] = 65530;
@@ -2400,6 +2418,13 @@ cluster DoorLock = 257 {
24002418
optional octet_string PINCode = 0;
24012419
}
24022420

2421+
request struct SetAliroReaderConfigRequest {
2422+
octet_string<32> signingKey = 0;
2423+
octet_string<65> verificationKey = 1;
2424+
octet_string<16> groupIdentifier = 2;
2425+
optional octet_string<16> groupResolvingKey = 3;
2426+
}
2427+
24032428
/** This command causes the lock device to lock the door. */
24042429
timed command LockDoor(LockDoorRequest): DefaultSuccess = 0;
24052430
/** This command causes the lock device to unlock the door. */
@@ -2438,6 +2463,10 @@ cluster DoorLock = 257 {
24382463
timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38;
24392464
/** This command causes the lock device to unlock the door without pulling the latch. */
24402465
timed command UnboltDoor(UnboltDoorRequest): DefaultSuccess = 39;
2466+
/** This command communicates an Aliro Reader configuration to the lock. */
2467+
timed command access(invoke: administer) SetAliroReaderConfig(SetAliroReaderConfigRequest): DefaultSuccess = 40;
2468+
/** This command clears an existing Aliro Reader configuration for the lock. */
2469+
timed command access(invoke: administer) ClearAliroReaderConfig(): DefaultSuccess = 41;
24412470
}
24422471

24432472
endpoint 0 {

examples/lock-app/nxp/zap/lock-app.matter

+29
Original file line numberDiff line numberDiff line change
@@ -1105,6 +1105,9 @@ cluster DoorLock = 257 {
11051105
kFingerprint = 3;
11061106
kFingerVein = 4;
11071107
kFace = 5;
1108+
kAliroCredentialIssuerKey = 6;
1109+
kAliroEvictableEndpointKey = 7;
1110+
kAliroNonEvictableEndpointKey = 8;
11081111
}
11091112

11101113
enum DataOperationTypeEnum : enum8 {
@@ -1217,6 +1220,9 @@ cluster DoorLock = 257 {
12171220
kFingerprint = 8;
12181221
kFingerVein = 9;
12191222
kFace = 10;
1223+
kAliroCredentialIssuerKey = 11;
1224+
kAliroEvictableEndpointKey = 12;
1225+
kAliroNonEvictableEndpointKey = 13;
12201226
}
12211227

12221228
enum LockOperationTypeEnum : enum8 {
@@ -1254,6 +1260,7 @@ cluster DoorLock = 257 {
12541260
kRemote = 7;
12551261
kRFID = 8;
12561262
kBiometric = 9;
1263+
kAliro = 10;
12571264
}
12581265

12591266
enum UserStatusEnum : enum8 {
@@ -1414,6 +1421,8 @@ cluster DoorLock = 257 {
14141421
kYearDayAccessSchedules = 0x400;
14151422
kHolidaySchedules = 0x800;
14161423
kUnbolt = 0x1000;
1424+
kAliroProvisioning = 0x2000;
1425+
kAliroBLEUWB = 0x4000;
14171426
}
14181427

14191428
struct CredentialStruct {
@@ -1494,6 +1503,15 @@ cluster DoorLock = 257 {
14941503
attribute access(write: administer) optional boolean sendPINOverTheAir = 50;
14951504
attribute access(write: administer) optional boolean requirePINforRemoteOperation = 51;
14961505
attribute access(write: administer) optional int16u expiringUserTimeout = 53;
1506+
readonly attribute access(read: administer) optional nullable octet_string<65> aliroReaderVerificationKey = 128;
1507+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroReaderGroupIdentifier = 129;
1508+
readonly attribute access(read: administer) optional octet_string<16> aliroReaderGroupSubIdentifier = 130;
1509+
readonly attribute access(read: administer) optional octet_string aliroExpeditedTransactionSupportedProtocolVersions[] = 131;
1510+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroGroupResolvingKey = 132;
1511+
readonly attribute access(read: administer) optional octet_string aliroSupportedBLEUWBProtocolVersions[] = 133;
1512+
readonly attribute access(read: administer) optional int8u aliroBLEAdvertisingVersion = 134;
1513+
readonly attribute optional int16u numberOfAliroCredentialIssuerKeysSupported = 135;
1514+
readonly attribute optional int16u numberOfAliroEndpointKeysSupported = 136;
14971515
readonly attribute command_id generatedCommandList[] = 65528;
14981516
readonly attribute command_id acceptedCommandList[] = 65529;
14991517
readonly attribute event_id eventList[] = 65530;
@@ -1659,6 +1677,13 @@ cluster DoorLock = 257 {
16591677
optional octet_string PINCode = 0;
16601678
}
16611679

1680+
request struct SetAliroReaderConfigRequest {
1681+
octet_string<32> signingKey = 0;
1682+
octet_string<65> verificationKey = 1;
1683+
octet_string<16> groupIdentifier = 2;
1684+
optional octet_string<16> groupResolvingKey = 3;
1685+
}
1686+
16621687
/** This command causes the lock device to lock the door. */
16631688
timed command LockDoor(LockDoorRequest): DefaultSuccess = 0;
16641689
/** This command causes the lock device to unlock the door. */
@@ -1697,6 +1722,10 @@ cluster DoorLock = 257 {
16971722
timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38;
16981723
/** This command causes the lock device to unlock the door without pulling the latch. */
16991724
timed command UnboltDoor(UnboltDoorRequest): DefaultSuccess = 39;
1725+
/** This command communicates an Aliro Reader configuration to the lock. */
1726+
timed command access(invoke: administer) SetAliroReaderConfig(SetAliroReaderConfigRequest): DefaultSuccess = 40;
1727+
/** This command clears an existing Aliro Reader configuration for the lock. */
1728+
timed command access(invoke: administer) ClearAliroReaderConfig(): DefaultSuccess = 41;
17001729
}
17011730

17021731
endpoint 0 {

examples/lock-app/qpg/zap/lock.matter

+29
Original file line numberDiff line numberDiff line change
@@ -1502,6 +1502,9 @@ cluster DoorLock = 257 {
15021502
kFingerprint = 3;
15031503
kFingerVein = 4;
15041504
kFace = 5;
1505+
kAliroCredentialIssuerKey = 6;
1506+
kAliroEvictableEndpointKey = 7;
1507+
kAliroNonEvictableEndpointKey = 8;
15051508
}
15061509

15071510
enum DataOperationTypeEnum : enum8 {
@@ -1614,6 +1617,9 @@ cluster DoorLock = 257 {
16141617
kFingerprint = 8;
16151618
kFingerVein = 9;
16161619
kFace = 10;
1620+
kAliroCredentialIssuerKey = 11;
1621+
kAliroEvictableEndpointKey = 12;
1622+
kAliroNonEvictableEndpointKey = 13;
16171623
}
16181624

16191625
enum LockOperationTypeEnum : enum8 {
@@ -1651,6 +1657,7 @@ cluster DoorLock = 257 {
16511657
kRemote = 7;
16521658
kRFID = 8;
16531659
kBiometric = 9;
1660+
kAliro = 10;
16541661
}
16551662

16561663
enum UserStatusEnum : enum8 {
@@ -1811,6 +1818,8 @@ cluster DoorLock = 257 {
18111818
kYearDayAccessSchedules = 0x400;
18121819
kHolidaySchedules = 0x800;
18131820
kUnbolt = 0x1000;
1821+
kAliroProvisioning = 0x2000;
1822+
kAliroBLEUWB = 0x4000;
18141823
}
18151824

18161825
struct CredentialStruct {
@@ -1891,6 +1900,15 @@ cluster DoorLock = 257 {
18911900
attribute access(write: administer) optional boolean sendPINOverTheAir = 50;
18921901
attribute access(write: administer) optional boolean requirePINforRemoteOperation = 51;
18931902
attribute access(write: administer) optional int16u expiringUserTimeout = 53;
1903+
readonly attribute access(read: administer) optional nullable octet_string<65> aliroReaderVerificationKey = 128;
1904+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroReaderGroupIdentifier = 129;
1905+
readonly attribute access(read: administer) optional octet_string<16> aliroReaderGroupSubIdentifier = 130;
1906+
readonly attribute access(read: administer) optional octet_string aliroExpeditedTransactionSupportedProtocolVersions[] = 131;
1907+
readonly attribute access(read: administer) optional nullable octet_string<16> aliroGroupResolvingKey = 132;
1908+
readonly attribute access(read: administer) optional octet_string aliroSupportedBLEUWBProtocolVersions[] = 133;
1909+
readonly attribute access(read: administer) optional int8u aliroBLEAdvertisingVersion = 134;
1910+
readonly attribute optional int16u numberOfAliroCredentialIssuerKeysSupported = 135;
1911+
readonly attribute optional int16u numberOfAliroEndpointKeysSupported = 136;
18941912
readonly attribute command_id generatedCommandList[] = 65528;
18951913
readonly attribute command_id acceptedCommandList[] = 65529;
18961914
readonly attribute event_id eventList[] = 65530;
@@ -2056,6 +2074,13 @@ cluster DoorLock = 257 {
20562074
optional octet_string PINCode = 0;
20572075
}
20582076

2077+
request struct SetAliroReaderConfigRequest {
2078+
octet_string<32> signingKey = 0;
2079+
octet_string<65> verificationKey = 1;
2080+
octet_string<16> groupIdentifier = 2;
2081+
optional octet_string<16> groupResolvingKey = 3;
2082+
}
2083+
20592084
/** This command causes the lock device to lock the door. */
20602085
timed command LockDoor(LockDoorRequest): DefaultSuccess = 0;
20612086
/** This command causes the lock device to unlock the door. */
@@ -2094,6 +2119,10 @@ cluster DoorLock = 257 {
20942119
timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38;
20952120
/** This command causes the lock device to unlock the door without pulling the latch. */
20962121
timed command UnboltDoor(UnboltDoorRequest): DefaultSuccess = 39;
2122+
/** This command communicates an Aliro Reader configuration to the lock. */
2123+
timed command access(invoke: administer) SetAliroReaderConfig(SetAliroReaderConfigRequest): DefaultSuccess = 40;
2124+
/** This command clears an existing Aliro Reader configuration for the lock. */
2125+
timed command access(invoke: administer) ClearAliroReaderConfig(): DefaultSuccess = 41;
20972126
}
20982127

20992128
endpoint 0 {

0 commit comments

Comments
 (0)