• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 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 IPC_SDK_DEFINES_H
17 #define IPC_SDK_DEFINES_H
18 
19 #include <stdint.h>
20 #include "device_auth.h"
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 typedef struct {
26     char *appId;
27     uint8_t callbackType; // 1 DevAuthCallback, 2 groupListener, 3 credListener
28     union {
29         DeviceAuthCallback *deviceAuthCallback;
30         DataChangeListener *dataChangeListener;
31         CredChangeListener *credChangeListener;
32     } callback;
33 } DevAuthCallbackInfo;
34 
35 typedef void (*SaStatusChangeCallbackFunc)(void);
36 typedef struct {
37     SaStatusChangeCallbackFunc onReceivedSaAdd;
38     SaStatusChangeCallbackFunc onReceivedSaRemoved;
39 } SaStatusChangeCallback;
40 
41 #define IPC_CALL_BACK_STUB_AUTH_ID 0
42 #define IPC_CALL_BACK_STUB_BIND_ID 1
43 #define IPC_CALL_BACK_STUB_DIRECT_AUTH_ID 2
44 #define IPC_CALL_BACK_STUB_LIGHT_AUTH_ID 3
45 
46 #define DEVICE_AUTH_SA_LOAD_TIME (4 * 1000)
47 
48 #define IPC_CALL_CONTEXT_INIT 0x0
49 
50 #define DEVAUTH_CALLBACK 1
51 #define GROUP_CHANGE_LISTENER 2
52 #define CRED_CHANGE_LISTENER 3
53 
54 /* params type for ipc call */
55 #define PARAM_TYPE_APPID 1
56 #define PARAM_TYPE_DEV_AUTH_CB 2
57 #define PARAM_TYPE_LISTENER 3
58 #define PARAM_TYPE_REQID 4
59 #define PARAM_TYPE_CREATE_PARAMS 5
60 #define PARAM_TYPE_GROUPID 6
61 #define PARAM_TYPE_UDID 7
62 #define PARAM_TYPE_ADD_PARAMS 8
63 #define PARAM_TYPE_DEL_PARAMS 9
64 #define PARAM_TYPE_COMM_DATA 10
65 #define PARAM_TYPE_GROUP_TYPE 14
66 #define PARAM_TYPE_QUERY_PARAMS 18
67 #define PARAM_TYPE_REG_INFO 19
68 #define PARAM_TYPE_DATA_NUM 20
69 #define PARAM_TYPE_SESS_KEY 21
70 #define PARAM_TYPE_OPCODE 22
71 #define PARAM_TYPE_IPC_RESULT 23
72 #define PARAM_TYPE_IPC_RESULT_NUM 24
73 #define PARAM_TYPE_ERRCODE 25
74 #define PARAM_TYPE_ERR_INFO 26
75 #define PARAM_TYPE_REQ_INFO 27
76 #define PARAM_TYPE_GROUP_INFO 28
77 #define PARAM_TYPE_DEVICE_INFO 29
78 #define PARAM_TYPE_AUTH_PARAMS 30
79 #define PARAM_TYPE_CB_OBJECT 31
80 #define PARAM_TYPE_OS_ACCOUNT_ID 32
81 #define PARAM_TYPE_RETURN_DATA 33
82 #define PARAM_TYPE_REQ_JSON 34
83 #define PARAM_TYPE_PSEUDONYM_ID 35
84 #define PARAM_TYPE_INDEX_KEY 36
85 #define PARAM_TYPE_CRED_ID 37
86 #define PARAM_TYPE_CRED_INFO 38
87 #define PARAM_TYPE_CRED_INFO_LIST 39
88 #define PARAM_TYPE_REQUEST_PARAMS 40
89 #define PARAM_TYPE_CRED_VAL 41
90 #define PARAM_TYPE_SERVICE_ID 42
91 #define PARAM_TYPE_PK_WITH_SIG 43
92 #define PARAM_TYPE_SHARED_KEY_VAL 44
93 #define PARAM_TYPE_SHARED_KEY_LEN 45
94 #define PARAM_TYPE_RANDOM 46
95 #define PARAM_TYPE_RANDOM_VAL 47
96 #define PARAM_TYPE_RANDOM_LEN 48
97 
98 enum {
99     IPC_CALL_ID_REG_CB = 1,
100     IPC_CALL_ID_UNREG_CB,
101     IPC_CALL_ID_REG_LISTENER,
102     IPC_CALL_ID_UNREG_LISTENER,
103     IPC_CALL_ID_CREATE_GROUP,
104     IPC_CALL_ID_DEL_GROUP,
105     IPC_CALL_ID_ADD_GROUP_MEMBER,
106     IPC_CALL_ID_DEL_GROUP_MEMBER,
107     IPC_CALL_ID_GM_PROC_DATA,
108     IPC_CALL_ID_APPLY_REG_INFO,
109     IPC_CALL_ID_CHECK_ACCESS_TO_GROUP,
110     IPC_CALL_ID_GET_PK_INFO_LIST,
111     IPC_CALL_ID_GET_GROUP_INFO,
112     IPC_CALL_ID_SEARCH_GROUPS,
113     IPC_CALL_ID_GET_JOINED_GROUPS,
114     IPC_CALL_ID_GET_RELATED_GROUPS,
115     IPC_CALL_ID_GET_DEV_INFO_BY_ID,
116     IPC_CALL_ID_GET_TRUST_DEVICES,
117     IPC_CALL_ID_IS_DEV_IN_GROUP,
118     IPC_CALL_ID_DESTROY_INFO,
119     IPC_CALL_ID_GA_PROC_DATA,
120     IPC_CALL_ID_AUTH_DEVICE,
121     IPC_CALL_ID_ADD_MULTI_GROUP_MEMBERS,
122     IPC_CALL_ID_DEL_MULTI_GROUP_MEMBERS,
123     IPC_CALL_GM_CANCEL_REQUEST,
124     IPC_CALL_GA_CANCEL_REQUEST,
125     IPC_CALL_ID_GET_REAL_INFO,
126     IPC_CALL_ID_GET_PSEUDONYM_ID,
127     IPC_CALL_ID_PROCESS_CREDENTIAL,
128     IPC_CALL_ID_DA_PROC_DATA,
129     IPC_CALL_ID_DA_AUTH_DEVICE,
130     IPC_CALL_ID_DA_CANCEL_REQUEST,
131     IPC_CALL_ID_CM_ADD_CREDENTIAL,
132     IPC_CALL_ID_CM_AGREE_CREDENTIAL,
133     IPC_CALL_ID_CM_DEL_CRED_BY_PARAMS,
134     IPC_CALL_ID_CM_BATCH_UPDATE_CREDENTIALS,
135     IPC_CALL_ID_CM_REG_LISTENER,
136     IPC_CALL_ID_CM_UNREG_LISTENER,
137     IPC_CALL_ID_CM_EXPORT_CREDENTIAL,
138     IPC_CALL_ID_CM_QUERY_CREDENTIAL_BY_PARAMS,
139     IPC_CALL_ID_CM_QUERY_CREDENTIAL_BY_CRED_ID,
140     IPC_CALL_ID_CM_DEL_CREDENTIAL,
141     IPC_CALL_ID_CM_UPDATE_CRED_INFO,
142     IPC_CALL_ID_CA_AUTH_CREDENTIAL,
143     IPC_CALL_ID_CA_PROCESS_CRED_DATA,
144     IPC_CALL_ID_AV_GET_CLIENT_SHARED_KEY,
145     IPC_CALL_ID_AV_GET_SERVER_SHARED_KEY,
146     IPC_CALL_ID_LA_START_LIGHT_ACCOUNT_AUTH,
147     IPC_CALL_ID_LA_PROCESS_LIGHT_ACCOUNT_AUTH,
148 };
149 
150 #define RETURN_INT_IF_CHECK_IPC_PARAMS_FAILED(cond) do { \
151     if ((cond)) { \
152         LOGE("Invalid params"); \
153         return HC_ERR_INVALID_PARAMS; \
154     } \
155 } while (0)
156 
157 #define RETURN_VOID_IF_CHECK_IPC_PARAMS_FAILED(cond) do { \
158     if ((cond)) { \
159         LOGE("Invalid params"); \
160         return; \
161     } \
162 } while (0)
163 
164 #define RETURN_BOOL_IF_CHECK_IPC_PARAMS_FAILED(cond) do { \
165     if ((cond)) { \
166         LOGE("Invalid params"); \
167         return false; \
168     } \
169 } while (0)
170 
171 #define RETURN_INT_IF_CREATE_IPC_CTX_FAILED(callCtx) \
172 ret = CreateCallCtx(&(callCtx)); \
173 if (ret != HC_SUCCESS) { \
174     LOGE("CreateCallCtx failed, ret %" LOG_PUB "d", ret); \
175     return HC_ERR_IPC_INIT; \
176 }
177 
178 #define RETURN_VOID_IF_CREATE_IPC_CTX_FAILED(callCtx) \
179 ret = CreateCallCtx(&(callCtx)); \
180 if (ret != HC_SUCCESS) { \
181     LOGE("CreateCallCtx failed, ret %" LOG_PUB "d", ret); \
182     return; \
183 }
184 
185 #define RETURN_BOOL_IF_CREATE_IPC_CTX_FAILED(callCtx) \
186 ret = CreateCallCtx(&(callCtx)); \
187 if (ret != HC_SUCCESS) { \
188     LOGE("CreateCallCtx failed, ret %" LOG_PUB "d", ret); \
189     return false; \
190 }
191 
192 #define BREAK_IF_SET_IPC_PARAM_FAILED(callCtx, paramType, paramValue, valueSize) \
193 ret = SetCallRequestParamInfo((callCtx), (paramType), (const uint8_t *)(paramValue), (valueSize)); \
194 if (ret != HC_SUCCESS) { \
195     LOGE("set request param failed, ret %" LOG_PUB "d, param id %" LOG_PUB "d", ret, paramType); \
196     ret = HC_ERR_IPC_BUILD_PARAM; \
197     break; \
198 }
199 
200 #define BREAK_IF_DO_IPC_CALL_FAILED(callCtx, callFunc, isSync) \
201 ret = DoBinderCall((callCtx), (callFunc), (isSync)); \
202 if (ret != HC_SUCCESS) { \
203     LOGE("ipc call failed, ret: %" LOG_PUB "d", ret); \
204     break; \
205 }
206 
207 #define BREAK_IF_CHECK_IPC_RESULT_FAILED(cache, ret) \
208 (ret) = HC_ERR_IPC_UNKNOW_REPLY; \
209 inOutLen = sizeof(int32_t); \
210 GetIpcReplyByType((cache), REPLAY_CACHE_NUM((cache)), PARAM_TYPE_IPC_RESULT, (uint8_t *)&(ret), &inOutLen); \
211 if ((inOutLen != sizeof(int32_t)) || (ret) != HC_SUCCESS) { \
212     break; \
213 }
214 
215 #define BREAK_IF_GET_IPC_REPLY_STR_FAILED(cache, paramType, outVar) \
216 GetIpcReplyByType((cache), REPLAY_CACHE_NUM(cache), (paramType), (uint8_t *)&(outVar), NULL); \
217 if ((outVar) == NULL) { \
218     ret = HC_ERR_IPC_OUT_DATA; \
219     break; \
220 }
221 
222 #define GET_IPC_REPLY_INT(cache, paramType, outVar) \
223 inOutLen = sizeof(int32_t); \
224 GetIpcReplyByType((cache), REPLAY_CACHE_NUM(cache), (paramType), (uint8_t *)(outVar), &inOutLen) \
225 
226 #define BREAK_IF_GET_IPC_RESULT_NUM_FAILED(cache, paramType, ipcResultNum) \
227 inOutLen = sizeof(int32_t); \
228 int32_t resultNum = 0; \
229 GetIpcReplyByType((cache), REPLAY_CACHE_NUM(cache), (paramType), (uint8_t *)(&resultNum), &inOutLen); \
230 if ((resultNum < (ipcResultNum)) || (inOutLen != sizeof(int32_t))) { \
231     ret = HC_ERR_IPC_OUT_DATA_NUM; \
232     break; \
233 }
234 
235 #define DESTROY_IPC_CTX(callCtx) DestroyCallCtx(&(callCtx))
236 
237 #ifdef __cplusplus
238 }
239 #endif
240 #endif
241