Trident IoT Z-Wave SDK
 
Loading...
Searching...
No Matches
CC_UserCredential.h
Go to the documentation of this file.
1
13#ifndef _COMMANDCLASSUSERCREDENTIAL_H_
14#define _COMMANDCLASSUSERCREDENTIAL_H_
15
16/****************************************************************************/
17/* INCLUDE FILES */
18/****************************************************************************/
19
20#include <stdbool.h>
21#include "CC_Common.h"
22#include "ZW_classcmd.h"
24
32/****************************************************************************/
33/* EXPORTED TYPES and DEFINITIONS */
34/****************************************************************************/
35
36#define U3C_CREDENTIAL_TYPE_PIN_CODE_MIN_LENGTH_REQUIREMENT 4
37#define U3C_CREDENTIAL_TYPE_PIN_CODE_MAX_LENGTH_REQUIREMENT 10
38#define ASCII_AC_MAX 0x7F //< Maximum Admin PIN code character (highest ASCII code)
39#define AC_MIN_LENGTH 4 //< Minimum Admin PIN code length
40#define AC_MAX_LENGTH 10 //< Maximum Admin PIN code length
41#define U3C_BUFFER_SIZE_USER_NAME CC_USER_CREDENTIAL_MAX_LENGTH_USER_NAME
42
44#define DEFAULT_NAME_MAX_SIZE (sizeof("User-65535") - 1) * 2
45
46// Number of bytes of a credential set frame if credential length and credential data fields are empty.
47#define CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_LENGTH (offsetof(ZW_CREDENTIAL_SET_1BYTE_FRAME, credentialLength))
48// Number of bytes of a credential set frame if credential data field is empty.
49#define CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_DATA (offsetof(ZW_CREDENTIAL_SET_1BYTE_FRAME, credentialData1))
50
58
74
76 CREDENTIAL_REP_TYPE_ADDED = CREDENTIAL_REPORT_ADDED,
77 CREDENTIAL_REP_TYPE_MODIFIED = CREDENTIAL_REPORT_MODIFIED,
78 CREDENTIAL_REP_TYPE_DELETED = CREDENTIAL_REPORT_DELETED,
79 CREDENTIAL_REP_TYPE_UNCHANGED = CREDENTIAL_REPORT_UNCHANGED,
80 CREDENTIAL_REP_TYPE_RESPONSE_TO_GET = CREDENTIAL_REPORT_RESPONSE_TO_GET,
81 CREDENTIAL_REP_TYPE_ADD_AGAINST_OCCUPIED = CREDENTIAL_REPORT_ADD_AGAINST_OCCUPIED,
82 CREDENTIAL_REP_TYPE_MODIF_AGAINST_EMPTY = CREDENTIAL_REPORT_MODIFY_AGAINST_EMPTY,
83 CREDENTIAL_REP_TYPE_DUPLICATE = CREDENTIAL_REPORT_DUPLICATE,
84 CREDENTIAL_REP_TYPE_MANUFACTURER_SECURITY_RULES = CREDENTIAL_REPORT_MANUFACTURER_SECURITY_RULES,
85 CREDENTIAL_REP_TYPE_WRONG_UUID = CREDENTIAL_REPORT_WRONG_USER_UNIQUE_IDENTIFIER,
86 CREDENTIAL_REP_TYPE_DUPLICATE_ADMIN_PIN_CODE = CREDENTIAL_REPORT_DUPLICATE_ADMIN_PIN_CODE
88
90 CL_STATUS_STARTED = CREDENTIAL_LEARN_REPORT_STARTED,
91 CL_STATUS_SUCCESS = CREDENTIAL_LEARN_REPORT_SUCCESS,
92 CL_STATUS_ALREADY_IN_PROGRESS = CREDENTIAL_LEARN_REPORT_ALREADY_IN_PROGRESS,
93 CL_STATUS_ENDED_NOT_DUE_TO_TIMEOUT = CREDENTIAL_LEARN_REPORT_ENDED_NOT_DUE_TO_TIMEOUT,
94 CL_STATUS_TIMEOUT = CREDENTIAL_LEARN_REPORT_TIMEOUT,
95 CL_STATUS_STEP_RETRY = CREDENTIAL_LEARN_REPORT_CREDENTIAL_LEARN_STEP_RETRY,
96 CL_STATUS_INVALID_ADD_OPERATION_TYPE = CREDENTIAL_LEARN_REPORT_INVALID_CREDENTIAL_LEARN_ADD_OPERATION_TYPE,
97 CL_STATUS_INVALID_MODIFY_OPERATION_TYPE = CREDENTIAL_LEARN_REPORT_INVALID_CREDENTIAL_LEARN_MODIFY_OPERATION_TYPE
99
100typedef enum {
101 U3C_UCAR_STATUS_SUCCESS = USER_CREDENTIAL_ASSOCIATION_REPORT_SUCCESS,
102 U3C_UCAR_STATUS_CREDENTIAL_TYPE_INVALID = USER_CREDENTIAL_ASSOCIATION_REPORT_CREDENTIAL_TYPE_INVALID,
103 U3C_UCAR_STATUS_SOURCE_CREDENTIAL_SLOT_INVALID = USER_CREDENTIAL_ASSOCIATION_REPORT_SOURCE_CREDENTIAL_SLOT_INVALID,
104 U3C_UCAR_STATUS_SOURCE_CREDENTIAL_SLOT_EMPTY = USER_CREDENTIAL_ASSOCIATION_REPORT_SOURCE_CREDENTIAL_SLOT_EMPTY,
105 U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_INVALID = USER_CREDENTIAL_ASSOCIATION_REPORT_DESTINATION_USER_UNIQUE_IDENTIFIER_INVALID,
106 U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_NONEXISTENT = USER_CREDENTIAL_ASSOCIATION_REPORT_DESTINATION_USER_UNIQUE_IDENTIFIER_NONEXISTENT,
107 U3C_UCAR_STATUS_DESTINATION_CREDENTIAL_SLOT_INVALID = USER_CREDENTIAL_ASSOCIATION_REPORT_DESTINATION_CREDENTIAL_SLOT_INVALID,
108 U3C_UCAR_STATUS_DESTINATION_CREDENTIAL_SLOT_OCCUPIED = USER_CREDENTIAL_ASSOCIATION_REPORT_DESTINATION_CREDENTIAL_SLOT_OCCUPIED
110
112 USER_REP_TYPE_ADDED = USER_REPORT_ADDED,
113 USER_REP_TYPE_MODIFIED = USER_REPORT_MODIFIED,
114 USER_REP_TYPE_DELETED = USER_REPORT_DELETED,
115 USER_REP_TYPE_UNCHANGED = USER_REPORT_UNCHANGED,
116 USER_REP_TYPE_RESPONSE_TO_GET = USER_REPORT_RESPONSE_TO_GET,
117 USER_REP_TYPE_ADD_AGAINST_OCCUPIED = USER_REPORT_ADD_AGAINST_OCCUPIED,
118 USER_REP_TYPE_MODIF_AGAINST_EMPTY = USER_REPORT_MODIFY_AGAINST_EMPTY,
119 USER_REP_TYPE_Z_EXP_MIN_INVALID = USER_REPORT_ZERO_EXPIRING_MINUTES_INVALID
121
132
138
144
169
181
190
195
201
207
213
219
227
234
250
251/****************************************************************************/
252/* API FUNCTIONS */
253/****************************************************************************/
254
261 const u3c_credential_t * const credential
262 );
263
279 u3c_admin_code_metadata_t * const code
280 );
281
290 uint8_t * pName,
291 u3c_user_t * pUser
292 );
293
299#endif /* _COMMANDCLASSUSERCREDENTIAL_H_ */
bool CC_UserCredential_manufacturer_validate_admin_pin_code(u3c_admin_code_metadata_t *const code)
Validates the following conditions and requirements: CC:0083.01.1A.11.011 - Code follows all manufact...
_u3c_credential_report_type_t_
Definition CC_UserCredential.h:75
enum u3c_modifier_type_ u3c_modifier_type
enum u3c_event_ u3c_event_type
_u3c_admin_code_operation_result_
This operation result can optionally be injected into an Admin Code Report to pass information back t...
Definition CC_UserCredential.h:154
u3c_user_report_type_t_
Definition CC_UserCredential.h:111
struct u3c_admin_code_metadata_t_ u3c_admin_code_metadata_t
enum u3c_user_name_encoding_ u3c_user_name_encoding
u3c_user_type_
Definition CC_UserCredential.h:122
u3c_modifier_type_
Definition CC_UserCredential.h:51
struct u3c_user_t_ u3c_user_t
struct u3c_event_data_validate_t_ u3c_event_data_validate_t
Payload for CC_USER_CREDENTIAL_EVENT_VALIDATE, received from the application.
u3c_credential_learn_status_t_
Definition CC_UserCredential.h:89
u3c_user_credential_association_report_status_t
Definition CC_UserCredential.h:100
enum u3c_credential_learn_status_t_ u3c_credential_learn_status_t
enum u3c_credential_type_ u3c_credential_type
enum _u3c_credential_report_type_t_ u3c_credential_report_type_t
struct u3c_credential_t_ u3c_credential_t
struct u3c_event_data_learn_read_done_t_ u3c_event_data_learn_read_done_t
Payload for CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE, passed to the application.
#define U3C_CREDENTIAL_TYPE_PIN_CODE_MAX_LENGTH_REQUIREMENT
Definition CC_UserCredential.h:37
enum _u3c_admin_code_operation_result_ u3c_admin_code_operation_result
This operation result can optionally be injected into an Admin Code Report to pass information back t...
u3c_operation_type_t
Definition CC_UserCredential.h:196
enum u3c_user_report_type_t_ u3c_user_report_type_t
u3c_credential_rule_
Definition CC_UserCredential.h:133
enum u3c_credential_rule_ u3c_credential_rule
bool CC_UserCredential_manufacturer_validate_credential(const u3c_credential_t *const credential)
struct u3c_credential_identifier_t_ u3c_credential_identifier_t
void CC_UserCredential_set_default_name(uint8_t *pName, u3c_user_t *pUser)
struct u3c_event_data_learn_start_t_ u3c_event_data_learn_start_t
Credential Learn information passed to application layer.
u3c_event_
Definition CC_UserCredential.h:235
enum u3c_user_type_ u3c_user_type
struct u3c_credential_metadata_t_ u3c_credential_metadata_t
u3c_credential_type_
Definition CC_UserCredential.h:59
u3c_user_name_encoding_
Definition CC_UserCredential.h:139
@ CREDENTIAL_REP_TYPE_WRONG_UUID
Definition CC_UserCredential.h:85
@ CREDENTIAL_REP_TYPE_MODIFIED
Definition CC_UserCredential.h:77
@ CREDENTIAL_REP_TYPE_DUPLICATE_ADMIN_PIN_CODE
Definition CC_UserCredential.h:86
@ CREDENTIAL_REP_TYPE_UNCHANGED
Definition CC_UserCredential.h:79
@ CREDENTIAL_REP_TYPE_DUPLICATE
Definition CC_UserCredential.h:83
@ CREDENTIAL_REP_TYPE_MANUFACTURER_SECURITY_RULES
Definition CC_UserCredential.h:84
@ CREDENTIAL_REP_TYPE_MODIF_AGAINST_EMPTY
Definition CC_UserCredential.h:82
@ CREDENTIAL_REP_TYPE_RESPONSE_TO_GET
Definition CC_UserCredential.h:80
@ CREDENTIAL_REP_TYPE_ADD_AGAINST_OCCUPIED
Definition CC_UserCredential.h:81
@ CREDENTIAL_REP_TYPE_ADDED
Definition CC_UserCredential.h:76
@ CREDENTIAL_REP_TYPE_DELETED
Definition CC_UserCredential.h:78
@ ADMIN_CODE_OPERATION_RESULT_FAIL_DUPLICATE_CRED
Admin Code was not modified (Set) due to duplicate existing PIN code credential.
Definition CC_UserCredential.h:158
@ ADMIN_CODE_OPERATION_RESULT_ERROR_AC_NOT_SUPPORTED
Failed due to Admin Code not being supported (Get/Set).
Definition CC_UserCredential.h:160
@ ADMIN_CODE_OPERATION_RESULT_INTERNAL_INVALID_LENGTH
Internal validation result; Code has an invalid length.
Definition CC_UserCredential.h:166
@ ADMIN_CODE_OPERATION_RESULT_FAIL_MANUF_RULE
Admin Code was not modified (Set) due to a manufacturer security rule.
Definition CC_UserCredential.h:159
@ ADMIN_CODE_OPERATION_RESULT_ERROR_ACD_NOT_SUPPORTED
Failed due to Admin Code Deactivation not being supported (Set).
Definition CC_UserCredential.h:161
@ ADMIN_CODE_OPERATION_RESULT_INTERNAL_INVALID_CHAR
Internal validation result; Code has one or more invalid characters.
Definition CC_UserCredential.h:167
@ ADMIN_CODE_OPERATION_RESULT_INTERNAL_NONE
Internal validation result; No error.
Definition CC_UserCredential.h:165
@ ADMIN_CODE_OPERATION_RESULT_MODIFIED
Admin Code was modified (Set, External).
Definition CC_UserCredential.h:155
@ ADMIN_CODE_OPERATION_RESULT_UNMODIFIED
Admin code was not modified as current code was identical.
Definition CC_UserCredential.h:156
@ ADMIN_CODE_OPERATION_RESULT_ERROR_NODE
Failed due to unspecified node error.
Definition CC_UserCredential.h:162
@ ADMIN_CODE_OPERATION_RESULT_INTERNAL_DUPLICATE_AC
Internal validation result; Code is the same as the current admin code.
Definition CC_UserCredential.h:164
@ ADMIN_CODE_OPERATION_RESULT_GET_RESP
Default response, or response to successful Get.
Definition CC_UserCredential.h:157
@ USER_REP_TYPE_ADDED
Definition CC_UserCredential.h:112
@ USER_REP_TYPE_DELETED
Definition CC_UserCredential.h:114
@ USER_REP_TYPE_Z_EXP_MIN_INVALID
Definition CC_UserCredential.h:119
@ USER_REP_TYPE_MODIFIED
Definition CC_UserCredential.h:113
@ USER_REP_TYPE_ADD_AGAINST_OCCUPIED
Definition CC_UserCredential.h:117
@ USER_REP_TYPE_MODIF_AGAINST_EMPTY
Definition CC_UserCredential.h:118
@ USER_REP_TYPE_UNCHANGED
Definition CC_UserCredential.h:115
@ USER_REP_TYPE_RESPONSE_TO_GET
Definition CC_UserCredential.h:116
@ USER_TYPE_DISPOSABLE
Definition CC_UserCredential.h:127
@ USER_TYPE_END
Definition CC_UserCredential.h:130
@ USER_TYPE_REMOTE_ONLY
Definition CC_UserCredential.h:129
@ USER_TYPE_DURESS
Definition CC_UserCredential.h:126
@ USER_TYPE_GENERAL
Definition CC_UserCredential.h:123
@ USER_TYPE_EXPIRING
Definition CC_UserCredential.h:128
@ USER_TYPE_NON_ACCESS
Definition CC_UserCredential.h:125
@ USER_TYPE_PROGRAMMING
Definition CC_UserCredential.h:124
@ MODIFIER_TYPE_DNE
Definition CC_UserCredential.h:52
@ MODIFIER_TYPE_MOBILE_APP_OR_OTHER_IOT_TECHNOLOGY
Definition CC_UserCredential.h:56
@ MODIFIER_TYPE_UNKNOWN
Definition CC_UserCredential.h:53
@ MODIFIER_TYPE_LOCALLY
Definition CC_UserCredential.h:55
@ MODIFIER_TYPE_Z_WAVE
Definition CC_UserCredential.h:54
@ CL_STATUS_STARTED
Definition CC_UserCredential.h:90
@ CL_STATUS_SUCCESS
Definition CC_UserCredential.h:91
@ CL_STATUS_INVALID_MODIFY_OPERATION_TYPE
Definition CC_UserCredential.h:97
@ CL_STATUS_STEP_RETRY
Definition CC_UserCredential.h:95
@ CL_STATUS_INVALID_ADD_OPERATION_TYPE
Definition CC_UserCredential.h:96
@ CL_STATUS_TIMEOUT
Definition CC_UserCredential.h:94
@ CL_STATUS_ENDED_NOT_DUE_TO_TIMEOUT
Definition CC_UserCredential.h:93
@ CL_STATUS_ALREADY_IN_PROGRESS
Definition CC_UserCredential.h:92
@ U3C_UCAR_STATUS_SUCCESS
Definition CC_UserCredential.h:101
@ U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_INVALID
Definition CC_UserCredential.h:105
@ U3C_UCAR_STATUS_SOURCE_CREDENTIAL_SLOT_INVALID
Definition CC_UserCredential.h:103
@ U3C_UCAR_STATUS_CREDENTIAL_TYPE_INVALID
Definition CC_UserCredential.h:102
@ U3C_UCAR_STATUS_DESTINATION_CREDENTIAL_SLOT_INVALID
Definition CC_UserCredential.h:107
@ U3C_UCAR_STATUS_SOURCE_CREDENTIAL_SLOT_EMPTY
Definition CC_UserCredential.h:104
@ U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_NONEXISTENT
Definition CC_UserCredential.h:106
@ U3C_UCAR_STATUS_DESTINATION_CREDENTIAL_SLOT_OCCUPIED
Definition CC_UserCredential.h:108
@ U3C_OPERATION_TYPE_MODIFY
Definition CC_UserCredential.h:198
@ U3C_OPERATION_TYPE_ADD
Definition CC_UserCredential.h:197
@ U3C_OPERATION_TYPE_DELETE
Definition CC_UserCredential.h:199
@ CREDENTIAL_RULE_SINGLE
Definition CC_UserCredential.h:134
@ CREDENTIAL_RULE_TRIPLE
Definition CC_UserCredential.h:136
@ CREDENTIAL_RULE_DUAL
Definition CC_UserCredential.h:135
@ CC_USER_CREDENTIAL_EVENT_LEARN_SUCCESS
Credential has been accepted into the database.
Definition CC_UserCredential.h:243
@ CC_USER_CREDENTIAL_EVENT_LEARN_CANCEL_LOCAL
Application cancelled Credential Learn process.
Definition CC_UserCredential.h:248
@ CC_USER_CREDENTIAL_EVENT_LEARN_FAILED
Definition CC_UserCredential.h:244
@ CC_USER_CREDENTIAL_EVENT_LEARN_START_REQUEST
Application is requesting to start Credential Learn.
Definition CC_UserCredential.h:239
@ CC_USER_CREDENTIAL_EVENT_LEARN_TIMEOUT
Credential Learn step timed out.
Definition CC_UserCredential.h:246
@ CC_USER_CREDENTIAL_EVENT_LEARN_STEP_RETRY
Local Credential read failed, trying to read again.
Definition CC_UserCredential.h:245
@ CC_USER_CREDENTIAL_EVENT_LEARN_CANCEL_REMOTE
Remote node cancelled Credential Learn process.
Definition CC_UserCredential.h:247
@ CC_USER_CREDENTIAL_EVENT_LEARN_STEP_START
Application progressed to new Credential Learn step.
Definition CC_UserCredential.h:241
@ CC_USER_CREDENTIAL_EVENT_VALIDATE_VALID
Credential found and User has sufficient rights.
Definition CC_UserCredential.h:237
@ CC_USER_CREDENTIAL_EVENT_VALIDATE_INVALID
Credential not found or User has insufficient rights.
Definition CC_UserCredential.h:238
@ CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE
Credential data is ready to be entered into the database.
Definition CC_UserCredential.h:242
@ CC_USER_CREDENTIAL_EVENT_VALIDATE
Application is requesting a Credential to be validated.
Definition CC_UserCredential.h:236
@ CC_USER_CREDENTIAL_EVENT_LEARN_START
Credential Learn process started.
Definition CC_UserCredential.h:240
@ CREDENTIAL_TYPE_HAND_BIOMETRIC
Definition CC_UserCredential.h:70
@ CREDENTIAL_TYPE_UNSPECIFIED_BIOMETRIC
Definition CC_UserCredential.h:71
@ CREDENTIAL_TYPE_FACE_BIOMETRIC
Definition CC_UserCredential.h:68
@ CREDENTIAL_TYPE_BLE
Definition CC_UserCredential.h:64
@ CREDENTIAL_TYPE_RFID_CODE
Definition CC_UserCredential.h:63
@ CREDENTIAL_TYPE_UWB
Definition CC_UserCredential.h:66
@ CREDENTIAL_TYPE_EYE_BIOMETRIC
Definition CC_UserCredential.h:67
@ CREDENTIAL_TYPE_NONE
Definition CC_UserCredential.h:60
@ CREDENTIAL_TYPE_FINGER_BIOMETRIC
Definition CC_UserCredential.h:69
@ CREDENTIAL_TYPE_NFC
Definition CC_UserCredential.h:65
@ CREDENTIAL_TYPE_PASSWORD
Definition CC_UserCredential.h:62
@ CREDENTIAL_TYPE_NUMBER_OF_TYPES
Definition CC_UserCredential.h:72
@ CREDENTIAL_TYPE_PIN_CODE
Definition CC_UserCredential.h:61
@ USER_NAME_ENCODING_UNICODE_UTF_16
Definition CC_UserCredential.h:142
@ USER_NAME_ENCODING_STANDARD_ASCII
Definition CC_UserCredential.h:140
@ USER_NAME_ENCODING_STANDARD_AND_OEM_EXTENDED_ASCII
Definition CC_UserCredential.h:141
Definition CC_UserCredential.h:228
uint8_t code_length
Definition CC_UserCredential.h:230
u3c_admin_code_operation_result result
Definition CC_UserCredential.h:229
uint8_t code_data[U3C_CREDENTIAL_TYPE_PIN_CODE_MAX_LENGTH_REQUIREMENT]
Definition CC_UserCredential.h:232
Definition CC_UserCredential.h:202
uint16_t slot
Definition CC_UserCredential.h:205
u3c_credential_type type
Definition CC_UserCredential.h:204
uint16_t uuid
Definition CC_UserCredential.h:203
Definition CC_UserCredential.h:182
uint16_t uuid
Definition CC_UserCredential.h:183
u3c_modifier_type modifier_type
Definition CC_UserCredential.h:187
uint16_t slot
Definition CC_UserCredential.h:184
uint16_t modifier_node_id
Definition CC_UserCredential.h:185
uint8_t length
Definition CC_UserCredential.h:186
u3c_credential_type type
Definition CC_UserCredential.h:188
Definition CC_UserCredential.h:191
u3c_credential_metadata_t metadata
Definition CC_UserCredential.h:192
uint8_t * data
Definition CC_UserCredential.h:193
Payload for CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE, passed to the application.
Definition CC_UserCredential.h:215
uint8_t * data
Definition CC_UserCredential.h:216
uint8_t data_length
Definition CC_UserCredential.h:217
Credential Learn information passed to application layer.
Definition CC_UserCredential.h:221
u3c_operation_type_t operation_type
Definition CC_UserCredential.h:223
uint16_t source_id
Definition CC_UserCredential.h:224
uint8_t timeout_seconds
Definition CC_UserCredential.h:225
u3c_credential_identifier_t target
Definition CC_UserCredential.h:222
Payload for CC_USER_CREDENTIAL_EVENT_VALIDATE, received from the application.
Definition CC_UserCredential.h:209
bool is_unlocked
Definition CC_UserCredential.h:211
u3c_credential_t * credential
Definition CC_UserCredential.h:210
Definition CC_UserCredential.h:170
u3c_user_type type
Definition CC_UserCredential.h:175
u3c_user_name_encoding name_encoding
Definition CC_UserCredential.h:178
uint16_t modifier_node_id
Definition CC_UserCredential.h:172
uint16_t unique_identifier
Definition CC_UserCredential.h:171
u3c_credential_rule credential_rule
Definition CC_UserCredential.h:177
u3c_modifier_type modifier_type
Definition CC_UserCredential.h:176
uint16_t expiring_timeout_minutes
Definition CC_UserCredential.h:173
bool active
Definition CC_UserCredential.h:179
uint8_t name_length
Definition CC_UserCredential.h:174