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#ifndef COMMON_DEFS_H
1717fd14ceSopenharmony_ci#define COMMON_DEFS_H
1817fd14ceSopenharmony_ci
1917fd14ceSopenharmony_ci#include "device_auth.h"
2017fd14ceSopenharmony_ci#include "device_auth_defines.h"
2117fd14ceSopenharmony_ci#include "hc_string.h"
2217fd14ceSopenharmony_ci#include "hc_vector.h"
2317fd14ceSopenharmony_ci#include "json_utils.h"
2417fd14ceSopenharmony_ci
2517fd14ceSopenharmony_ci#define FIELD_DEVICE_PK "devicePk"
2617fd14ceSopenharmony_ci#define FIELD_UDID "udid"
2717fd14ceSopenharmony_ci#define FIELD_PK_INFO_SIGNATURE "pkInfoSignature"
2817fd14ceSopenharmony_ci#define FIELD_CREDENTIAL "credential"
2917fd14ceSopenharmony_ci#define FIELD_SERVER_PK "serverPk"
3017fd14ceSopenharmony_ci
3117fd14ceSopenharmony_ci#define FIELD_ADD_TYPE "addType"
3217fd14ceSopenharmony_ci#define FIELD_ADD_ID "addId"
3317fd14ceSopenharmony_ci#define FIELD_ADD_KEY "addKey"
3417fd14ceSopenharmony_ci#define FIELD_AUTH_DATA "authData"
3517fd14ceSopenharmony_ci#define FIELD_AUTH_RETURN "authReturn"
3617fd14ceSopenharmony_ci#define FIELD_AUTH_ID "authId"
3717fd14ceSopenharmony_ci#define FIELD_AUTH_PK "authPk"
3817fd14ceSopenharmony_ci#define FIELD_ADD_AUTH_INFO "addAuthInfo"
3917fd14ceSopenharmony_ci#define FIELD_ADD_RETURN "addReturn"
4017fd14ceSopenharmony_ci#define FIELD_APP_ID "appId"
4117fd14ceSopenharmony_ci#define FIELD_BIND_SESSION_TYPE "bindSessionType"
4217fd14ceSopenharmony_ci#define FIELD_CHALLENGE "challenge"
4317fd14ceSopenharmony_ci#define FIELD_CHANNEL_ID "channelId"
4417fd14ceSopenharmony_ci#define FIELD_CHANNEL_TYPE "channelType"
4517fd14ceSopenharmony_ci#define FIELD_CONN_DEVICE_ID "connDeviceId"
4617fd14ceSopenharmony_ci#define FIELD_CONNECT_PARAMS "connectParams"
4717fd14ceSopenharmony_ci#define FIELD_CROSS_USER_ID_LIST "crossUserIdList"
4817fd14ceSopenharmony_ci#define FIELD_CURRENT_VERSION "currentVersion"
4917fd14ceSopenharmony_ci#define FIELD_DELETE_ID "deleteId"
5017fd14ceSopenharmony_ci#define FIELD_DELETED_RESULT "deletedResult"
5117fd14ceSopenharmony_ci#define FIELD_DEVICE_CLOUD_CREDENTIAL "devCloudCred"
5217fd14ceSopenharmony_ci#define FIELD_DEV_ID "devId"
5317fd14ceSopenharmony_ci#define FIELD_DEVICES_CREDENTIAL "devicesCredential"
5417fd14ceSopenharmony_ci#define FIELD_ENC_AUTH_TOKEN "encAuthToken"
5517fd14ceSopenharmony_ci#define FIELD_ENC_RESULT "encResult"
5617fd14ceSopenharmony_ci#define FIELD_ENC_DATA "encData"
5717fd14ceSopenharmony_ci#define FIELD_EPK "epk"
5817fd14ceSopenharmony_ci#define FIELD_EPK_LEN "epkLen"
5917fd14ceSopenharmony_ci#define FIELD_EX_AUTH_INFO "exAuthInfo"
6017fd14ceSopenharmony_ci#define FIELD_EXPIRE_TIME "expireTime"
6117fd14ceSopenharmony_ci#define FIELD_ERROR_CODE "errorCode"
6217fd14ceSopenharmony_ci#define FIELD_GROUP_INFO "groupInfo"
6317fd14ceSopenharmony_ci#define FIELD_GROUP_MANAGERS "groupManagers"
6417fd14ceSopenharmony_ci#define FIELD_GROUP_NAME "groupName"
6517fd14ceSopenharmony_ci#define FIELD_GROUP_OP "groupOp"
6617fd14ceSopenharmony_ci#define FIELD_GROUP_TYPE "groupType"
6717fd14ceSopenharmony_ci#define FIELD_GROUP_VISIBILITY "groupVisibility"
6817fd14ceSopenharmony_ci#define FIELD_IS_ADMIN "isAdmin"
6917fd14ceSopenharmony_ci#define FIELD_IS_ACCOUNT_BIND "isAccountBind"
7017fd14ceSopenharmony_ci#define FIELD_IS_BIND "isBind"
7117fd14ceSopenharmony_ci#define FIELD_IS_FORCE_DELETE "isForceDelete"
7217fd14ceSopenharmony_ci#define FIELD_IS_CREDENTIAL_EXISTS "isCredentialExists"
7317fd14ceSopenharmony_ci#define FIELD_IS_DIRECT_AUTH "isDirectAuth"
7417fd14ceSopenharmony_ci#define FIELD_KCF_DATA "kcfData"
7517fd14ceSopenharmony_ci#define FIELD_KEY_TYPE "keyType"
7617fd14ceSopenharmony_ci#define FIELD_TRUST_TYPE "trustType"
7717fd14ceSopenharmony_ci#define FIELD_MESSAGE "message"
7817fd14ceSopenharmony_ci#define FIELD_GROUP_ERROR_MSG "groupErrorMsg"
7917fd14ceSopenharmony_ci#define FIELD_MIN_VERSION "minVersion"
8017fd14ceSopenharmony_ci#define FIELD_GROUP_AND_MODULE_VERSION "groupAndModuleVersion"
8117fd14ceSopenharmony_ci#define FIELD_NONCE "nonce"
8217fd14ceSopenharmony_ci#define FIELD_OP_CODE "opCode"
8317fd14ceSopenharmony_ci#define FIELD_OPERATION_CODE "operationCode"
8417fd14ceSopenharmony_ci#define FIELD_OPERATION_PARAMS "operationParams"
8517fd14ceSopenharmony_ci#define FIELD_OWNER_ID "ownerId"
8617fd14ceSopenharmony_ci#define FIELD_OWNER_NAME "ownerName"
8717fd14ceSopenharmony_ci#define FIELD_PERMISSION "Permission"
8817fd14ceSopenharmony_ci#define FIELD_PAYLOAD "payload"
8917fd14ceSopenharmony_ci#define FIELD_PIN_CODE "pinCode"
9017fd14ceSopenharmony_ci#define FIELD_PUBLIC_KEY "publicKey"
9117fd14ceSopenharmony_ci#define FIELD_SIGN_ALG "signAlg"
9217fd14ceSopenharmony_ci#define FIELD_PK_INFO "pkInfo"
9317fd14ceSopenharmony_ci#define FIELD_REAL_INFO "realInfo"
9417fd14ceSopenharmony_ci#define FIELD_PSEUDONYM_ID "pseudonymId"
9517fd14ceSopenharmony_ci#define FIELD_INDEX_KEY "indexKey"
9617fd14ceSopenharmony_ci#define FIELD_PKG_NAME "pkgName"
9717fd14ceSopenharmony_ci#define FIELD_SELF_AUTH_ID "selfAuthId"
9817fd14ceSopenharmony_ci#define FIELD_SELF_DEVICE_ID "selfDeviceId"
9917fd14ceSopenharmony_ci#define FIELD_SELF_DEV_ID "selfDevId"
10017fd14ceSopenharmony_ci#define FIELD_SELF_USER_ID "selfUserId"
10117fd14ceSopenharmony_ci#define FIELD_REQUEST_ID "requestId"
10217fd14ceSopenharmony_ci#define FIELD_RECEIVED_DATA "receivedData"
10317fd14ceSopenharmony_ci#define FIELD_RETURN_CODE "returnCode"
10417fd14ceSopenharmony_ci#define FIELD_RETURN_DATA "returnData"
10517fd14ceSopenharmony_ci#define FIELD_RETURN_CODE_MAC "returnCodeMac"
10617fd14ceSopenharmony_ci#define FIELD_RMV_TYPE "rmvType"
10717fd14ceSopenharmony_ci#define FIELD_RMV_ID "rmvId"
10817fd14ceSopenharmony_ci#define FIELD_RMV_AUTH_INFO "rmvAuthInfo"
10917fd14ceSopenharmony_ci#define FIELD_RMV_RETURN "rmvReturn"
11017fd14ceSopenharmony_ci#define FIELD_SALT "salt"
11117fd14ceSopenharmony_ci#define FIELD_ISO_SALT "isoSalt"
11217fd14ceSopenharmony_ci#define FIELD_SEED "seed"
11317fd14ceSopenharmony_ci#define FIELD_SELF_TYPE "selfType"
11417fd14ceSopenharmony_ci#define FIELD_SEND_TO_PEER "sendToPeer"
11517fd14ceSopenharmony_ci#define FIELD_SEND_TO_SELF "sendToSelf"
11617fd14ceSopenharmony_ci#define FIELD_SHARED_USER_ID_LIST "sharedUserIdList"
11717fd14ceSopenharmony_ci#define FIELD_SUPPORT_256_MOD "support256mod"
11817fd14ceSopenharmony_ci#define FIELD_TOKEN "token"
11917fd14ceSopenharmony_ci#define FIELD_IS_UUID "uuIdAsDeviceId"
12017fd14ceSopenharmony_ci#define FIELD_VERSION "version"
12117fd14ceSopenharmony_ci#define FIELD_MK_AGREE_MSG "mkaMsg"
12217fd14ceSopenharmony_ci#define FIELD_PEER_ID_FROM_REQUEST "peerIdFromRequest"
12317fd14ceSopenharmony_ci#define FIELD_STEP "step"
12417fd14ceSopenharmony_ci#define FIELD_DATA "data"
12517fd14ceSopenharmony_ci#define FIELD_EPK "epk"
12617fd14ceSopenharmony_ci#define FIELD_AUTH_KEY_ALG_ENCODE "authKeyAlgEncode"
12717fd14ceSopenharmony_ci#define FIELD_AUTH_PK_INFO "authPkInfo"
12817fd14ceSopenharmony_ci#define FIELD_AUTH_PK_INFO_SIGN "authPkInfoSign"
12917fd14ceSopenharmony_ci#define FIELD_AUTH_RESULT_MAC "authResultMac"
13017fd14ceSopenharmony_ci#define FIELD_LOCAL_DEVICE_TYPE "localDeviceType"
13117fd14ceSopenharmony_ci#define FIELD_PLUGIN_EXT_DATA "originPeerData"
13217fd14ceSopenharmony_ci#define FIELD_META_NODE_TYPE "metaNodeType"
13317fd14ceSopenharmony_ci#define FIELD_UPGRADE_FLAG "upgradeFlag"
13417fd14ceSopenharmony_ci
13517fd14ceSopenharmony_ci#define INVALID_MODULE_TYPE (-1)
13617fd14ceSopenharmony_ci#define GROUP_ERR_MSG 0x8080
13717fd14ceSopenharmony_ci
13817fd14ceSopenharmony_ci#define CLIENT 1
13917fd14ceSopenharmony_ci#define SERVER 0
14017fd14ceSopenharmony_ci
14117fd14ceSopenharmony_ci#define CREATE_KEY_PAIR 1
14217fd14ceSopenharmony_ci#define DELETE_KEY_PAIR 2
14317fd14ceSopenharmony_ci
14417fd14ceSopenharmony_ci/* DefaultValue */
14517fd14ceSopenharmony_ci#define DEFAULT_MEMORY_SIZE 64
14617fd14ceSopenharmony_ci#define DEFAULT_USER_ID_HASH ""
14717fd14ceSopenharmony_ci#define DEFAULT_REQUEST_ID 0
14817fd14ceSopenharmony_ci#define DEFAULT_CHANNEL_ID (-1)
14917fd14ceSopenharmony_ci#define DEFAULT_EXPIRE_TIME 90
15017fd14ceSopenharmony_ci#define DEFAULT_SERVICE_TYPE "service.type.default"
15117fd14ceSopenharmony_ci#define SERVICE_TYPE_IMPORT "service.type.import"
15217fd14ceSopenharmony_ci#define DEFAULT_PACKAGE_NAME "deviceauth_service"
15317fd14ceSopenharmony_ci#define GROUP_MANAGER_PACKAGE_NAME "com.huawei.devicegroupmanage"
15417fd14ceSopenharmony_ci#define DM_APP_ID "ohos.distributedhardware.devicemanager"
15517fd14ceSopenharmony_ci#define SOFTBUS_APP_ID "softbus_auth"
15617fd14ceSopenharmony_ci#define DEFAULT_RETURN_KEY_LENGTH 32
15717fd14ceSopenharmony_ci#define MAX_BUFFER_LEN 1024
15817fd14ceSopenharmony_ci#define MAX_DATA_BUFFER_SIZE 4096
15917fd14ceSopenharmony_ci#define MAX_AUTH_ID_LEN 256
16017fd14ceSopenharmony_ci
16117fd14ceSopenharmony_ci#define IS_UPGRADE 1
16217fd14ceSopenharmony_ci#define IS_NOT_UPGRADE 0
16317fd14ceSopenharmony_ci
16417fd14ceSopenharmony_ci#define COMPATIBLE_GROUP 512
16517fd14ceSopenharmony_ci#define GROUP_TYPE_INVALID (-1)
16617fd14ceSopenharmony_ci#define INVALID_OS_ACCOUNT (-1)
16717fd14ceSopenharmony_ci#define ALL_GROUP_VISIBILITY (-2)
16817fd14ceSopenharmony_ci#define INVALID_CRED 0
16917fd14ceSopenharmony_ci#define PUBLIC_KEY_MAX_LENGTH 128
17017fd14ceSopenharmony_ci#define PIN_CODE_LEN_SHORT 6
17117fd14ceSopenharmony_ci#define PIN_CODE_LEN_LONG 128
17217fd14ceSopenharmony_ci#define INVALID_PROTOCOL_EXPAND_VALUE (-1)
17317fd14ceSopenharmony_ci
17417fd14ceSopenharmony_citypedef enum {
17517fd14ceSopenharmony_ci    NO_CHANNEL = 1,
17617fd14ceSopenharmony_ci    SERVICE_CHANNEL = 2,
17717fd14ceSopenharmony_ci    SOFT_BUS = 3,
17817fd14ceSopenharmony_ci} ChannelType;
17917fd14ceSopenharmony_ci
18017fd14ceSopenharmony_citypedef enum {
18117fd14ceSopenharmony_ci    SELF_CREATED = 0,
18217fd14ceSopenharmony_ci    IMPORTED_FROM_CLOUD = 1,
18317fd14ceSopenharmony_ci} RelationShipSource;
18417fd14ceSopenharmony_ci
18517fd14ceSopenharmony_ci#define MAX_IN_PARAM_LEN 4096
18617fd14ceSopenharmony_ci
18717fd14ceSopenharmony_ci#define CHECK_PTR_RETURN_NULL(ptr, paramTag) \
18817fd14ceSopenharmony_ci    do { \
18917fd14ceSopenharmony_ci        if ((ptr) == NULL) { \
19017fd14ceSopenharmony_ci            LOGE(paramTag " is null ptr"); \
19117fd14ceSopenharmony_ci            return NULL; \
19217fd14ceSopenharmony_ci        } \
19317fd14ceSopenharmony_ci    } while (0)
19417fd14ceSopenharmony_ci
19517fd14ceSopenharmony_ci#define CHECK_PTR_RETURN_ERROR_CODE(ptr, paramTag) \
19617fd14ceSopenharmony_ci    do { \
19717fd14ceSopenharmony_ci        if ((ptr) == NULL) { \
19817fd14ceSopenharmony_ci            LOGE(paramTag " is null ptr"); \
19917fd14ceSopenharmony_ci            return HC_ERR_NULL_PTR; \
20017fd14ceSopenharmony_ci        } \
20117fd14ceSopenharmony_ci    } while (0)
20217fd14ceSopenharmony_ci
20317fd14ceSopenharmony_ci#define CHECK_PTR_RETURN_NONE(ptr, paramTag) \
20417fd14ceSopenharmony_ci        do { \
20517fd14ceSopenharmony_ci            if ((ptr) == NULL) { \
20617fd14ceSopenharmony_ci                LOGE(paramTag " is null ptr"); \
20717fd14ceSopenharmony_ci                return; \
20817fd14ceSopenharmony_ci            } \
20917fd14ceSopenharmony_ci        } while (0)
21017fd14ceSopenharmony_ci
21117fd14ceSopenharmony_ci#define GOTO_IF_ERR(x) do { \
21217fd14ceSopenharmony_ci        int32_t res = x; \
21317fd14ceSopenharmony_ci        if ((res) != HC_SUCCESS) { \
21417fd14ceSopenharmony_ci            goto ERR; \
21517fd14ceSopenharmony_ci        } \
21617fd14ceSopenharmony_ci    } while (0)
21717fd14ceSopenharmony_ci
21817fd14ceSopenharmony_ci#define GOTO_IF_CHECK_NULL(ptr, paramTag) \
21917fd14ceSopenharmony_ci    do { \
22017fd14ceSopenharmony_ci        if ((ptr) == NULL) { \
22117fd14ceSopenharmony_ci            LOGE(paramTag " is null ptr"); \
22217fd14ceSopenharmony_ci            goto ERR; \
22317fd14ceSopenharmony_ci        } \
22417fd14ceSopenharmony_ci    } while (0)
22517fd14ceSopenharmony_ci
22617fd14ceSopenharmony_ci#define GOTO_ERR_AND_SET_RET(x, res) do { \
22717fd14ceSopenharmony_ci        res = x; \
22817fd14ceSopenharmony_ci        if ((res) != HC_SUCCESS) { \
22917fd14ceSopenharmony_ci            goto ERR; \
23017fd14ceSopenharmony_ci        } \
23117fd14ceSopenharmony_ci    } while (0)
23217fd14ceSopenharmony_ci
23317fd14ceSopenharmony_ci#define RETURN_IF_ERR(x) do { \
23417fd14ceSopenharmony_ci        int32_t res = x; \
23517fd14ceSopenharmony_ci        if ((res) != HC_SUCCESS) { \
23617fd14ceSopenharmony_ci            return res; \
23717fd14ceSopenharmony_ci        } \
23817fd14ceSopenharmony_ci    } while (0)
23917fd14ceSopenharmony_ci
24017fd14ceSopenharmony_citypedef enum {
24117fd14ceSopenharmony_ci    ACCOUNT_RELATED_PLUGIN = 0x0010,
24217fd14ceSopenharmony_ci} EnumCredPluginType;
24317fd14ceSopenharmony_ci
24417fd14ceSopenharmony_citypedef enum {
24517fd14ceSopenharmony_ci    DAS_MODULE = 0x0001,
24617fd14ceSopenharmony_ci    ACCOUNT_MODULE = 0x0010,
24717fd14ceSopenharmony_ci} EnumModuleType;
24817fd14ceSopenharmony_ci
24917fd14ceSopenharmony_citypedef enum {
25017fd14ceSopenharmony_ci    CONTINUE = 0,
25117fd14ceSopenharmony_ci    IGNORE_MSG = 1,
25217fd14ceSopenharmony_ci    FINISH,
25317fd14ceSopenharmony_ci} TaskStatus;
25417fd14ceSopenharmony_ci
25517fd14ceSopenharmony_citypedef enum {
25617fd14ceSopenharmony_ci    CODE_NULL = 0,
25717fd14ceSopenharmony_ci    OP_BIND = 1,
25817fd14ceSopenharmony_ci    AUTHENTICATE = 2,
25917fd14ceSopenharmony_ci    ADD_AUTH_INFO = 3,
26017fd14ceSopenharmony_ci    REMOVE_AUTH_INFO = 4,
26117fd14ceSopenharmony_ci    OP_UNBIND = 5,
26217fd14ceSopenharmony_ci    AUTH_KEY_AGREEMENT = 6,
26317fd14ceSopenharmony_ci    REGISTER = 7,
26417fd14ceSopenharmony_ci    SECURE_CLONE = 8,
26517fd14ceSopenharmony_ci} OperationCode;
26617fd14ceSopenharmony_ci
26717fd14ceSopenharmony_citypedef enum {
26817fd14ceSopenharmony_ci    IMPORT_SELF_CREDENTIAL = 0,
26917fd14ceSopenharmony_ci    DELETE_SELF_CREDENTIAL = 1,
27017fd14ceSopenharmony_ci    QUERY_SELF_CREDENTIAL_INFO = 2,
27117fd14ceSopenharmony_ci    IMPORT_TRUSTED_CREDENTIALS = 3,
27217fd14ceSopenharmony_ci    DELETE_TRUSTED_CREDENTIALS = 4,
27317fd14ceSopenharmony_ci    QUERY_TRUSTED_CREDENTIALS = 5,
27417fd14ceSopenharmony_ci    REQUEST_SIGNATURE = 6,
27517fd14ceSopenharmony_ci    GET_SHARED_SECRET_BY_PEER_CERT = 8,
27617fd14ceSopenharmony_ci    UPGRADE_DATA = 10,
27717fd14ceSopenharmony_ci    CHECK_UPGRADE_IDENTITY = 11,
27817fd14ceSopenharmony_ci    CHECK_UPGRADE_DATA = 12,
27917fd14ceSopenharmony_ci} CredentialCode;
28017fd14ceSopenharmony_ci
28117fd14ceSopenharmony_ci#endif
282