117fd14ceSopenharmony_ci/* 217fd14ceSopenharmony_ci * Copyright (C) 2021-2023 Huawei Device Co., Ltd. 317fd14ceSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 417fd14ceSopenharmony_ci * you may not use this file except in compliance with the License. 517fd14ceSopenharmony_ci * You may obtain a copy of the License at 617fd14ceSopenharmony_ci * 717fd14ceSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 817fd14ceSopenharmony_ci * 917fd14ceSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1017fd14ceSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1117fd14ceSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1217fd14ceSopenharmony_ci * See the License for the specific language governing permissions and 1317fd14ceSopenharmony_ci * limitations under the License. 1417fd14ceSopenharmony_ci */ 1517fd14ceSopenharmony_ci 1617fd14ceSopenharmony_ci#include "ipc_service.h" 1717fd14ceSopenharmony_ci 1817fd14ceSopenharmony_ci#include "common_defs.h" 1917fd14ceSopenharmony_ci#include "device_auth_defines.h" 2017fd14ceSopenharmony_ci#include "device_auth.h" 2117fd14ceSopenharmony_ci#include "hc_condition.h" 2217fd14ceSopenharmony_ci#include "hc_log.h" 2317fd14ceSopenharmony_ci#include "hc_thread.h" 2417fd14ceSopenharmony_ci#include "ipc_adapt.h" 2517fd14ceSopenharmony_ci#include "ipc_sdk.h" 2617fd14ceSopenharmony_ci#include "securec.h" 2717fd14ceSopenharmony_ci 2817fd14ceSopenharmony_ci#ifdef __cplusplus 2917fd14ceSopenharmony_ciextern "C" { 3017fd14ceSopenharmony_ci#endif 3117fd14ceSopenharmony_ci 3217fd14ceSopenharmony_cistatic const int32_t IPC_RESULT_NUM_1 = 1; 3317fd14ceSopenharmony_cistatic const int32_t IPC_RESULT_NUM_2 = 2; 3417fd14ceSopenharmony_cistatic const char *SERVICE_APP_ID = "deviceauth_service"; 3517fd14ceSopenharmony_cistatic DeviceGroupManager g_devGroupMgrMethod = {NULL}; 3617fd14ceSopenharmony_cistatic GroupAuthManager g_groupAuthMgrMethod = {NULL}; 3717fd14ceSopenharmony_cistatic DeviceAuthCallback g_bindCbAdt = {NULL}; 3817fd14ceSopenharmony_cistatic DeviceAuthCallback g_authCbAdt = {NULL}; 3917fd14ceSopenharmony_cistatic DataChangeListener g_listenCbAdt = {NULL}; 4017fd14ceSopenharmony_ci 4117fd14ceSopenharmony_cistatic int32_t BindRequestIdWithAppId(const char *data) 4217fd14ceSopenharmony_ci{ 4317fd14ceSopenharmony_ci const char *appId = NULL; 4417fd14ceSopenharmony_ci int32_t ret; 4517fd14ceSopenharmony_ci int64_t requestId = -1; 4617fd14ceSopenharmony_ci CJson *dataJson = CreateJsonFromString(data); 4717fd14ceSopenharmony_ci if (dataJson == NULL) { 4817fd14ceSopenharmony_ci LOGE("failed to create json from string!"); 4917fd14ceSopenharmony_ci return HC_ERR_JSON_CREATE; 5017fd14ceSopenharmony_ci } 5117fd14ceSopenharmony_ci 5217fd14ceSopenharmony_ci appId = GetStringFromJson(dataJson, FIELD_APP_ID); 5317fd14ceSopenharmony_ci if (appId == NULL) { 5417fd14ceSopenharmony_ci LOGE("failed to get appId from json object!"); 5517fd14ceSopenharmony_ci FreeJson(dataJson); 5617fd14ceSopenharmony_ci return HC_ERROR; 5717fd14ceSopenharmony_ci } 5817fd14ceSopenharmony_ci (void)GetInt64FromJson(dataJson, FIELD_REQUEST_ID, &requestId); 5917fd14ceSopenharmony_ci ret = AddReqIdByAppId(appId, requestId); 6017fd14ceSopenharmony_ci FreeJson(dataJson); 6117fd14ceSopenharmony_ci return ret; 6217fd14ceSopenharmony_ci} 6317fd14ceSopenharmony_ci 6417fd14ceSopenharmony_cistatic int32_t IpcServiceGmRegCallback(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 6517fd14ceSopenharmony_ci{ 6617fd14ceSopenharmony_ci int32_t callRet; 6717fd14ceSopenharmony_ci int32_t ret; 6817fd14ceSopenharmony_ci const char *appId = NULL; 6917fd14ceSopenharmony_ci const DeviceAuthCallback *callback = NULL; 7017fd14ceSopenharmony_ci int32_t cbObjIdx = -1; 7117fd14ceSopenharmony_ci int32_t inOutLen; 7217fd14ceSopenharmony_ci 7317fd14ceSopenharmony_ci LOGI("starting ..."); 7417fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 7517fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 7617fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 7717fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 7817fd14ceSopenharmony_ci } 7917fd14ceSopenharmony_ci 8017fd14ceSopenharmony_ci inOutLen = sizeof(DeviceAuthCallback); 8117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_DEV_AUTH_CB, (uint8_t *)&callback, &inOutLen); 8217fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(DeviceAuthCallback))) { 8317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_DEV_AUTH_CB); 8417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 8517fd14ceSopenharmony_ci } 8617fd14ceSopenharmony_ci ret = AddIpcCallBackByAppId(appId, (const uint8_t *)callback, sizeof(DeviceAuthCallback), CB_TYPE_DEV_AUTH); 8717fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 8817fd14ceSopenharmony_ci LOGE("add ipc callback failed"); 8917fd14ceSopenharmony_ci return HC_ERROR; 9017fd14ceSopenharmony_ci } 9117fd14ceSopenharmony_ci 9217fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 9317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_CB_OBJECT, (uint8_t *)&cbObjIdx, &inOutLen); 9417fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 9517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_CB_OBJECT); 9617fd14ceSopenharmony_ci DelIpcCallBackByAppId(appId, CB_TYPE_DEV_AUTH); 9717fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 9817fd14ceSopenharmony_ci } 9917fd14ceSopenharmony_ci AddIpcCbObjByAppId(appId, cbObjIdx, CB_TYPE_DEV_AUTH); 10017fd14ceSopenharmony_ci InitDeviceAuthCbCtx(&g_bindCbAdt, CB_TYPE_DEV_AUTH); 10117fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.regCallback(appId, &g_bindCbAdt); 10217fd14ceSopenharmony_ci if (callRet != HC_SUCCESS) { 10317fd14ceSopenharmony_ci DelIpcCallBackByAppId(appId, CB_TYPE_DEV_AUTH); 10417fd14ceSopenharmony_ci } 10517fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 10617fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 10717fd14ceSopenharmony_ci return ret; 10817fd14ceSopenharmony_ci} 10917fd14ceSopenharmony_ci 11017fd14ceSopenharmony_cistatic int32_t IpcServiceGmUnRegCallback(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 11117fd14ceSopenharmony_ci{ 11217fd14ceSopenharmony_ci int32_t callRet = HC_SUCCESS; 11317fd14ceSopenharmony_ci int32_t ret; 11417fd14ceSopenharmony_ci const char *appId = NULL; 11517fd14ceSopenharmony_ci 11617fd14ceSopenharmony_ci LOGI("starting ..."); 11717fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 11817fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 11917fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 12017fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 12117fd14ceSopenharmony_ci } 12217fd14ceSopenharmony_ci 12317fd14ceSopenharmony_ci DelIpcCallBackByAppId(appId, CB_TYPE_DEV_AUTH); 12417fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 12517fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 12617fd14ceSopenharmony_ci return ret; 12717fd14ceSopenharmony_ci} 12817fd14ceSopenharmony_ci 12917fd14ceSopenharmony_cistatic int32_t IpcServiceGmRegDataChangeListener(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 13017fd14ceSopenharmony_ci{ 13117fd14ceSopenharmony_ci int32_t callRet; 13217fd14ceSopenharmony_ci int32_t ret; 13317fd14ceSopenharmony_ci const char *appId = NULL; 13417fd14ceSopenharmony_ci const DataChangeListener *callback = NULL; 13517fd14ceSopenharmony_ci static int32_t registered = 0; 13617fd14ceSopenharmony_ci int32_t cbObjIdx = -1; 13717fd14ceSopenharmony_ci int32_t inOutLen; 13817fd14ceSopenharmony_ci 13917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 14017fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 14117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 14217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 14317fd14ceSopenharmony_ci } 14417fd14ceSopenharmony_ci 14517fd14ceSopenharmony_ci inOutLen = sizeof(DataChangeListener); 14617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_LISTERNER, (uint8_t *)&callback, &inOutLen); 14717fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(DataChangeListener))) { 14817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_LISTERNER); 14917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 15017fd14ceSopenharmony_ci } 15117fd14ceSopenharmony_ci 15217fd14ceSopenharmony_ci ret = AddIpcCallBackByAppId(appId, (const uint8_t *)callback, sizeof(DataChangeListener), CB_TYPE_LISTENER); 15317fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 15417fd14ceSopenharmony_ci LOGE("add ipc callback failed"); 15517fd14ceSopenharmony_ci return HC_ERROR; 15617fd14ceSopenharmony_ci } 15717fd14ceSopenharmony_ci 15817fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 15917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_CB_OBJECT, (uint8_t *)&cbObjIdx, &inOutLen); 16017fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 16117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_CB_OBJECT); 16217fd14ceSopenharmony_ci DelIpcCallBackByAppId(appId, CB_TYPE_DEV_AUTH); 16317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 16417fd14ceSopenharmony_ci } 16517fd14ceSopenharmony_ci AddIpcCbObjByAppId(appId, cbObjIdx, CB_TYPE_LISTENER); 16617fd14ceSopenharmony_ci 16717fd14ceSopenharmony_ci callRet = HC_SUCCESS; 16817fd14ceSopenharmony_ci if (registered == 0) { 16917fd14ceSopenharmony_ci InitDevAuthListenerCbCtx(&g_listenCbAdt); 17017fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.regDataChangeListener(SERVICE_APP_ID, &g_listenCbAdt); 17117fd14ceSopenharmony_ci if (callRet == HC_SUCCESS) { 17217fd14ceSopenharmony_ci registered = 1; 17317fd14ceSopenharmony_ci } else { 17417fd14ceSopenharmony_ci DelIpcCallBackByAppId(appId, CB_TYPE_LISTENER); 17517fd14ceSopenharmony_ci } 17617fd14ceSopenharmony_ci } 17717fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 17817fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 17917fd14ceSopenharmony_ci return ret; 18017fd14ceSopenharmony_ci} 18117fd14ceSopenharmony_ci 18217fd14ceSopenharmony_cistatic int32_t IpcServiceGmUnRegDataChangeListener(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 18317fd14ceSopenharmony_ci{ 18417fd14ceSopenharmony_ci int32_t callRet = HC_SUCCESS; 18517fd14ceSopenharmony_ci int32_t ret; 18617fd14ceSopenharmony_ci const char *appId = NULL; 18717fd14ceSopenharmony_ci 18817fd14ceSopenharmony_ci LOGI("starting ..."); 18917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 19017fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 19117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 19217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 19317fd14ceSopenharmony_ci } 19417fd14ceSopenharmony_ci DelIpcCallBackByAppId(appId, CB_TYPE_LISTENER); 19517fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 19617fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 19717fd14ceSopenharmony_ci return ret; 19817fd14ceSopenharmony_ci} 19917fd14ceSopenharmony_ci 20017fd14ceSopenharmony_cistatic int32_t IpcServiceGmCreateGroup(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 20117fd14ceSopenharmony_ci{ 20217fd14ceSopenharmony_ci int32_t callRet; 20317fd14ceSopenharmony_ci int32_t ret; 20417fd14ceSopenharmony_ci int32_t osAccountId; 20517fd14ceSopenharmony_ci int64_t requestId = 0; 20617fd14ceSopenharmony_ci int32_t inOutLen; 20717fd14ceSopenharmony_ci const char *createParams = NULL; 20817fd14ceSopenharmony_ci const char *appId = NULL; 20917fd14ceSopenharmony_ci 21017fd14ceSopenharmony_ci LOGI("starting ..."); 21117fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 21217fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 21317fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 21417fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 21517fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 21617fd14ceSopenharmony_ci } 21717fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 21817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&requestId, &inOutLen); 21917fd14ceSopenharmony_ci if ((inOutLen != sizeof(int64_t)) || (ret != HC_SUCCESS)) { 22017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 22117fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 22217fd14ceSopenharmony_ci } 22317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 22417fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 22517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 22617fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 22717fd14ceSopenharmony_ci } 22817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_CREATE_PARAMS, (uint8_t *)&createParams, NULL); 22917fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 23017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_CREATE_PARAMS); 23117fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 23217fd14ceSopenharmony_ci } 23317fd14ceSopenharmony_ci ret = AddReqIdByAppId(appId, requestId); 23417fd14ceSopenharmony_ci if (ret != 0) { 23517fd14ceSopenharmony_ci LOGE("bind request id by app id failed"); 23617fd14ceSopenharmony_ci return ret; 23717fd14ceSopenharmony_ci } 23817fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.createGroup(osAccountId, requestId, appId, createParams); 23917fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 24017fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 24117fd14ceSopenharmony_ci return ret; 24217fd14ceSopenharmony_ci} 24317fd14ceSopenharmony_ci 24417fd14ceSopenharmony_cistatic int32_t IpcServiceGmDelGroup(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 24517fd14ceSopenharmony_ci{ 24617fd14ceSopenharmony_ci int32_t callRet; 24717fd14ceSopenharmony_ci int32_t ret; 24817fd14ceSopenharmony_ci int32_t osAccountId; 24917fd14ceSopenharmony_ci int64_t requestId = 0; 25017fd14ceSopenharmony_ci int32_t inOutLen; 25117fd14ceSopenharmony_ci const char *appId = NULL; 25217fd14ceSopenharmony_ci const char *delParams = NULL; 25317fd14ceSopenharmony_ci 25417fd14ceSopenharmony_ci LOGI("starting ..."); 25517fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 25617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 25717fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 25817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 25917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 26017fd14ceSopenharmony_ci } 26117fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 26217fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&requestId, &inOutLen); 26317fd14ceSopenharmony_ci if ((inOutLen != sizeof(int64_t)) || (ret != HC_SUCCESS)) { 26417fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 26517fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 26617fd14ceSopenharmony_ci } 26717fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 26817fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 26917fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 27017fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 27117fd14ceSopenharmony_ci } 27217fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_DEL_PARAMS, (uint8_t *)&delParams, NULL); 27317fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 27417fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_DEL_PARAMS); 27517fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 27617fd14ceSopenharmony_ci } 27717fd14ceSopenharmony_ci ret = AddReqIdByAppId(appId, requestId); 27817fd14ceSopenharmony_ci if (ret != 0) { 27917fd14ceSopenharmony_ci LOGE("bind request id by app id failed"); 28017fd14ceSopenharmony_ci return ret; 28117fd14ceSopenharmony_ci } 28217fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.deleteGroup(osAccountId, requestId, appId, delParams); 28317fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 28417fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 28517fd14ceSopenharmony_ci return ret; 28617fd14ceSopenharmony_ci} 28717fd14ceSopenharmony_ci 28817fd14ceSopenharmony_cistatic int32_t IpcServiceGmAddMemberToGroup(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 28917fd14ceSopenharmony_ci{ 29017fd14ceSopenharmony_ci int32_t callRet; 29117fd14ceSopenharmony_ci int32_t ret; 29217fd14ceSopenharmony_ci int32_t inOutLen; 29317fd14ceSopenharmony_ci int32_t osAccountId; 29417fd14ceSopenharmony_ci int64_t requestId = 0; 29517fd14ceSopenharmony_ci const char *addParams = NULL; 29617fd14ceSopenharmony_ci const char *appId = NULL; 29717fd14ceSopenharmony_ci 29817fd14ceSopenharmony_ci LOGI("starting ..."); 29917fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 30017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 30117fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 30217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 30317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 30417fd14ceSopenharmony_ci } 30517fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 30617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&requestId, &inOutLen); 30717fd14ceSopenharmony_ci if ((inOutLen != sizeof(int64_t)) || (ret != HC_SUCCESS)) { 30817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 30917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 31017fd14ceSopenharmony_ci } 31117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_ADD_PARAMS, (uint8_t *)&addParams, NULL); 31217fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 31317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_ADD_PARAMS); 31417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 31517fd14ceSopenharmony_ci } 31617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 31717fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 31817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 31917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 32017fd14ceSopenharmony_ci } 32117fd14ceSopenharmony_ci ret = AddReqIdByAppId(appId, requestId); 32217fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 32317fd14ceSopenharmony_ci return ret; 32417fd14ceSopenharmony_ci } 32517fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.addMemberToGroup(osAccountId, requestId, appId, addParams); 32617fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 32717fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 32817fd14ceSopenharmony_ci return ret; 32917fd14ceSopenharmony_ci} 33017fd14ceSopenharmony_ci 33117fd14ceSopenharmony_cistatic int32_t IpcServiceGmDelMemberFromGroup(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 33217fd14ceSopenharmony_ci{ 33317fd14ceSopenharmony_ci int32_t callRet; 33417fd14ceSopenharmony_ci int32_t ret; 33517fd14ceSopenharmony_ci int32_t inOutLen; 33617fd14ceSopenharmony_ci int32_t osAccountId; 33717fd14ceSopenharmony_ci int64_t requestId = 0; 33817fd14ceSopenharmony_ci const char *delParams = NULL; 33917fd14ceSopenharmony_ci const char *appId = NULL; 34017fd14ceSopenharmony_ci 34117fd14ceSopenharmony_ci LOGI("starting ..."); 34217fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 34317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 34417fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 34517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 34617fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 34717fd14ceSopenharmony_ci } 34817fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 34917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&requestId, &inOutLen); 35017fd14ceSopenharmony_ci if ((inOutLen != sizeof(int64_t)) || (ret != HC_SUCCESS)) { 35117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 35217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 35317fd14ceSopenharmony_ci } 35417fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 35517fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 35617fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 35717fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 35817fd14ceSopenharmony_ci } 35917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_DEL_PARAMS, (uint8_t *)&delParams, NULL); 36017fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 36117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_DEL_PARAMS); 36217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 36317fd14ceSopenharmony_ci } 36417fd14ceSopenharmony_ci ret = AddReqIdByAppId(appId, requestId); 36517fd14ceSopenharmony_ci if (ret != 0) { 36617fd14ceSopenharmony_ci LOGE("bind request id by app id failed"); 36717fd14ceSopenharmony_ci return ret; 36817fd14ceSopenharmony_ci } 36917fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.deleteMemberFromGroup(osAccountId, requestId, appId, delParams); 37017fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 37117fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 37217fd14ceSopenharmony_ci return ret; 37317fd14ceSopenharmony_ci} 37417fd14ceSopenharmony_ci 37517fd14ceSopenharmony_cistatic int32_t IpcServiceGmAddMultiMembersToGroup(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 37617fd14ceSopenharmony_ci{ 37717fd14ceSopenharmony_ci int32_t callRet; 37817fd14ceSopenharmony_ci int32_t ret; 37917fd14ceSopenharmony_ci int32_t inOutLen; 38017fd14ceSopenharmony_ci int32_t osAccountId; 38117fd14ceSopenharmony_ci const char *addParams = NULL; 38217fd14ceSopenharmony_ci const char *appId = NULL; 38317fd14ceSopenharmony_ci 38417fd14ceSopenharmony_ci LOGI("starting ..."); 38517fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 38617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 38717fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 38817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 38917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 39017fd14ceSopenharmony_ci } 39117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_ADD_PARAMS, (uint8_t *)&addParams, NULL); 39217fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 39317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_ADD_PARAMS); 39417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 39517fd14ceSopenharmony_ci } 39617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 39717fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 39817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 39917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 40017fd14ceSopenharmony_ci } 40117fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.addMultiMembersToGroup(osAccountId, appId, addParams); 40217fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 40317fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 40417fd14ceSopenharmony_ci return ret; 40517fd14ceSopenharmony_ci} 40617fd14ceSopenharmony_ci 40717fd14ceSopenharmony_cistatic int32_t IpcServiceGmDelMultiMembersFromGroup(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 40817fd14ceSopenharmony_ci{ 40917fd14ceSopenharmony_ci int32_t callRet; 41017fd14ceSopenharmony_ci int32_t ret; 41117fd14ceSopenharmony_ci int32_t inOutLen; 41217fd14ceSopenharmony_ci int32_t osAccountId; 41317fd14ceSopenharmony_ci const char *delParams = NULL; 41417fd14ceSopenharmony_ci const char *appId = NULL; 41517fd14ceSopenharmony_ci 41617fd14ceSopenharmony_ci LOGI("starting ..."); 41717fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 41817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 41917fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 42017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 42117fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 42217fd14ceSopenharmony_ci } 42317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 42417fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 42517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 42617fd14ceSopenharmony_ci return ret; 42717fd14ceSopenharmony_ci } 42817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_DEL_PARAMS, (uint8_t *)&delParams, NULL); 42917fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 43017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_DEL_PARAMS); 43117fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 43217fd14ceSopenharmony_ci } 43317fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.delMultiMembersFromGroup(osAccountId, appId, delParams); 43417fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 43517fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 43617fd14ceSopenharmony_ci return ret; 43717fd14ceSopenharmony_ci} 43817fd14ceSopenharmony_ci 43917fd14ceSopenharmony_cistatic int32_t IpcServiceGmProcessData(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 44017fd14ceSopenharmony_ci{ 44117fd14ceSopenharmony_ci int32_t callRet; 44217fd14ceSopenharmony_ci int32_t ret; 44317fd14ceSopenharmony_ci int32_t dataLen; 44417fd14ceSopenharmony_ci int32_t inOutLen; 44517fd14ceSopenharmony_ci int64_t requestId = 0; 44617fd14ceSopenharmony_ci const uint8_t *data = NULL; 44717fd14ceSopenharmony_ci 44817fd14ceSopenharmony_ci LOGI("starting ..."); 44917fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 45017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&requestId, &inOutLen); 45117fd14ceSopenharmony_ci if ((inOutLen != sizeof(int64_t)) || (ret != HC_SUCCESS)) { 45217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 45317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 45417fd14ceSopenharmony_ci } 45517fd14ceSopenharmony_ci 45617fd14ceSopenharmony_ci dataLen = 0; 45717fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_COMM_DATA, (uint8_t *)&data, &dataLen); 45817fd14ceSopenharmony_ci if ((dataLen <= 0) || (ret != HC_SUCCESS)) { 45917fd14ceSopenharmony_ci LOGE("get param error, type %d, data length %d", PARAM_TYPE_COMM_DATA, dataLen); 46017fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 46117fd14ceSopenharmony_ci } 46217fd14ceSopenharmony_ci ret = BindRequestIdWithAppId((const char *)data); 46317fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 46417fd14ceSopenharmony_ci return ret; 46517fd14ceSopenharmony_ci } 46617fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.processData(requestId, data, dataLen); 46717fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 46817fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 46917fd14ceSopenharmony_ci return ret; 47017fd14ceSopenharmony_ci} 47117fd14ceSopenharmony_ci 47217fd14ceSopenharmony_cistatic int32_t IpcServiceGmApplyRegisterInfo(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 47317fd14ceSopenharmony_ci{ 47417fd14ceSopenharmony_ci int32_t callRet; 47517fd14ceSopenharmony_ci int32_t ret; 47617fd14ceSopenharmony_ci const char *reqJsonStr = NULL; 47717fd14ceSopenharmony_ci char *registerInfo = NULL; 47817fd14ceSopenharmony_ci 47917fd14ceSopenharmony_ci LOGI("starting ..."); 48017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQ_JSON, (uint8_t *)&reqJsonStr, NULL); 48117fd14ceSopenharmony_ci if ((reqJsonStr == NULL) || (ret != HC_SUCCESS)) { 48217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQ_JSON); 48317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 48417fd14ceSopenharmony_ci } 48517fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.getRegisterInfo(reqJsonStr, ®isterInfo); 48617fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 48717fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT_NUM, 48817fd14ceSopenharmony_ci (const uint8_t *)&IPC_RESULT_NUM_1, sizeof(int32_t)); 48917fd14ceSopenharmony_ci if (registerInfo != NULL) { 49017fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_REG_INFO, 49117fd14ceSopenharmony_ci (const uint8_t *)registerInfo, HcStrlen(registerInfo) + 1); 49217fd14ceSopenharmony_ci g_devGroupMgrMethod.destroyInfo(®isterInfo); 49317fd14ceSopenharmony_ci } else { 49417fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_REG_INFO, NULL, 0); 49517fd14ceSopenharmony_ci } 49617fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 49717fd14ceSopenharmony_ci return (ret == HC_SUCCESS) ? ret : HC_ERROR; 49817fd14ceSopenharmony_ci} 49917fd14ceSopenharmony_ci 50017fd14ceSopenharmony_cistatic int32_t IpcServiceGmCheckAccessToGroup(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 50117fd14ceSopenharmony_ci{ 50217fd14ceSopenharmony_ci int32_t callRet; 50317fd14ceSopenharmony_ci int32_t ret; 50417fd14ceSopenharmony_ci int32_t inOutLen; 50517fd14ceSopenharmony_ci int32_t osAccountId; 50617fd14ceSopenharmony_ci const char *appId = NULL; 50717fd14ceSopenharmony_ci const char *groupId = NULL; 50817fd14ceSopenharmony_ci 50917fd14ceSopenharmony_ci LOGI("starting ..."); 51017fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 51117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 51217fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 51317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 51417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 51517fd14ceSopenharmony_ci } 51617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 51717fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 51817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 51917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 52017fd14ceSopenharmony_ci } 52117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_GROUPID, (uint8_t *)&groupId, NULL); 52217fd14ceSopenharmony_ci if ((groupId == NULL) || (ret != HC_SUCCESS)) { 52317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_GROUPID); 52417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 52517fd14ceSopenharmony_ci } 52617fd14ceSopenharmony_ci 52717fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.checkAccessToGroup(osAccountId, appId, groupId); 52817fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 52917fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 53017fd14ceSopenharmony_ci return ret; 53117fd14ceSopenharmony_ci} 53217fd14ceSopenharmony_ci 53317fd14ceSopenharmony_cistatic int32_t IpcServiceGmGetPkInfoList(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 53417fd14ceSopenharmony_ci{ 53517fd14ceSopenharmony_ci int32_t callRet; 53617fd14ceSopenharmony_ci int32_t ret; 53717fd14ceSopenharmony_ci int32_t inOutLen; 53817fd14ceSopenharmony_ci int32_t osAccountId; 53917fd14ceSopenharmony_ci const char *appId = NULL; 54017fd14ceSopenharmony_ci const char *queryParams = NULL; 54117fd14ceSopenharmony_ci char *returnInfoList = NULL; 54217fd14ceSopenharmony_ci uint32_t returnInfoNum = 0; 54317fd14ceSopenharmony_ci 54417fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 54517fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 54617fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 54717fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 54817fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 54917fd14ceSopenharmony_ci } 55017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 55117fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 55217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 55317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 55417fd14ceSopenharmony_ci } 55517fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_QUERY_PARAMS, (uint8_t *)&queryParams, NULL); 55617fd14ceSopenharmony_ci if ((queryParams == NULL) || (ret != HC_SUCCESS)) { 55717fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_QUERY_PARAMS); 55817fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 55917fd14ceSopenharmony_ci } 56017fd14ceSopenharmony_ci 56117fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.getPkInfoList(osAccountId, appId, queryParams, &returnInfoList, &returnInfoNum); 56217fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 56317fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT_NUM, 56417fd14ceSopenharmony_ci (const uint8_t *)&IPC_RESULT_NUM_2, sizeof(int32_t)); 56517fd14ceSopenharmony_ci if (returnInfoList != NULL) { 56617fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_RETURN_DATA, (const uint8_t *)returnInfoList, 56717fd14ceSopenharmony_ci HcStrlen(returnInfoList) + 1); 56817fd14ceSopenharmony_ci } else { 56917fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_RETURN_DATA, NULL, 0); 57017fd14ceSopenharmony_ci } 57117fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DATA_NUM, (const uint8_t *)&returnInfoNum, sizeof(int32_t)); 57217fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 57317fd14ceSopenharmony_ci g_devGroupMgrMethod.destroyInfo(&returnInfoList); 57417fd14ceSopenharmony_ci return (ret == HC_SUCCESS) ? ret : HC_ERROR; 57517fd14ceSopenharmony_ci} 57617fd14ceSopenharmony_ci 57717fd14ceSopenharmony_cistatic int32_t IpcServiceGmGetGroupInfoById(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 57817fd14ceSopenharmony_ci{ 57917fd14ceSopenharmony_ci int32_t callRet; 58017fd14ceSopenharmony_ci int32_t ret; 58117fd14ceSopenharmony_ci int32_t inOutLen; 58217fd14ceSopenharmony_ci int32_t osAccountId; 58317fd14ceSopenharmony_ci const char *appId = NULL; 58417fd14ceSopenharmony_ci const char *groupId = NULL; 58517fd14ceSopenharmony_ci char *groupInfo = NULL; 58617fd14ceSopenharmony_ci 58717fd14ceSopenharmony_ci LOGI("starting ..."); 58817fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 58917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 59017fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 59117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 59217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 59317fd14ceSopenharmony_ci } 59417fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 59517fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 59617fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 59717fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 59817fd14ceSopenharmony_ci } 59917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_GROUPID, (uint8_t *)&groupId, NULL); 60017fd14ceSopenharmony_ci if ((groupId == NULL) || (ret != HC_SUCCESS)) { 60117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_GROUPID); 60217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 60317fd14ceSopenharmony_ci } 60417fd14ceSopenharmony_ci 60517fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.getGroupInfoById(osAccountId, appId, groupId, &groupInfo); 60617fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 60717fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT_NUM, 60817fd14ceSopenharmony_ci (const uint8_t *)&IPC_RESULT_NUM_1, sizeof(int32_t)); 60917fd14ceSopenharmony_ci if (groupInfo != NULL) { 61017fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_GROUP_INFO, (const uint8_t *)groupInfo, HcStrlen(groupInfo) + 1); 61117fd14ceSopenharmony_ci g_devGroupMgrMethod.destroyInfo(&groupInfo); 61217fd14ceSopenharmony_ci } else { 61317fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_GROUP_INFO, NULL, 0); 61417fd14ceSopenharmony_ci } 61517fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 61617fd14ceSopenharmony_ci return (ret == HC_SUCCESS) ? ret : HC_ERROR; 61717fd14ceSopenharmony_ci} 61817fd14ceSopenharmony_ci 61917fd14ceSopenharmony_cistatic int32_t IpcServiceGmGetGroupInfo(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 62017fd14ceSopenharmony_ci{ 62117fd14ceSopenharmony_ci int32_t callRet; 62217fd14ceSopenharmony_ci int32_t ret; 62317fd14ceSopenharmony_ci int32_t inOutLen; 62417fd14ceSopenharmony_ci int32_t osAccountId; 62517fd14ceSopenharmony_ci const char *appId = NULL; 62617fd14ceSopenharmony_ci const char *queryParams = NULL; 62717fd14ceSopenharmony_ci char *outGroups = NULL; 62817fd14ceSopenharmony_ci uint32_t groupNum = 0; 62917fd14ceSopenharmony_ci 63017fd14ceSopenharmony_ci LOGI("starting ..."); 63117fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 63217fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 63317fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 63417fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 63517fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 63617fd14ceSopenharmony_ci } 63717fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 63817fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 63917fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 64017fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 64117fd14ceSopenharmony_ci } 64217fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_QUERY_PARAMS, (uint8_t *)&queryParams, NULL); 64317fd14ceSopenharmony_ci if ((queryParams == NULL) || (ret != HC_SUCCESS)) { 64417fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_QUERY_PARAMS); 64517fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 64617fd14ceSopenharmony_ci } 64717fd14ceSopenharmony_ci 64817fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.getGroupInfo(osAccountId, appId, queryParams, &outGroups, &groupNum); 64917fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 65017fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT_NUM, 65117fd14ceSopenharmony_ci (const uint8_t *)&IPC_RESULT_NUM_2, sizeof(int32_t)); 65217fd14ceSopenharmony_ci if (outGroups != NULL) { 65317fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_GROUP_INFO, (const uint8_t *)outGroups, HcStrlen(outGroups) + 1); 65417fd14ceSopenharmony_ci } else { 65517fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_GROUP_INFO, NULL, 0); 65617fd14ceSopenharmony_ci } 65717fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DATA_NUM, (const uint8_t *)&groupNum, sizeof(int32_t)); 65817fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 65917fd14ceSopenharmony_ci g_devGroupMgrMethod.destroyInfo(&outGroups); 66017fd14ceSopenharmony_ci return (ret == HC_SUCCESS) ? ret : HC_ERROR; 66117fd14ceSopenharmony_ci} 66217fd14ceSopenharmony_ci 66317fd14ceSopenharmony_cistatic int32_t IpcServiceGmGetJoinedGroups(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 66417fd14ceSopenharmony_ci{ 66517fd14ceSopenharmony_ci int32_t callRet; 66617fd14ceSopenharmony_ci int32_t ret; 66717fd14ceSopenharmony_ci int32_t groupType = 0; 66817fd14ceSopenharmony_ci int32_t inOutLen; 66917fd14ceSopenharmony_ci int32_t osAccountId; 67017fd14ceSopenharmony_ci const char *appId = NULL; 67117fd14ceSopenharmony_ci char *outGroups = NULL; 67217fd14ceSopenharmony_ci uint32_t groupNum = 0; 67317fd14ceSopenharmony_ci 67417fd14ceSopenharmony_ci LOGI("starting ..."); 67517fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 67617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 67717fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 67817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 67917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 68017fd14ceSopenharmony_ci } 68117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 68217fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 68317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 68417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 68517fd14ceSopenharmony_ci } 68617fd14ceSopenharmony_ci inOutLen = sizeof(groupType); 68717fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_GROUP_TYPE, (uint8_t *)&groupType, &inOutLen); 68817fd14ceSopenharmony_ci if ((inOutLen != sizeof(groupType)) || (ret != HC_SUCCESS)) { 68917fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_GROUP_TYPE); 69017fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 69117fd14ceSopenharmony_ci } 69217fd14ceSopenharmony_ci 69317fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.getJoinedGroups(osAccountId, appId, groupType, &outGroups, &groupNum); 69417fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 69517fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT_NUM, 69617fd14ceSopenharmony_ci (const uint8_t *)&IPC_RESULT_NUM_2, sizeof(int32_t)); 69717fd14ceSopenharmony_ci if (outGroups != NULL) { 69817fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_GROUP_INFO, (const uint8_t *)outGroups, HcStrlen(outGroups) + 1); 69917fd14ceSopenharmony_ci g_devGroupMgrMethod.destroyInfo(&outGroups); 70017fd14ceSopenharmony_ci } else { 70117fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_GROUP_INFO, NULL, 0); 70217fd14ceSopenharmony_ci } 70317fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DATA_NUM, (const uint8_t *)&groupNum, sizeof(int32_t)); 70417fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 70517fd14ceSopenharmony_ci return (ret == HC_SUCCESS) ? ret : HC_ERROR; 70617fd14ceSopenharmony_ci} 70717fd14ceSopenharmony_ci 70817fd14ceSopenharmony_cistatic int32_t IpcServiceGmGetRelatedGroups(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 70917fd14ceSopenharmony_ci{ 71017fd14ceSopenharmony_ci int32_t callRet; 71117fd14ceSopenharmony_ci int32_t ret; 71217fd14ceSopenharmony_ci int32_t inOutLen; 71317fd14ceSopenharmony_ci int32_t osAccountId; 71417fd14ceSopenharmony_ci const char *appId = NULL; 71517fd14ceSopenharmony_ci const char *peerUdid = NULL; 71617fd14ceSopenharmony_ci char *outGroups = NULL; 71717fd14ceSopenharmony_ci uint32_t groupNum = 0; 71817fd14ceSopenharmony_ci 71917fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 72017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 72117fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 72217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 72317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 72417fd14ceSopenharmony_ci } 72517fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 72617fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 72717fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 72817fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 72917fd14ceSopenharmony_ci } 73017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_UDID, (uint8_t *)&peerUdid, NULL); 73117fd14ceSopenharmony_ci if ((peerUdid == NULL) || (ret != HC_SUCCESS)) { 73217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_UDID); 73317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 73417fd14ceSopenharmony_ci } 73517fd14ceSopenharmony_ci 73617fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.getRelatedGroups(osAccountId, appId, peerUdid, &outGroups, &groupNum); 73717fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 73817fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT_NUM, 73917fd14ceSopenharmony_ci (const uint8_t *)&IPC_RESULT_NUM_2, sizeof(int32_t)); 74017fd14ceSopenharmony_ci if (outGroups != NULL) { 74117fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_GROUP_INFO, (const uint8_t *)outGroups, HcStrlen(outGroups) + 1); 74217fd14ceSopenharmony_ci } else { 74317fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_GROUP_INFO, NULL, 0); 74417fd14ceSopenharmony_ci } 74517fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DATA_NUM, (const uint8_t *)&groupNum, sizeof(int32_t)); 74617fd14ceSopenharmony_ci g_devGroupMgrMethod.destroyInfo(&outGroups); 74717fd14ceSopenharmony_ci return (ret == HC_SUCCESS) ? ret : HC_ERROR; 74817fd14ceSopenharmony_ci} 74917fd14ceSopenharmony_ci 75017fd14ceSopenharmony_cistatic int32_t IpcServiceGmGetDeviceInfoById(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 75117fd14ceSopenharmony_ci{ 75217fd14ceSopenharmony_ci int32_t callRet; 75317fd14ceSopenharmony_ci int32_t ret; 75417fd14ceSopenharmony_ci int32_t inOutLen; 75517fd14ceSopenharmony_ci int32_t osAccountId; 75617fd14ceSopenharmony_ci const char *appId = NULL; 75717fd14ceSopenharmony_ci const char *peerUdid = NULL; 75817fd14ceSopenharmony_ci const char *groupId = NULL; 75917fd14ceSopenharmony_ci char *outDevInfo = NULL; 76017fd14ceSopenharmony_ci 76117fd14ceSopenharmony_ci LOGI("starting ..."); 76217fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 76317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 76417fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 76517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 76617fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 76717fd14ceSopenharmony_ci } 76817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 76917fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 77017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 77117fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 77217fd14ceSopenharmony_ci } 77317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_UDID, (uint8_t *)&peerUdid, NULL); 77417fd14ceSopenharmony_ci if ((peerUdid == NULL) || (ret != HC_SUCCESS)) { 77517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_UDID); 77617fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 77717fd14ceSopenharmony_ci } 77817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_GROUPID, (uint8_t *)&groupId, NULL); 77917fd14ceSopenharmony_ci if ((groupId == NULL) || (ret != HC_SUCCESS)) { 78017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_GROUPID); 78117fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 78217fd14ceSopenharmony_ci } 78317fd14ceSopenharmony_ci 78417fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.getDeviceInfoById(osAccountId, appId, peerUdid, groupId, &outDevInfo); 78517fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 78617fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT_NUM, 78717fd14ceSopenharmony_ci (const uint8_t *)&IPC_RESULT_NUM_1, sizeof(int32_t)); 78817fd14ceSopenharmony_ci if (outDevInfo != NULL) { 78917fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DEVICE_INFO, 79017fd14ceSopenharmony_ci (const uint8_t *)outDevInfo, HcStrlen(outDevInfo) + 1); 79117fd14ceSopenharmony_ci g_devGroupMgrMethod.destroyInfo(&outDevInfo); 79217fd14ceSopenharmony_ci } else { 79317fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DEVICE_INFO, NULL, 0); 79417fd14ceSopenharmony_ci } 79517fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 79617fd14ceSopenharmony_ci return (ret == HC_SUCCESS) ? ret : HC_ERROR; 79717fd14ceSopenharmony_ci} 79817fd14ceSopenharmony_ci 79917fd14ceSopenharmony_cistatic int32_t IpcServiceGmGetTrustedDevices(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 80017fd14ceSopenharmony_ci{ 80117fd14ceSopenharmony_ci int32_t callRet; 80217fd14ceSopenharmony_ci int32_t ret; 80317fd14ceSopenharmony_ci int32_t inOutLen; 80417fd14ceSopenharmony_ci int32_t osAccountId; 80517fd14ceSopenharmony_ci const char *appId = NULL; 80617fd14ceSopenharmony_ci const char *groupId = NULL; 80717fd14ceSopenharmony_ci char *outDevInfo = NULL; 80817fd14ceSopenharmony_ci uint32_t outDevNum = 0; 80917fd14ceSopenharmony_ci 81017fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 81117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 81217fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 81317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 81417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 81517fd14ceSopenharmony_ci } 81617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 81717fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 81817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 81917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 82017fd14ceSopenharmony_ci } 82117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_GROUPID, (uint8_t *)&groupId, NULL); 82217fd14ceSopenharmony_ci if ((groupId == NULL) || (ret != HC_SUCCESS)) { 82317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_GROUPID); 82417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 82517fd14ceSopenharmony_ci } 82617fd14ceSopenharmony_ci 82717fd14ceSopenharmony_ci callRet = g_devGroupMgrMethod.getTrustedDevices(osAccountId, appId, groupId, &outDevInfo, &outDevNum); 82817fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 82917fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT_NUM, 83017fd14ceSopenharmony_ci (const uint8_t *)&IPC_RESULT_NUM_2, sizeof(int32_t)); 83117fd14ceSopenharmony_ci if (outDevInfo != NULL) { 83217fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DEVICE_INFO, 83317fd14ceSopenharmony_ci (const uint8_t *)outDevInfo, HcStrlen(outDevInfo) + 1); 83417fd14ceSopenharmony_ci } else { 83517fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DEVICE_INFO, NULL, 0); 83617fd14ceSopenharmony_ci } 83717fd14ceSopenharmony_ci ret += IpcEncodeCallReply(outCache, PARAM_TYPE_DATA_NUM, (const uint8_t *)&outDevNum, sizeof(int32_t)); 83817fd14ceSopenharmony_ci g_devGroupMgrMethod.destroyInfo(&outDevInfo); 83917fd14ceSopenharmony_ci return (ret == HC_SUCCESS) ? ret : HC_ERROR; 84017fd14ceSopenharmony_ci} 84117fd14ceSopenharmony_ci 84217fd14ceSopenharmony_cistatic int32_t IpcServiceGmIsDeviceInGroup(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 84317fd14ceSopenharmony_ci{ 84417fd14ceSopenharmony_ci int32_t callRet; 84517fd14ceSopenharmony_ci int32_t ret; 84617fd14ceSopenharmony_ci int32_t inOutLen; 84717fd14ceSopenharmony_ci int32_t osAccountId; 84817fd14ceSopenharmony_ci bool bRet = false; 84917fd14ceSopenharmony_ci const char *appId = NULL; 85017fd14ceSopenharmony_ci const char *udid = NULL; 85117fd14ceSopenharmony_ci const char *groupId = NULL; 85217fd14ceSopenharmony_ci 85317fd14ceSopenharmony_ci LOGI("starting ..."); 85417fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 85517fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 85617fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 85717fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 85817fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 85917fd14ceSopenharmony_ci } 86017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 86117fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 86217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 86317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 86417fd14ceSopenharmony_ci } 86517fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_UDID, (uint8_t *)&udid, NULL); 86617fd14ceSopenharmony_ci if ((udid == NULL) || (ret != HC_SUCCESS)) { 86717fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_UDID); 86817fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 86917fd14ceSopenharmony_ci } 87017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_GROUPID, (uint8_t *)&groupId, NULL); 87117fd14ceSopenharmony_ci if ((groupId == NULL) || (ret != HC_SUCCESS)) { 87217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_GROUPID); 87317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 87417fd14ceSopenharmony_ci } 87517fd14ceSopenharmony_ci 87617fd14ceSopenharmony_ci bRet = g_devGroupMgrMethod.isDeviceInGroup(osAccountId, appId, groupId, udid); 87717fd14ceSopenharmony_ci callRet = ((bRet == true) ? HC_SUCCESS : HC_ERROR); 87817fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 87917fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 88017fd14ceSopenharmony_ci return ret; 88117fd14ceSopenharmony_ci} 88217fd14ceSopenharmony_ci 88317fd14ceSopenharmony_cistatic int32_t IpcServiceGmCancelRequest(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 88417fd14ceSopenharmony_ci{ 88517fd14ceSopenharmony_ci int32_t ret; 88617fd14ceSopenharmony_ci int64_t requestId = 0; 88717fd14ceSopenharmony_ci const char *appId = NULL; 88817fd14ceSopenharmony_ci 88917fd14ceSopenharmony_ci LOGI("starting ..."); 89017fd14ceSopenharmony_ci int32_t inOutLen = sizeof(int64_t); 89117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&requestId, &inOutLen); 89217fd14ceSopenharmony_ci if ((inOutLen != sizeof(requestId)) || (ret != HC_SUCCESS)) { 89317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 89417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 89517fd14ceSopenharmony_ci } 89617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 89717fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 89817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 89917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 90017fd14ceSopenharmony_ci } 90117fd14ceSopenharmony_ci 90217fd14ceSopenharmony_ci g_devGroupMgrMethod.cancelRequest(requestId, appId); 90317fd14ceSopenharmony_ci LOGI("process done, ipc ret %d", ret); 90417fd14ceSopenharmony_ci return ret; 90517fd14ceSopenharmony_ci} 90617fd14ceSopenharmony_ci 90717fd14ceSopenharmony_cistatic int32_t IpcServiceGaProcessData(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 90817fd14ceSopenharmony_ci{ 90917fd14ceSopenharmony_ci int32_t callRet; 91017fd14ceSopenharmony_ci int32_t ret; 91117fd14ceSopenharmony_ci const DeviceAuthCallback *gaCallback = NULL; 91217fd14ceSopenharmony_ci int64_t reqId = 0; 91317fd14ceSopenharmony_ci uint8_t *data = NULL; 91417fd14ceSopenharmony_ci uint32_t dataLen = 0; 91517fd14ceSopenharmony_ci int32_t inOutLen; 91617fd14ceSopenharmony_ci int32_t cbObjIdx = -1; 91717fd14ceSopenharmony_ci 91817fd14ceSopenharmony_ci LOGI("starting ..."); 91917fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 92017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&reqId, &inOutLen); 92117fd14ceSopenharmony_ci if ((inOutLen != sizeof(int64_t)) || (ret != HC_SUCCESS)) { 92217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 92317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 92417fd14ceSopenharmony_ci } 92517fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_COMM_DATA, (uint8_t *)&data, (int32_t *)&dataLen); 92617fd14ceSopenharmony_ci if ((data == NULL) || (dataLen == 0) || (ret != HC_SUCCESS)) { 92717fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_COMM_DATA); 92817fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 92917fd14ceSopenharmony_ci } 93017fd14ceSopenharmony_ci inOutLen = sizeof(DeviceAuthCallback); 93117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_DEV_AUTH_CB, (uint8_t *)&gaCallback, &inOutLen); 93217fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(DeviceAuthCallback))) { 93317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_DEV_AUTH_CB); 93417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 93517fd14ceSopenharmony_ci } 93617fd14ceSopenharmony_ci /* add call back */ 93717fd14ceSopenharmony_ci ret = AddIpcCallBackByReqId(reqId, (const uint8_t *)gaCallback, sizeof(DeviceAuthCallback), CB_TYPE_TMP_DEV_AUTH); 93817fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 93917fd14ceSopenharmony_ci LOGE("add ipc callback failed"); 94017fd14ceSopenharmony_ci return ret; 94117fd14ceSopenharmony_ci } 94217fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 94317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_CB_OBJECT, (uint8_t *)&cbObjIdx, &inOutLen); 94417fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 94517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_CB_OBJECT); 94617fd14ceSopenharmony_ci DelIpcCallBackByReqId(reqId, CB_TYPE_TMP_DEV_AUTH, true); 94717fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 94817fd14ceSopenharmony_ci } 94917fd14ceSopenharmony_ci AddIpcCbObjByReqId(reqId, cbObjIdx, CB_TYPE_TMP_DEV_AUTH); 95017fd14ceSopenharmony_ci InitDeviceAuthCbCtx(&g_authCbAdt, CB_TYPE_TMP_DEV_AUTH); 95117fd14ceSopenharmony_ci callRet = g_groupAuthMgrMethod.processData(reqId, data, dataLen, &g_authCbAdt); 95217fd14ceSopenharmony_ci if (callRet != HC_SUCCESS) { 95317fd14ceSopenharmony_ci DelIpcCallBackByReqId(reqId, CB_TYPE_TMP_DEV_AUTH, true); 95417fd14ceSopenharmony_ci } 95517fd14ceSopenharmony_ci return IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 95617fd14ceSopenharmony_ci} 95717fd14ceSopenharmony_ci 95817fd14ceSopenharmony_cistatic int32_t IpcServiceGaAuthDevice(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 95917fd14ceSopenharmony_ci{ 96017fd14ceSopenharmony_ci int32_t ret; 96117fd14ceSopenharmony_ci DeviceAuthCallback *gaCallback = NULL; 96217fd14ceSopenharmony_ci int32_t osAccountId; 96317fd14ceSopenharmony_ci int64_t reqId = 0; 96417fd14ceSopenharmony_ci const char *authParams = NULL; 96517fd14ceSopenharmony_ci int32_t inOutLen; 96617fd14ceSopenharmony_ci int32_t cbObjIdx = -1; 96717fd14ceSopenharmony_ci 96817fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 96917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 97017fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 97117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 97217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 97317fd14ceSopenharmony_ci } 97417fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 97517fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&reqId, &inOutLen); 97617fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(int64_t))) { 97717fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 97817fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 97917fd14ceSopenharmony_ci } 98017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_AUTH_PARAMS, (uint8_t *)&authParams, NULL); 98117fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (authParams == NULL)) { 98217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_AUTH_PARAMS); 98317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 98417fd14ceSopenharmony_ci } 98517fd14ceSopenharmony_ci inOutLen = sizeof(DeviceAuthCallback); 98617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_DEV_AUTH_CB, (uint8_t *)&gaCallback, &inOutLen); 98717fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(DeviceAuthCallback))) { 98817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_DEV_AUTH_CB); 98917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 99017fd14ceSopenharmony_ci } 99117fd14ceSopenharmony_ci 99217fd14ceSopenharmony_ci /* add call back */ 99317fd14ceSopenharmony_ci ret = AddIpcCallBackByReqId(reqId, (const uint8_t *)gaCallback, sizeof(DeviceAuthCallback), CB_TYPE_TMP_DEV_AUTH); 99417fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 99517fd14ceSopenharmony_ci return ret; 99617fd14ceSopenharmony_ci } 99717fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 99817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_CB_OBJECT, (uint8_t *)&cbObjIdx, &inOutLen); 99917fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 100017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_CB_OBJECT); 100117fd14ceSopenharmony_ci DelIpcCallBackByReqId(reqId, CB_TYPE_TMP_DEV_AUTH, true); 100217fd14ceSopenharmony_ci return ret; 100317fd14ceSopenharmony_ci } 100417fd14ceSopenharmony_ci AddIpcCbObjByReqId(reqId, cbObjIdx, CB_TYPE_TMP_DEV_AUTH); 100517fd14ceSopenharmony_ci InitDeviceAuthCbCtx(&g_authCbAdt, CB_TYPE_TMP_DEV_AUTH); 100617fd14ceSopenharmony_ci ret = g_groupAuthMgrMethod.authDevice(osAccountId, reqId, authParams, &g_authCbAdt); 100717fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 100817fd14ceSopenharmony_ci DelIpcCallBackByReqId(reqId, CB_TYPE_TMP_DEV_AUTH, true); 100917fd14ceSopenharmony_ci } 101017fd14ceSopenharmony_ci return IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&ret, sizeof(int32_t)); 101117fd14ceSopenharmony_ci} 101217fd14ceSopenharmony_ci 101317fd14ceSopenharmony_cistatic int32_t IpcServiceGaCancelRequest(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 101417fd14ceSopenharmony_ci{ 101517fd14ceSopenharmony_ci int32_t ret; 101617fd14ceSopenharmony_ci int64_t requestId = 0; 101717fd14ceSopenharmony_ci const char *appId = NULL; 101817fd14ceSopenharmony_ci 101917fd14ceSopenharmony_ci LOGI("starting ..."); 102017fd14ceSopenharmony_ci int32_t inOutLen = sizeof(int64_t); 102117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&requestId, &inOutLen); 102217fd14ceSopenharmony_ci if ((inOutLen != sizeof(requestId)) || (ret != HC_SUCCESS)) { 102317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 102417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 102517fd14ceSopenharmony_ci } 102617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_APPID, (uint8_t *)&appId, NULL); 102717fd14ceSopenharmony_ci if ((appId == NULL) || (ret != HC_SUCCESS)) { 102817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_APPID); 102917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 103017fd14ceSopenharmony_ci } 103117fd14ceSopenharmony_ci 103217fd14ceSopenharmony_ci g_groupAuthMgrMethod.cancelRequest(requestId, appId); 103317fd14ceSopenharmony_ci DelIpcCallBackByReqId(requestId, CB_TYPE_TMP_DEV_AUTH, true); 103417fd14ceSopenharmony_ci LOGI("process done, ipc ret %d", ret); 103517fd14ceSopenharmony_ci return ret; 103617fd14ceSopenharmony_ci} 103717fd14ceSopenharmony_ci 103817fd14ceSopenharmony_cistatic int32_t IpcServiceGaGetRealInfo(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 103917fd14ceSopenharmony_ci{ 104017fd14ceSopenharmony_ci int32_t ret; 104117fd14ceSopenharmony_ci int32_t osAccountId; 104217fd14ceSopenharmony_ci const char *pseudonymId = NULL; 104317fd14ceSopenharmony_ci 104417fd14ceSopenharmony_ci LOGI("starting ..."); 104517fd14ceSopenharmony_ci int32_t inOutLen = sizeof(int64_t); 104617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 104717fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 104817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 104917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 105017fd14ceSopenharmony_ci } 105117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_PSEUDONYM_ID, (uint8_t *)&pseudonymId, NULL); 105217fd14ceSopenharmony_ci if ((pseudonymId == NULL) || (ret != HC_SUCCESS)) { 105317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_PSEUDONYM_ID); 105417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 105517fd14ceSopenharmony_ci } 105617fd14ceSopenharmony_ci 105717fd14ceSopenharmony_ci char *realInfo = NULL; 105817fd14ceSopenharmony_ci ret = g_groupAuthMgrMethod.getRealInfo(osAccountId, pseudonymId, &realInfo); 105917fd14ceSopenharmony_ci if ((realInfo != NULL) && (ret == HC_SUCCESS)) { 106017fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_RETURN_DATA, (const uint8_t *)realInfo, 106117fd14ceSopenharmony_ci HcStrlen(realInfo) + 1); 106217fd14ceSopenharmony_ci HcFree(realInfo); 106317fd14ceSopenharmony_ci } else { 106417fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_RETURN_DATA, NULL, 0); 106517fd14ceSopenharmony_ci } 106617fd14ceSopenharmony_ci LOGI("process done, ipc ret %d", ret); 106717fd14ceSopenharmony_ci return ret; 106817fd14ceSopenharmony_ci} 106917fd14ceSopenharmony_ci 107017fd14ceSopenharmony_cistatic int32_t IpcServiceGaGetPseudonymId(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 107117fd14ceSopenharmony_ci{ 107217fd14ceSopenharmony_ci int32_t ret; 107317fd14ceSopenharmony_ci int32_t osAccountId; 107417fd14ceSopenharmony_ci const char *indexKey = NULL; 107517fd14ceSopenharmony_ci 107617fd14ceSopenharmony_ci LOGI("starting ..."); 107717fd14ceSopenharmony_ci int32_t inOutLen = sizeof(int64_t); 107817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OS_ACCOUNT_ID, (uint8_t *)&osAccountId, &inOutLen); 107917fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 108017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OS_ACCOUNT_ID); 108117fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 108217fd14ceSopenharmony_ci } 108317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_INDEX_KEY, (uint8_t *)&indexKey, NULL); 108417fd14ceSopenharmony_ci if ((indexKey == NULL) || (ret != HC_SUCCESS)) { 108517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_INDEX_KEY); 108617fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 108717fd14ceSopenharmony_ci } 108817fd14ceSopenharmony_ci 108917fd14ceSopenharmony_ci char *pseudonymId = NULL; 109017fd14ceSopenharmony_ci ret = g_groupAuthMgrMethod.getPseudonymId(osAccountId, indexKey, &pseudonymId); 109117fd14ceSopenharmony_ci if ((pseudonymId != NULL) && (ret == HC_SUCCESS)) { 109217fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_RETURN_DATA, (const uint8_t *)pseudonymId, 109317fd14ceSopenharmony_ci HcStrlen(pseudonymId) + 1); 109417fd14ceSopenharmony_ci HcFree(pseudonymId); 109517fd14ceSopenharmony_ci } else { 109617fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_RETURN_DATA, NULL, 0); 109717fd14ceSopenharmony_ci } 109817fd14ceSopenharmony_ci LOGI("process done, ipc ret %d", ret); 109917fd14ceSopenharmony_ci return ret; 110017fd14ceSopenharmony_ci} 110117fd14ceSopenharmony_ci 110217fd14ceSopenharmony_cistatic int32_t IpcServiceDaProcessCredential(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 110317fd14ceSopenharmony_ci{ 110417fd14ceSopenharmony_ci int32_t ret; 110517fd14ceSopenharmony_ci int32_t operationCode = 0; 110617fd14ceSopenharmony_ci const char *reqJsonStr = NULL; 110717fd14ceSopenharmony_ci char *returnData = NULL; 110817fd14ceSopenharmony_ci 110917fd14ceSopenharmony_ci LOGI("starting ..."); 111017fd14ceSopenharmony_ci int32_t inOutLen = sizeof(int32_t); 111117fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_OPCODE, (uint8_t *)&operationCode, &inOutLen); 111217fd14ceSopenharmony_ci if ((inOutLen != sizeof(int32_t)) || (ret != HC_SUCCESS)) { 111317fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_OPCODE); 111417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 111517fd14ceSopenharmony_ci } 111617fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQ_JSON, (uint8_t *)&reqJsonStr, NULL); 111717fd14ceSopenharmony_ci if ((reqJsonStr == NULL) || (ret != HC_SUCCESS)) { 111817fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQ_JSON); 111917fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 112017fd14ceSopenharmony_ci } 112117fd14ceSopenharmony_ci ret = ProcessCredential(operationCode, reqJsonStr, &returnData); 112217fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 112317fd14ceSopenharmony_ci LOGI("call ProcessCredential failed %d", ret); 112417fd14ceSopenharmony_ci } 112517fd14ceSopenharmony_ci if (returnData != NULL) { 112617fd14ceSopenharmony_ci ret = IpcEncodeCallReply( 112717fd14ceSopenharmony_ci outCache, PARAM_TYPE_RETURN_DATA, (const uint8_t *)returnData, HcStrlen(returnData) + 1); 112817fd14ceSopenharmony_ci HcFree(returnData); 112917fd14ceSopenharmony_ci } else { 113017fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_RETURN_DATA, NULL, 0); 113117fd14ceSopenharmony_ci } 113217fd14ceSopenharmony_ci LOGI("process done, ipc ret %d", ret); 113317fd14ceSopenharmony_ci return ret; 113417fd14ceSopenharmony_ci} 113517fd14ceSopenharmony_ci 113617fd14ceSopenharmony_cistatic int32_t IpcServiceDaProcessData(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 113717fd14ceSopenharmony_ci{ 113817fd14ceSopenharmony_ci int32_t callRet; 113917fd14ceSopenharmony_ci int32_t ret; 114017fd14ceSopenharmony_ci const DeviceAuthCallback *callback = NULL; 114117fd14ceSopenharmony_ci int64_t authReqId = 0; 114217fd14ceSopenharmony_ci const char *authParams = NULL; 114317fd14ceSopenharmony_ci int32_t inOutLen; 114417fd14ceSopenharmony_ci int32_t cbObjIdx = -1; 114517fd14ceSopenharmony_ci 114617fd14ceSopenharmony_ci LOGI("starting ..."); 114717fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 114817fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&authReqId, &inOutLen); 114917fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(authReqId))) { 115017fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 115117fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 115217fd14ceSopenharmony_ci } 115317fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_AUTH_PARAMS, (uint8_t *)&authParams, NULL); 115417fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (authParams == NULL)) { 115517fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_AUTH_PARAMS); 115617fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 115717fd14ceSopenharmony_ci } 115817fd14ceSopenharmony_ci inOutLen = sizeof(DeviceAuthCallback); 115917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_DEV_AUTH_CB, (uint8_t *)&callback, &inOutLen); 116017fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(DeviceAuthCallback))) { 116117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_DEV_AUTH_CB); 116217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 116317fd14ceSopenharmony_ci } 116417fd14ceSopenharmony_ci ret = AddIpcCallBackByReqId( 116517fd14ceSopenharmony_ci authReqId, (const uint8_t *)callback, sizeof(DeviceAuthCallback), CB_TYPE_TMP_DEV_AUTH); 116617fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 116717fd14ceSopenharmony_ci return ret; 116817fd14ceSopenharmony_ci } 116917fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 117017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_CB_OBJECT, (uint8_t *)&cbObjIdx, &inOutLen); 117117fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 117217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_CB_OBJECT); 117317fd14ceSopenharmony_ci DelIpcCallBackByReqId(authReqId, CB_TYPE_TMP_DEV_AUTH, true); 117417fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 117517fd14ceSopenharmony_ci } 117617fd14ceSopenharmony_ci AddIpcCbObjByReqId(authReqId, cbObjIdx, CB_TYPE_TMP_DEV_AUTH); 117717fd14ceSopenharmony_ci InitDeviceAuthCbCtx(&g_authCbAdt, CB_TYPE_TMP_DEV_AUTH); 117817fd14ceSopenharmony_ci callRet = ProcessAuthDevice(authReqId, authParams, &g_authCbAdt); 117917fd14ceSopenharmony_ci if (callRet != HC_SUCCESS) { 118017fd14ceSopenharmony_ci DelIpcCallBackByReqId(authReqId, CB_TYPE_TMP_DEV_AUTH, true); 118117fd14ceSopenharmony_ci } 118217fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 118317fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 118417fd14ceSopenharmony_ci return ret; 118517fd14ceSopenharmony_ci} 118617fd14ceSopenharmony_ci 118717fd14ceSopenharmony_cistatic int32_t IpcServiceDaAuthDevice(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 118817fd14ceSopenharmony_ci{ 118917fd14ceSopenharmony_ci int32_t callRet; 119017fd14ceSopenharmony_ci int32_t ret; 119117fd14ceSopenharmony_ci DeviceAuthCallback *callback = NULL; 119217fd14ceSopenharmony_ci int64_t authReqId = 0; 119317fd14ceSopenharmony_ci const char *authParams = NULL; 119417fd14ceSopenharmony_ci int32_t inOutLen; 119517fd14ceSopenharmony_ci int32_t cbObjIdx = -1; 119617fd14ceSopenharmony_ci 119717fd14ceSopenharmony_ci LOGI("starting ..."); 119817fd14ceSopenharmony_ci inOutLen = sizeof(int64_t); 119917fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&authReqId, &inOutLen); 120017fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(int64_t))) { 120117fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 120217fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 120317fd14ceSopenharmony_ci } 120417fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_AUTH_PARAMS, (uint8_t *)&authParams, NULL); 120517fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (authParams == NULL)) { 120617fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_AUTH_PARAMS); 120717fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 120817fd14ceSopenharmony_ci } 120917fd14ceSopenharmony_ci inOutLen = sizeof(DeviceAuthCallback); 121017fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_DEV_AUTH_CB, (uint8_t *)&callback, &inOutLen); 121117fd14ceSopenharmony_ci if ((ret != HC_SUCCESS) || (inOutLen != sizeof(DeviceAuthCallback))) { 121217fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_DEV_AUTH_CB); 121317fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 121417fd14ceSopenharmony_ci } 121517fd14ceSopenharmony_ci ret = AddIpcCallBackByReqId( 121617fd14ceSopenharmony_ci authReqId, (const uint8_t *)callback, sizeof(DeviceAuthCallback), CB_TYPE_TMP_DEV_AUTH); 121717fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 121817fd14ceSopenharmony_ci LOGE("add ipc callback failed"); 121917fd14ceSopenharmony_ci return ret; 122017fd14ceSopenharmony_ci } 122117fd14ceSopenharmony_ci inOutLen = sizeof(int32_t); 122217fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_CB_OBJECT, (uint8_t *)&cbObjIdx, &inOutLen); 122317fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 122417fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_CB_OBJECT); 122517fd14ceSopenharmony_ci DelIpcCallBackByReqId(authReqId, CB_TYPE_TMP_DEV_AUTH, true); 122617fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 122717fd14ceSopenharmony_ci } 122817fd14ceSopenharmony_ci AddIpcCbObjByReqId(authReqId, cbObjIdx, CB_TYPE_TMP_DEV_AUTH); 122917fd14ceSopenharmony_ci InitDeviceAuthCbCtx(&g_authCbAdt, CB_TYPE_TMP_DEV_AUTH); 123017fd14ceSopenharmony_ci callRet = StartAuthDevice(authReqId, authParams, &g_authCbAdt); 123117fd14ceSopenharmony_ci if (callRet != HC_SUCCESS) { 123217fd14ceSopenharmony_ci DelIpcCallBackByReqId(authReqId, CB_TYPE_TMP_DEV_AUTH, true); 123317fd14ceSopenharmony_ci } 123417fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&callRet, sizeof(int32_t)); 123517fd14ceSopenharmony_ci LOGI("process done, call ret %d, ipc ret %d", callRet, ret); 123617fd14ceSopenharmony_ci return ret; 123717fd14ceSopenharmony_ci} 123817fd14ceSopenharmony_ci 123917fd14ceSopenharmony_cistatic int32_t IpcServiceDaCancelRequest(const IpcDataInfo *ipcParams, int32_t paramNum, uintptr_t outCache) 124017fd14ceSopenharmony_ci{ 124117fd14ceSopenharmony_ci int32_t ret; 124217fd14ceSopenharmony_ci int64_t requestId = 0; 124317fd14ceSopenharmony_ci const char *authParams = NULL; 124417fd14ceSopenharmony_ci 124517fd14ceSopenharmony_ci LOGI("starting ..."); 124617fd14ceSopenharmony_ci int32_t inOutLen = sizeof(int64_t); 124717fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_REQID, (uint8_t *)&requestId, &inOutLen); 124817fd14ceSopenharmony_ci if ((inOutLen != sizeof(requestId)) || (ret != HC_SUCCESS)) { 124917fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_REQID); 125017fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 125117fd14ceSopenharmony_ci } 125217fd14ceSopenharmony_ci ret = GetIpcRequestParamByType(ipcParams, paramNum, PARAM_TYPE_AUTH_PARAMS, (uint8_t *)&authParams, NULL); 125317fd14ceSopenharmony_ci if ((authParams == NULL) || (ret != HC_SUCCESS)) { 125417fd14ceSopenharmony_ci LOGE("get param error, type %d", PARAM_TYPE_AUTH_PARAMS); 125517fd14ceSopenharmony_ci return HC_ERR_IPC_BAD_PARAM; 125617fd14ceSopenharmony_ci } 125717fd14ceSopenharmony_ci ret = CancelAuthRequest(requestId, authParams); 125817fd14ceSopenharmony_ci DelIpcCallBackByReqId(requestId, CB_TYPE_TMP_DEV_AUTH, true); 125917fd14ceSopenharmony_ci ret = IpcEncodeCallReply(outCache, PARAM_TYPE_IPC_RESULT, (const uint8_t *)&ret, sizeof(int32_t)); 126017fd14ceSopenharmony_ci LOGI("process done, ipc ret %d", ret); 126117fd14ceSopenharmony_ci return ret; 126217fd14ceSopenharmony_ci} 126317fd14ceSopenharmony_ci 126417fd14ceSopenharmony_ci#ifndef DEV_AUTH_FUZZ_TEST 126517fd14ceSopenharmony_cistatic void DeMainRescInit(void) 126617fd14ceSopenharmony_ci{ 126717fd14ceSopenharmony_ci if (g_devGroupMgrMethod.unRegDataChangeListener != NULL) { 126817fd14ceSopenharmony_ci (void)g_devGroupMgrMethod.unRegDataChangeListener(SERVICE_APP_ID); 126917fd14ceSopenharmony_ci } 127017fd14ceSopenharmony_ci DeInitIpcCallBackList(); 127117fd14ceSopenharmony_ci} 127217fd14ceSopenharmony_ci#endif 127317fd14ceSopenharmony_ci 127417fd14ceSopenharmony_ciint32_t AddMethodMap(uintptr_t ipcInstance) 127517fd14ceSopenharmony_ci{ 127617fd14ceSopenharmony_ci uint32_t ret; 127717fd14ceSopenharmony_ci 127817fd14ceSopenharmony_ci // Group Manager Interfaces 127917fd14ceSopenharmony_ci ret = SetIpcCallMap(ipcInstance, IpcServiceGmRegCallback, IPC_CALL_ID_REG_CB); 128017fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmUnRegCallback, IPC_CALL_ID_UNREG_CB); 128117fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmRegDataChangeListener, IPC_CALL_ID_REG_LISTENER); 128217fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmUnRegDataChangeListener, IPC_CALL_ID_UNREG_LISTENER); 128317fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmCreateGroup, IPC_CALL_ID_CREATE_GROUP); 128417fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmDelGroup, IPC_CALL_ID_DEL_GROUP); 128517fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmAddMemberToGroup, IPC_CALL_ID_ADD_GROUP_MEMBER); 128617fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmDelMemberFromGroup, IPC_CALL_ID_DEL_GROUP_MEMBER); 128717fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmAddMultiMembersToGroup, IPC_CALL_ID_ADD_MULTI_GROUP_MEMBERS); 128817fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmDelMultiMembersFromGroup, IPC_CALL_ID_DEL_MULTI_GROUP_MEMBERS); 128917fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmProcessData, IPC_CALL_ID_GM_PROC_DATA); 129017fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmApplyRegisterInfo, IPC_CALL_ID_APPLY_REG_INFO); 129117fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmCheckAccessToGroup, IPC_CALL_ID_CHECK_ACCESS_TO_GROUP); 129217fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmGetPkInfoList, IPC_CALL_ID_GET_PK_INFO_LIST); 129317fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmGetGroupInfoById, IPC_CALL_ID_GET_GROUP_INFO); 129417fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmGetGroupInfo, IPC_CALL_ID_SEARCH_GROUPS); 129517fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmGetJoinedGroups, IPC_CALL_ID_GET_JOINED_GROUPS); 129617fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmGetRelatedGroups, IPC_CALL_ID_GET_RELATED_GROUPS); 129717fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmGetDeviceInfoById, IPC_CALL_ID_GET_DEV_INFO_BY_ID); 129817fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmGetTrustedDevices, IPC_CALL_ID_GET_TRUST_DEVICES); 129917fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmIsDeviceInGroup, IPC_CALL_ID_IS_DEV_IN_GROUP); 130017fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGmCancelRequest, IPC_CALL_GM_CANCEL_REQUEST); 130117fd14ceSopenharmony_ci 130217fd14ceSopenharmony_ci // Group Auth Interfaces 130317fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGaProcessData, IPC_CALL_ID_GA_PROC_DATA); 130417fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGaAuthDevice, IPC_CALL_ID_AUTH_DEVICE); 130517fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGaCancelRequest, IPC_CALL_GA_CANCEL_REQUEST); 130617fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGaGetRealInfo, IPC_CALL_ID_GET_REAL_INFO); 130717fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceGaGetPseudonymId, IPC_CALL_ID_GET_PSEUDONYM_ID); 130817fd14ceSopenharmony_ci 130917fd14ceSopenharmony_ci // Direct Auth Interfaces 131017fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceDaProcessCredential, IPC_CALL_ID_PROCESS_CREDENTIAL); 131117fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceDaAuthDevice, IPC_CALL_ID_DA_AUTH_DEVICE); 131217fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceDaProcessData, IPC_CALL_ID_DA_PROC_DATA); 131317fd14ceSopenharmony_ci ret &= SetIpcCallMap(ipcInstance, IpcServiceDaCancelRequest, IPC_CALL_ID_DA_CANCEL_REQUEST); 131417fd14ceSopenharmony_ci LOGI("process done, ret %u", ret); 131517fd14ceSopenharmony_ci return ret; 131617fd14ceSopenharmony_ci} 131717fd14ceSopenharmony_ci 131817fd14ceSopenharmony_ciint32_t MainRescInit(void) 131917fd14ceSopenharmony_ci{ 132017fd14ceSopenharmony_ci int32_t ret; 132117fd14ceSopenharmony_ci const DeviceGroupManager *gmInst = NULL; 132217fd14ceSopenharmony_ci const GroupAuthManager *gaInst = NULL; 132317fd14ceSopenharmony_ci 132417fd14ceSopenharmony_ci LOGI("starting ..."); 132517fd14ceSopenharmony_ci ret = InitIpcCallBackList(); 132617fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 132717fd14ceSopenharmony_ci return ret; 132817fd14ceSopenharmony_ci } 132917fd14ceSopenharmony_ci gmInst = GetGmInstance(); 133017fd14ceSopenharmony_ci gaInst = GetGaInstance(); 133117fd14ceSopenharmony_ci if ((gmInst == NULL) || (gaInst == NULL)) { 133217fd14ceSopenharmony_ci DeInitIpcCallBackList(); 133317fd14ceSopenharmony_ci LOGE("MainInit, GetGmInstance failed"); 133417fd14ceSopenharmony_ci return HC_ERROR; 133517fd14ceSopenharmony_ci } 133617fd14ceSopenharmony_ci g_devGroupMgrMethod = (DeviceGroupManager)(*gmInst); 133717fd14ceSopenharmony_ci g_groupAuthMgrMethod = (GroupAuthManager)(*gaInst); 133817fd14ceSopenharmony_ci InitDevAuthListenerCbCtx(&g_listenCbAdt); 133917fd14ceSopenharmony_ci ret = gmInst->regDataChangeListener(SERVICE_APP_ID, &g_listenCbAdt); 134017fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 134117fd14ceSopenharmony_ci DeInitIpcCallBackList(); 134217fd14ceSopenharmony_ci LOGE("MainInit, register ipc listener failed, ret %d", ret); 134317fd14ceSopenharmony_ci return HC_ERROR; 134417fd14ceSopenharmony_ci } 134517fd14ceSopenharmony_ci 134617fd14ceSopenharmony_ci LOGI("process done"); 134717fd14ceSopenharmony_ci return HC_SUCCESS; 134817fd14ceSopenharmony_ci} 134917fd14ceSopenharmony_ci 135017fd14ceSopenharmony_ci#ifndef DEV_AUTH_FUZZ_TEST 135117fd14ceSopenharmony_ciint32_t main(int32_t argc, char const *argv[]) 135217fd14ceSopenharmony_ci{ 135317fd14ceSopenharmony_ci int32_t ret; 135417fd14ceSopenharmony_ci HcCondition cond; 135517fd14ceSopenharmony_ci 135617fd14ceSopenharmony_ci (void)argc; 135717fd14ceSopenharmony_ci (void)argv; 135817fd14ceSopenharmony_ci LOGI("device authentication service starting ..."); 135917fd14ceSopenharmony_ci ret = InitDeviceAuthService(); 136017fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 136117fd14ceSopenharmony_ci LOGE("device auth service main, InitDeviceAuthService failed, ret %d", ret); 136217fd14ceSopenharmony_ci return 1; 136317fd14ceSopenharmony_ci } 136417fd14ceSopenharmony_ci 136517fd14ceSopenharmony_ci ret = MainRescInit(); 136617fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 136717fd14ceSopenharmony_ci DestroyDeviceAuthService(); 136817fd14ceSopenharmony_ci LOGE("device auth service main, init work failed"); 136917fd14ceSopenharmony_ci return 1; 137017fd14ceSopenharmony_ci } 137117fd14ceSopenharmony_ci 137217fd14ceSopenharmony_ci uintptr_t serviceInstance = 0x0; 137317fd14ceSopenharmony_ci ret = CreateServiceInstance(&serviceInstance); 137417fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 137517fd14ceSopenharmony_ci LOGE("Failed to create device auth service instance!"); 137617fd14ceSopenharmony_ci DeMainRescInit(); 137717fd14ceSopenharmony_ci DestroyDeviceAuthService(); 137817fd14ceSopenharmony_ci return 1; 137917fd14ceSopenharmony_ci } 138017fd14ceSopenharmony_ci (void)AddMethodMap(serviceInstance); 138117fd14ceSopenharmony_ci ret = AddDevAuthServiceToManager(serviceInstance); 138217fd14ceSopenharmony_ci if (ret != HC_SUCCESS) { 138317fd14ceSopenharmony_ci DestroyServiceInstance(serviceInstance); 138417fd14ceSopenharmony_ci DeMainRescInit(); 138517fd14ceSopenharmony_ci DestroyDeviceAuthService(); 138617fd14ceSopenharmony_ci LOGE("device auth service main, AddDevAuthServiceToManager failed, ret %d", ret); 138717fd14ceSopenharmony_ci return 1; 138817fd14ceSopenharmony_ci } 138917fd14ceSopenharmony_ci LOGI("device authentication service register to IPC manager done, service running..."); 139017fd14ceSopenharmony_ci (void)memset_s(&cond, sizeof(cond), 0, sizeof(cond)); 139117fd14ceSopenharmony_ci InitHcCond(&cond, NULL); 139217fd14ceSopenharmony_ci cond.wait(&cond); 139317fd14ceSopenharmony_ci DestroyHcCond(&cond); 139417fd14ceSopenharmony_ci return 0; 139517fd14ceSopenharmony_ci} 139617fd14ceSopenharmony_ci#endif 139717fd14ceSopenharmony_ci 139817fd14ceSopenharmony_ci#ifdef __cplusplus 139917fd14ceSopenharmony_ci} 140017fd14ceSopenharmony_ci#endif 1401