1/*
2 * Copyright (C) 2022-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef COMMON_DEFINES_H
17#define COMMON_DEFINES_H
18
19#include <stdint.h>
20
21#include "adaptor_log.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27enum InnerKitResultCode {
28    INNER_RESULT_SUCCESS = 0,
29    INNER_RESULT_FAIL = 1,
30    INNER_RESULT_GENERAL_ERROR = 2,
31    INNER_RESULT_CANCELED = 3,
32    INNER_RESULT_TIMEOUT = 4,
33    INNER_RESULT_TYPE_NOT_SUPPORT = 5,
34    INNER_RESULT_TRUST_LEVEL_NOT_SUPPORT = 6,
35    INNER_RESULT_BUSY = 7,
36    INNER_RESULT_INVALID_PARAMETERS = 8,
37    INNER_RESULT_LOCKED = 9,
38    INNER_RESULT_NOT_ENROLLED = 10,
39    INNER_RESULT_HARDWARE_NOT_SUPPORTED = 11,
40    INNER_RESULT_PIN_EXPIRED = 13,
41    INNER_RESULT_SYSTEM_ERROR_CODE_BEGIN = 1000, // error code for system
42    INNER_RESULT_IPC_ERROR = 1001,
43    INNER_RESULT_INVALID_CONTEXT_ID = 1002,
44    INNER_RESULT_READ_PARCEL_ERROR = 1003,
45    INNER_RESULT_WRITE_PARCEL_ERROR = 1004,
46    INNER_RESULT_CHECK_PERMISSION_FAILED = 1005,
47    INNER_RESULT_INVALID_HDI_INTERFACE = 1006,
48    INNER_RESULT_VENDOR_ERROR_CODE_BEGIN = 10000, // error code for vendor
49};
50
51typedef enum ResultCode {
52    RESULT_SUCCESS = INNER_RESULT_SUCCESS,
53    RESULT_GENERAL_ERROR = INNER_RESULT_GENERAL_ERROR,
54    RESULT_BAD_PARAM = INNER_RESULT_INVALID_PARAMETERS,
55    RESULT_NOT_ENROLLED = INNER_RESULT_NOT_ENROLLED,
56    RESULT_TYPE_NOT_SUPPORT = INNER_RESULT_TYPE_NOT_SUPPORT,
57    RESULT_TRUST_LEVEL_NOT_SUPPORT = INNER_RESULT_TRUST_LEVEL_NOT_SUPPORT,
58    RESULT_TIMEOUT = INNER_RESULT_TIMEOUT,
59    RESULT_PIN_EXPIRED = INNER_RESULT_PIN_EXPIRED,
60    RESULT_BAD_COPY = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x3,
61    RESULT_NO_MEMORY = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x4,
62    RESULT_NEED_INIT = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x5,
63    RESULT_NOT_FOUND = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x6,
64    RESULT_REACH_LIMIT = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x7,
65    RESULT_DUPLICATE_CHECK_FAILED = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x8,
66    RESULT_BAD_READ = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x9,
67    RESULT_BAD_WRITE = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0xA,
68    RESULT_BAD_DEL = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0xB,
69    RESULT_UNKNOWN = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0xC,
70    RESULT_BAD_MATCH = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0xD,
71    RESULT_BAD_SIGN = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0xE,
72    RESULT_BUSY = INNER_RESULT_BUSY,
73    RESULT_TOKEN_TIMEOUT = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x10,
74    RESULT_VERIFY_TOKEN_FAIL = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x11,
75    RESULT_EXCEED_LIMIT = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x12,
76
77    RESULT_AUTH_NOT_COMPELETED = INNER_RESULT_VENDOR_ERROR_CODE_BEGIN + 0x10001,
78} ResultCode;
79
80typedef enum AuthType {
81    DEFAULT_AUTH_TYPE = 0, // default type used to cache pin
82    PIN_AUTH = 1,
83    FACE_AUTH = 2,
84    FINGER_AUTH = 4,
85    RECOVERY_KEY = 8,
86} AuthType;
87
88typedef enum ScheduleMode {
89    SCHEDULE_MODE_ENROLL = 0,
90    SCHEDULE_MODE_AUTH = 1,
91    SCHEDULE_MODE_IDENTIFY = 2,
92    SCHEDULE_MODE_REUSE_UNLOCK_AUTH_RESULT = 3,
93} ScheduleMode;
94
95typedef enum AuthSubType {
96    DEFAULT_TYPE = 0,
97} AuthSubType;
98
99typedef enum UserType {
100    MAIN_USER = 0,
101    SUB_USER = 1,
102    PRIVATE_USER = 2,
103} UserType;
104
105typedef enum AuthPropertyMode {
106    PROPERTY_INIT_ALGORITHM = 1,
107    PROPERTY_MODE_DEL = 2,
108    PROPERTY_MODE_GET = 3,
109    PROPERTY_MODE_SET = 4,
110    PROPERTY_MODE_FREEZE = 5,
111    PROPERTY_MODE_UNFREEZE = 6,
112    PROPERTY_MODE_SET_CACHED_TEMPLATES = 7,
113} AuthPropertyMode;
114
115typedef enum Asl {
116    ASL0 = 0,
117    ASL1 = 1,
118    ASL2 = 2,
119    ASL3 = 3,
120    MAX_ASL = 4,
121} Asl;
122
123typedef enum Acl {
124    ACL0 = 0,
125    ACL1 = 1,
126    ACL2 = 2,
127    ACL3 = 3,
128} Acl;
129
130typedef enum Atl {
131    ATL0 = 0,
132    ATL1 = 10000,
133    ATL2 = 20000,
134    ATL3 = 30000,
135    ATL4 = 40000,
136} Atl;
137
138typedef enum TokenType {
139    TOKEN_TYPE_LOCAL_AUTH = 0,
140    TOKEN_TYPE_LOCAL_RESIGN = 1,
141    TOKEN_TYPE_COAUTH = 2,
142} TokenType;
143
144typedef enum AuthIntent {
145    DEFUALT = 0,
146    UNLOCK = 1,
147    SILENT_AUTH = 2,
148} AuthIntent;
149
150#define IF_TRUE_LOGE_AND_RETURN_VAL(cond, retVal) \
151    do { \
152        if (cond) { \
153            LOG_ERROR("(" #cond ") check fail, return"); \
154            return (retVal); \
155        } \
156    } while (0)
157
158#define IF_TRUE_LOGE_AND_RETURN(cond) \
159    do { \
160        if (cond) { \
161            LOG_ERROR("(" #cond ") check fail, return"); \
162            return; \
163        } \
164    } while (0)
165
166#define MAX_DUPLICATE_CHECK 100
167#define INVALID_SENSOR_HINT 0
168#define MAX_TEMPLATE_OF_SCHEDULE 10
169#define CHALLENGE_LEN 32
170#define MAX_CREDENTIAL_OUTPUT 10
171#define MAX_ENROLL_OUTPUT 5
172#define MAX_AUTH_TYPE_LEN 4
173#define UDID_LEN 64
174#define INVALID_USER_ID (-1)
175
176#ifdef __cplusplus
177}
178#endif
179
180#endif
181