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 DEVICE_AUTH_H 1717fd14ceSopenharmony_ci#define DEVICE_AUTH_H 1817fd14ceSopenharmony_ci 1917fd14ceSopenharmony_ci#include <stdint.h> 2017fd14ceSopenharmony_ci#include <stdbool.h> 2117fd14ceSopenharmony_ci 2217fd14ceSopenharmony_ci#if defined(__LINUX__) || defined(_UNIX) 2317fd14ceSopenharmony_ci#define DEVICE_AUTH_API_PUBLIC __attribute__ ((visibility("default"))) 2417fd14ceSopenharmony_ci#else 2517fd14ceSopenharmony_ci#define DEVICE_AUTH_API_PUBLIC 2617fd14ceSopenharmony_ci#endif 2717fd14ceSopenharmony_ci 2817fd14ceSopenharmony_ci#define FIELD_GROUP_ID "groupId" 2917fd14ceSopenharmony_ci#define FIELD_GROUP_TYPE "groupType" 3017fd14ceSopenharmony_ci#define FIELD_GROUP_NAME "groupName" 3117fd14ceSopenharmony_ci#define FIELD_PEER_DEVICE_ID "peerDeviceId" 3217fd14ceSopenharmony_ci#define FIELD_IS_ADMIN "isAdmin" 3317fd14ceSopenharmony_ci#define FIELD_CREDENTIAL_TYPE "credentialType" 3417fd14ceSopenharmony_ci#define FIELD_IS_FORCE_DELETE "isForceDelete" 3517fd14ceSopenharmony_ci#define FIELD_IS_IGNORE_CHANNEL "isIgnoreChannel" 3617fd14ceSopenharmony_ci#define FIELD_CONNECT_PARAMS "connectParams" 3717fd14ceSopenharmony_ci#define FIELD_ADD_ID "addId" 3817fd14ceSopenharmony_ci#define FIELD_DELETE_ID "deleteId" 3917fd14ceSopenharmony_ci#define FIELD_APP_ID "appId" 4017fd14ceSopenharmony_ci#define FIELD_SERVICE_TYPE "serviceType" 4117fd14ceSopenharmony_ci#define FIELD_IS_DEVICE_LEVEL "isDeviceLevel" 4217fd14ceSopenharmony_ci#define FIELD_ALTERNATIVE "alternative" 4317fd14ceSopenharmony_ci#define FIELD_PEER_UDID "peerUdid" 4417fd14ceSopenharmony_ci#define FIELD_PEER_CONN_DEVICE_ID "peerConnDeviceId" 4517fd14ceSopenharmony_ci#define FIELD_KEY_LENGTH "keyLength" 4617fd14ceSopenharmony_ci#define FIELD_IS_CLIENT "isClient" 4717fd14ceSopenharmony_ci#define FIELD_SESSION_KEY "sessionKey" 4817fd14ceSopenharmony_ci#define FIELD_AUTH_FORM "authForm" 4917fd14ceSopenharmony_ci#define FIELD_CONFIRMATION "confirmation" 5017fd14ceSopenharmony_ci#define FIELD_GROUP_OWNER "groupOwner" 5117fd14ceSopenharmony_ci#define FIELD_PEER_AUTH_ID "peerAuthId" 5217fd14ceSopenharmony_ci#define FIELD_PEER_USER_TYPE "peerUserType" 5317fd14ceSopenharmony_ci#define FIELD_PEER_USER_ID "peerUserId" 5417fd14ceSopenharmony_ci#define FIELD_SERVICE_PKG_NAME "servicePkgName" 5517fd14ceSopenharmony_ci#define FIELD_USER_TYPE "userType" 5617fd14ceSopenharmony_ci#define FIELD_USER_ID "userId" 5717fd14ceSopenharmony_ci#define FIELD_SHARED_USER_ID "sharedUserId" 5817fd14ceSopenharmony_ci#define FIELD_OWNER_USER_ID "ownerUserId" 5917fd14ceSopenharmony_ci#define FIELD_DEVICE_ID "deviceId" 6017fd14ceSopenharmony_ci#define FIELD_PIN_CODE "pinCode" 6117fd14ceSopenharmony_ci#define FIELD_AUTH_ID "authId" 6217fd14ceSopenharmony_ci#define FIELD_UDID "udid" 6317fd14ceSopenharmony_ci#define FIELD_IS_SELF_PK "isSelfPk" 6417fd14ceSopenharmony_ci#define FIELD_GROUP_VISIBILITY "groupVisibility" 6517fd14ceSopenharmony_ci#define FIELD_EXPIRE_TIME "expireTime" 6617fd14ceSopenharmony_ci#define FIELD_IS_DELETE_ALL "isDeleteAll" 6717fd14ceSopenharmony_ci#define FIELD_OS_ACCOUNT_ID "osAccountId" 6817fd14ceSopenharmony_ci#define FIELD_ACQURIED_TYPE "acquireType" 6917fd14ceSopenharmony_ci#define FIELD_CRED_OP_FLAG "flag" 7017fd14ceSopenharmony_ci#define FIELD_CRED_OP_RESULT "result" 7117fd14ceSopenharmony_ci#define FIELD_AUTH_CODE "authCode" 7217fd14ceSopenharmony_ci#define FIELD_DEVICE_LIST "deviceList" 7317fd14ceSopenharmony_ci#define FIELD_IS_UDID_HASH "isUdidHash" 7417fd14ceSopenharmony_ci#define FIELD_PROTOCOL_EXPAND "protocolExpand" 7517fd14ceSopenharmony_ci#define FIELD_IS_SELF_FROM_UPGRADE "isSelfFromUpgrade" 7617fd14ceSopenharmony_ci#define FIELD_IS_PEER_FROM_UPGRADE "isPeerFromUpgrade" 7717fd14ceSopenharmony_ci 7817fd14ceSopenharmony_ci/** 7917fd14ceSopenharmony_ci * @brief protocol expand value for bind 8017fd14ceSopenharmony_ci */ 8117fd14ceSopenharmony_citypedef enum { 8217fd14ceSopenharmony_ci /** use this flag to support bind base on symmetric credential when interact with lite device */ 8317fd14ceSopenharmony_ci LITE_PROTOCOL_STANDARD_MODE = 1, 8417fd14ceSopenharmony_ci /** use this flag when interact with lite device which used iso with short pin */ 8517fd14ceSopenharmony_ci LITE_PROTOCOL_COMPATIBILITY_MODE = 2, 8617fd14ceSopenharmony_ci} ProtocolExpandValue; 8717fd14ceSopenharmony_ci 8817fd14ceSopenharmony_ci/** 8917fd14ceSopenharmony_ci * @brief type of local system account 9017fd14ceSopenharmony_ci */ 9117fd14ceSopenharmony_citypedef enum { 9217fd14ceSopenharmony_ci /** default local system account */ 9317fd14ceSopenharmony_ci DEFAULT_OS_ACCOUNT = 0, 9417fd14ceSopenharmony_ci /** the local system account of foreground user */ 9517fd14ceSopenharmony_ci ANY_OS_ACCOUNT = -2, 9617fd14ceSopenharmony_ci} OsAccountEnum; 9717fd14ceSopenharmony_ci 9817fd14ceSopenharmony_ci/** 9917fd14ceSopenharmony_ci * @brief describes all group types 10017fd14ceSopenharmony_ci */ 10117fd14ceSopenharmony_citypedef enum { 10217fd14ceSopenharmony_ci /** refers to all group types and is used to query group information */ 10317fd14ceSopenharmony_ci ALL_GROUP = 0, 10417fd14ceSopenharmony_ci /** group type of the same clound account */ 10517fd14ceSopenharmony_ci IDENTICAL_ACCOUNT_GROUP = 1, 10617fd14ceSopenharmony_ci /** group type of the p2p binding */ 10717fd14ceSopenharmony_ci PEER_TO_PEER_GROUP = 256, 10817fd14ceSopenharmony_ci /** group type shared to other cloud accounts */ 10917fd14ceSopenharmony_ci ACROSS_ACCOUNT_AUTHORIZE_GROUP = 1282 11017fd14ceSopenharmony_ci} GroupType; 11117fd14ceSopenharmony_ci 11217fd14ceSopenharmony_ci/** 11317fd14ceSopenharmony_ci * @brief describes all group visibility types 11417fd14ceSopenharmony_ci */ 11517fd14ceSopenharmony_citypedef enum { 11617fd14ceSopenharmony_ci /** visibility type of private group */ 11717fd14ceSopenharmony_ci GROUP_VISIBILITY_PRIVATE = 0, 11817fd14ceSopenharmony_ci /** visibility type of public group */ 11917fd14ceSopenharmony_ci GROUP_VISIBILITY_PUBLIC = -1 12017fd14ceSopenharmony_ci} GroupVisibility; 12117fd14ceSopenharmony_ci 12217fd14ceSopenharmony_ci/** 12317fd14ceSopenharmony_ci * @brief describes all group operation codes 12417fd14ceSopenharmony_ci */ 12517fd14ceSopenharmony_citypedef enum { 12617fd14ceSopenharmony_ci /** opeation code for group creation */ 12717fd14ceSopenharmony_ci GROUP_CREATE = 0, 12817fd14ceSopenharmony_ci /** opeation code for group destruction */ 12917fd14ceSopenharmony_ci GROUP_DISBAND = 1, 13017fd14ceSopenharmony_ci /** opeation code for inviting the peer device to join the local trusted group */ 13117fd14ceSopenharmony_ci MEMBER_INVITE = 2, 13217fd14ceSopenharmony_ci /** opeation code for joining the peer trusted group */ 13317fd14ceSopenharmony_ci MEMBER_JOIN = 3, 13417fd14ceSopenharmony_ci /** opeation code for unbinding with peer device */ 13517fd14ceSopenharmony_ci MEMBER_DELETE = 4, 13617fd14ceSopenharmony_ci} GroupOperationCode; 13717fd14ceSopenharmony_ci 13817fd14ceSopenharmony_ci/** 13917fd14ceSopenharmony_ci * @brief describes all group authentication types 14017fd14ceSopenharmony_ci */ 14117fd14ceSopenharmony_citypedef enum { 14217fd14ceSopenharmony_ci /** invalid group authentication type */ 14317fd14ceSopenharmony_ci AUTH_FORM_INVALID_TYPE = -1, 14417fd14ceSopenharmony_ci /** p2p group authentication type */ 14517fd14ceSopenharmony_ci AUTH_FORM_ACCOUNT_UNRELATED = 0, 14617fd14ceSopenharmony_ci /** group authentication type of the same cloud account */ 14717fd14ceSopenharmony_ci AUTH_FORM_IDENTICAL_ACCOUNT = 1, 14817fd14ceSopenharmony_ci /** group authentication type shared to other cloud accounts */ 14917fd14ceSopenharmony_ci AUTH_FORM_ACROSS_ACCOUNT = 2, 15017fd14ceSopenharmony_ci} GroupAuthForm; 15117fd14ceSopenharmony_ci 15217fd14ceSopenharmony_ci/** 15317fd14ceSopenharmony_ci * @brief describes all credential types 15417fd14ceSopenharmony_ci */ 15517fd14ceSopenharmony_citypedef enum { 15617fd14ceSopenharmony_ci /** symmetrical credential type */ 15717fd14ceSopenharmony_ci SYMMETRIC_CRED = 1, 15817fd14ceSopenharmony_ci /** asymmetric credential type */ 15917fd14ceSopenharmony_ci ASYMMETRIC_CRED = 2, 16017fd14ceSopenharmony_ci} CredType; 16117fd14ceSopenharmony_ci 16217fd14ceSopenharmony_ci/** 16317fd14ceSopenharmony_ci * @brief describes all device types 16417fd14ceSopenharmony_ci */ 16517fd14ceSopenharmony_citypedef enum { 16617fd14ceSopenharmony_ci /** device type is accessory */ 16717fd14ceSopenharmony_ci DEVICE_TYPE_ACCESSORY = 0, 16817fd14ceSopenharmony_ci /** device type is controller */ 16917fd14ceSopenharmony_ci DEVICE_TYPE_CONTROLLER = 1, 17017fd14ceSopenharmony_ci /** device type is proxy */ 17117fd14ceSopenharmony_ci DEVICE_TYPE_PROXY = 2 17217fd14ceSopenharmony_ci} UserType; 17317fd14ceSopenharmony_ci 17417fd14ceSopenharmony_ci/** 17517fd14ceSopenharmony_ci * @brief describes request response results 17617fd14ceSopenharmony_ci */ 17717fd14ceSopenharmony_citypedef enum { 17817fd14ceSopenharmony_ci /** reject the request from the peer device */ 17917fd14ceSopenharmony_ci REQUEST_REJECTED = 0x80000005, 18017fd14ceSopenharmony_ci /** accept the request from the peer device */ 18117fd14ceSopenharmony_ci REQUEST_ACCEPTED = 0x80000006, 18217fd14ceSopenharmony_ci} RequestResponse; 18317fd14ceSopenharmony_ci 18417fd14ceSopenharmony_ci/** 18517fd14ceSopenharmony_ci * @brief This structure provides the ability to monitor changes in trusted groups and devices. 18617fd14ceSopenharmony_ci */ 18717fd14ceSopenharmony_citypedef struct { 18817fd14ceSopenharmony_ci /** Call it when a new group is created. */ 18917fd14ceSopenharmony_ci void (*onGroupCreated)(const char *groupInfo); 19017fd14ceSopenharmony_ci /** Call it when a group is destroyed. */ 19117fd14ceSopenharmony_ci void (*onGroupDeleted)(const char *groupInfo); 19217fd14ceSopenharmony_ci /** Call it when a group adds a trusted device. */ 19317fd14ceSopenharmony_ci void (*onDeviceBound)(const char *peerUdid, const char *groupInfo); 19417fd14ceSopenharmony_ci /** Call it when a group deletes a trusted device. */ 19517fd14ceSopenharmony_ci void (*onDeviceUnBound)(const char *peerUdid, const char *groupInfo); 19617fd14ceSopenharmony_ci /** Call it when a device has no trust relationship in all groups. */ 19717fd14ceSopenharmony_ci void (*onDeviceNotTrusted)(const char *peerUdid); 19817fd14ceSopenharmony_ci /** Call it when a device has no trust relationship in all groups of a certain type. */ 19917fd14ceSopenharmony_ci void (*onLastGroupDeleted)(const char *peerUdid, int groupType); 20017fd14ceSopenharmony_ci void (*onTrustedDeviceNumChanged)(int curTrustedDeviceNum); 20117fd14ceSopenharmony_ci} DataChangeListener; 20217fd14ceSopenharmony_ci 20317fd14ceSopenharmony_ci/** 20417fd14ceSopenharmony_ci * @brief This structure describes the callbacks that need to be provided by the business. 20517fd14ceSopenharmony_ci */ 20617fd14ceSopenharmony_citypedef struct { 20717fd14ceSopenharmony_ci /** Call it when there is data to be sent. */ 20817fd14ceSopenharmony_ci bool (*onTransmit)(int64_t requestId, const uint8_t *data, uint32_t dataLen); 20917fd14ceSopenharmony_ci /** Call it when the session key is returned. */ 21017fd14ceSopenharmony_ci void (*onSessionKeyReturned)(int64_t requestId, const uint8_t *sessionKey, uint32_t sessionKeyLen); 21117fd14ceSopenharmony_ci /** Call it when the asynchronous operation is successful. */ 21217fd14ceSopenharmony_ci void (*onFinish)(int64_t requestId, int operationCode, const char *returnData); 21317fd14ceSopenharmony_ci /** Call it when the asynchronous operation fails. */ 21417fd14ceSopenharmony_ci void (*onError)(int64_t requestId, int operationCode, int errorCode, const char *errorReturn); 21517fd14ceSopenharmony_ci /** Call it when receiving requests from other devices. */ 21617fd14ceSopenharmony_ci char *(*onRequest)(int64_t requestId, int operationCode, const char *reqParams); 21717fd14ceSopenharmony_ci} DeviceAuthCallback; 21817fd14ceSopenharmony_ci 21917fd14ceSopenharmony_ci/** 22017fd14ceSopenharmony_ci * @brief This structure provides all the capabilities of group authentication. 22117fd14ceSopenharmony_ci */ 22217fd14ceSopenharmony_citypedef struct { 22317fd14ceSopenharmony_ci /** This interface is used to process authentication data. */ 22417fd14ceSopenharmony_ci int32_t (*processData)(int64_t authReqId, const uint8_t *data, uint32_t dataLen, 22517fd14ceSopenharmony_ci const DeviceAuthCallback *gaCallback); 22617fd14ceSopenharmony_ci /** This interface is used to initiate authentication between devices. */ 22717fd14ceSopenharmony_ci int32_t (*authDevice)(int32_t osAccountId, int64_t authReqId, const char *authParams, 22817fd14ceSopenharmony_ci const DeviceAuthCallback *gaCallback); 22917fd14ceSopenharmony_ci /** This interface is used to cancel an authentication process. */ 23017fd14ceSopenharmony_ci void (*cancelRequest)(int64_t requestId, const char *appId); 23117fd14ceSopenharmony_ci /** This interface is used to get real info by pseudonym id. */ 23217fd14ceSopenharmony_ci int32_t (*getRealInfo)(int32_t osAccountId, const char *pseudonymId, char **realInfo); 23317fd14ceSopenharmony_ci /** This interface is used to get pseudonym id by an index. */ 23417fd14ceSopenharmony_ci int32_t (*getPseudonymId)(int32_t osAccountId, const char *indexKey, char **pseudonymId); 23517fd14ceSopenharmony_ci} GroupAuthManager; 23617fd14ceSopenharmony_ci 23717fd14ceSopenharmony_citypedef struct { 23817fd14ceSopenharmony_ci /** This interface is used to register business callbacks. */ 23917fd14ceSopenharmony_ci int32_t (*regCallback)(const char *appId, const DeviceAuthCallback *callback); 24017fd14ceSopenharmony_ci /** This interface is used to unregister business callbacks. */ 24117fd14ceSopenharmony_ci int32_t (*unRegCallback)(const char *appId); 24217fd14ceSopenharmony_ci /** This interface is used to register callback for data change monitoring. */ 24317fd14ceSopenharmony_ci int32_t (*regDataChangeListener)(const char *appId, const DataChangeListener *listener); 24417fd14ceSopenharmony_ci /** This interface is used to unregister callback for data change monitoring. */ 24517fd14ceSopenharmony_ci int32_t (*unRegDataChangeListener)(const char *appId); 24617fd14ceSopenharmony_ci /** This interface is used to create a trusted group. */ 24717fd14ceSopenharmony_ci int32_t (*createGroup)(int32_t osAccountId, int64_t requestId, const char *appId, const char *createParams); 24817fd14ceSopenharmony_ci /** This interface is used to delete a trusted group. */ 24917fd14ceSopenharmony_ci int32_t (*deleteGroup)(int32_t osAccountId, int64_t requestId, const char *appId, const char *disbandParams); 25017fd14ceSopenharmony_ci /** This interface is used to add a trusted device to a trusted group. */ 25117fd14ceSopenharmony_ci int32_t (*addMemberToGroup)(int32_t osAccountId, int64_t requestId, const char *appId, const char *addParams); 25217fd14ceSopenharmony_ci /** This interface is used to delete a trusted device from a trusted group. */ 25317fd14ceSopenharmony_ci int32_t (*deleteMemberFromGroup)(int32_t osAccountId, int64_t requestId, const char *appId, 25417fd14ceSopenharmony_ci const char *deleteParams); 25517fd14ceSopenharmony_ci /** This interface is used to process data of binding or unbinding devices. */ 25617fd14ceSopenharmony_ci int32_t (*processData)(int64_t requestId, const uint8_t *data, uint32_t dataLen); 25717fd14ceSopenharmony_ci /** This interface is used to batch add trusted devices with account relationships. */ 25817fd14ceSopenharmony_ci int32_t (*addMultiMembersToGroup)(int32_t osAccountId, const char *appId, const char *addParams); 25917fd14ceSopenharmony_ci /** This interface is used to batch delete trusted devices with account relationships. */ 26017fd14ceSopenharmony_ci int32_t (*delMultiMembersFromGroup)(int32_t osAccountId, const char *appId, const char *deleteParams); 26117fd14ceSopenharmony_ci /** This interface is used to obtain the registration information of the local device. */ 26217fd14ceSopenharmony_ci int32_t (*getRegisterInfo)(const char *reqJsonStr, char **returnRegisterInfo); 26317fd14ceSopenharmony_ci /** This interface is used to check whether the specified application has access rights to the group. */ 26417fd14ceSopenharmony_ci int32_t (*checkAccessToGroup)(int32_t osAccountId, const char *appId, const char *groupId); 26517fd14ceSopenharmony_ci /** This interface is used to obtain all public key information related to a device. */ 26617fd14ceSopenharmony_ci int32_t (*getPkInfoList)(int32_t osAccountId, const char *appId, const char *queryParams, char **returnInfoList, 26717fd14ceSopenharmony_ci uint32_t *returnInfoNum); 26817fd14ceSopenharmony_ci /** This interface is used to obtain group information of a group. */ 26917fd14ceSopenharmony_ci int32_t (*getGroupInfoById)(int32_t osAccountId, const char *appId, const char *groupId, char **returnGroupInfo); 27017fd14ceSopenharmony_ci /** This interface is used to obtain the group information of groups that meet the query parameters. */ 27117fd14ceSopenharmony_ci int32_t (*getGroupInfo)(int32_t osAccountId, const char *appId, const char *queryParams, 27217fd14ceSopenharmony_ci char **returnGroupVec, uint32_t *groupNum); 27317fd14ceSopenharmony_ci /** This interface is used to obtain all group information of a specific group type. */ 27417fd14ceSopenharmony_ci int32_t (*getJoinedGroups)(int32_t osAccountId, const char *appId, int groupType, 27517fd14ceSopenharmony_ci char **returnGroupVec, uint32_t *groupNum); 27617fd14ceSopenharmony_ci /** This interface is used to obtain all group information related to a certain device. */ 27717fd14ceSopenharmony_ci int32_t (*getRelatedGroups)(int32_t osAccountId, const char *appId, const char *peerDeviceId, 27817fd14ceSopenharmony_ci char **returnGroupVec, uint32_t *groupNum); 27917fd14ceSopenharmony_ci /** This interface is used to obtain the information of a trusted device. */ 28017fd14ceSopenharmony_ci int32_t (*getDeviceInfoById)(int32_t osAccountId, const char *appId, const char *deviceId, const char *groupId, 28117fd14ceSopenharmony_ci char **returnDeviceInfo); 28217fd14ceSopenharmony_ci /** This interface is used to obtain all trusted device information in a group. */ 28317fd14ceSopenharmony_ci int32_t (*getTrustedDevices)(int32_t osAccountId, const char *appId, const char *groupId, 28417fd14ceSopenharmony_ci char **returnDevInfoVec, uint32_t *deviceNum); 28517fd14ceSopenharmony_ci /** This interface is used to query whether a specified device exists in the group. */ 28617fd14ceSopenharmony_ci bool (*isDeviceInGroup)(int32_t osAccountId, const char *appId, const char *groupId, const char *deviceId); 28717fd14ceSopenharmony_ci /** This interface is used to cancel a binding or unbinding process. */ 28817fd14ceSopenharmony_ci void (*cancelRequest)(int64_t requestId, const char *appId); 28917fd14ceSopenharmony_ci /** This interface is used to destroy the information returned by the internal allocated memory. */ 29017fd14ceSopenharmony_ci void (*destroyInfo)(char **returnInfo); 29117fd14ceSopenharmony_ci} DeviceGroupManager; 29217fd14ceSopenharmony_ci 29317fd14ceSopenharmony_ci/** 29417fd14ceSopenharmony_ci * @brief This enum provides all the operationCode of interface ProcessCredential. 29517fd14ceSopenharmony_ci */ 29617fd14ceSopenharmony_cienum { 29717fd14ceSopenharmony_ci /** invalid operationCode for initialize */ 29817fd14ceSopenharmony_ci CRED_OP_INVALID = -1, 29917fd14ceSopenharmony_ci /** operationCode for ProcessCredential to query credential */ 30017fd14ceSopenharmony_ci CRED_OP_QUERY, 30117fd14ceSopenharmony_ci /** operationCode for ProcessCredential to create credential */ 30217fd14ceSopenharmony_ci CRED_OP_CREATE, 30317fd14ceSopenharmony_ci /** operationCode for ProcessCredential to import credential */ 30417fd14ceSopenharmony_ci CRED_OP_IMPORT, 30517fd14ceSopenharmony_ci /** operationCode for ProcessCredential to delete credential */ 30617fd14ceSopenharmony_ci CRED_OP_DELETE, 30717fd14ceSopenharmony_ci}; 30817fd14ceSopenharmony_ci 30917fd14ceSopenharmony_ci/** 31017fd14ceSopenharmony_ci * @brief This enum provides all the flag of reqJsion for interface ProcessCredential. 31117fd14ceSopenharmony_ci */ 31217fd14ceSopenharmony_cienum { 31317fd14ceSopenharmony_ci /** invalid flag for initialize */ 31417fd14ceSopenharmony_ci RETURN_FLAG_INVALID = -1, 31517fd14ceSopenharmony_ci /** flag for only return result */ 31617fd14ceSopenharmony_ci RETURN_FLAG_DEFAULT, 31717fd14ceSopenharmony_ci /** flag for return result and publicKey */ 31817fd14ceSopenharmony_ci RETURN_FLAG_PUBLIC_KEY, 31917fd14ceSopenharmony_ci}; 32017fd14ceSopenharmony_ci 32117fd14ceSopenharmony_ci/** 32217fd14ceSopenharmony_ci * @brief This enum provides all the acquireType of interface StartAuthDevice & ProcessAuthDevice. 32317fd14ceSopenharmony_ci */ 32417fd14ceSopenharmony_citypedef enum { 32517fd14ceSopenharmony_ci /** invalid acquireType for initialize */ 32617fd14ceSopenharmony_ci ACQUIRE_TYPE_INVALID = -1, 32717fd14ceSopenharmony_ci /** acquireType for p2p bind */ 32817fd14ceSopenharmony_ci P2P_BIND, 32917fd14ceSopenharmony_ci} AcquireType; 33017fd14ceSopenharmony_ci 33117fd14ceSopenharmony_ci#ifdef __cplusplus 33217fd14ceSopenharmony_ciextern "C" { 33317fd14ceSopenharmony_ci#endif 33417fd14ceSopenharmony_ci 33517fd14ceSopenharmony_ci/** 33617fd14ceSopenharmony_ci * @brief Process Credential data. 33717fd14ceSopenharmony_ci * 33817fd14ceSopenharmony_ci * This API is used to process Credential data. 33917fd14ceSopenharmony_ci * 34017fd14ceSopenharmony_ci * @param operationCode: use one of CRED_OP_QUERY|CRED_OP_CREATE|CRED_OP_IMPORT|CRED_OP_DELETE 34117fd14ceSopenharmony_ci * @param requestParams: json string contains group of osAccountId|deviceId|serviceType|acquireType|flag 34217fd14ceSopenharmony_ci * @param returnData: json string contains group of result|publicKey 34317fd14ceSopenharmony_ci * 34417fd14ceSopenharmony_ci * @return When the ipc call is successful, it returns HC_SUCCESS. 34517fd14ceSopenharmony_ci * Otherwise, it returns other values. 34617fd14ceSopenharmony_ci */ 34717fd14ceSopenharmony_ciDEVICE_AUTH_API_PUBLIC int32_t ProcessCredential( 34817fd14ceSopenharmony_ci int32_t operationCode, const char *requestParams, char **returnData); 34917fd14ceSopenharmony_ci 35017fd14ceSopenharmony_ci/** 35117fd14ceSopenharmony_ci * @brief Start to auth device. 35217fd14ceSopenharmony_ci * 35317fd14ceSopenharmony_ci * This API is used to start to auth device. 35417fd14ceSopenharmony_ci * 35517fd14ceSopenharmony_ci * @param requestId: id of a request 35617fd14ceSopenharmony_ci * @param authParams: json string contains group of osAccountId|deviceId|serviceType|acquireType|pinCode 35717fd14ceSopenharmony_ci * @param callbak: callback object 35817fd14ceSopenharmony_ci * 35917fd14ceSopenharmony_ci * @return When the ipc call is successful, it returns HC_SUCCESS. 36017fd14ceSopenharmony_ci * Otherwise, it returns other values. 36117fd14ceSopenharmony_ci */ 36217fd14ceSopenharmony_ciDEVICE_AUTH_API_PUBLIC int32_t StartAuthDevice( 36317fd14ceSopenharmony_ci int64_t requestId, const char *authParams, const DeviceAuthCallback *callbak); 36417fd14ceSopenharmony_ci 36517fd14ceSopenharmony_ci/** 36617fd14ceSopenharmony_ci * @brief Process auth device data. 36717fd14ceSopenharmony_ci * 36817fd14ceSopenharmony_ci * This API is used to process auth device data. 36917fd14ceSopenharmony_ci * 37017fd14ceSopenharmony_ci * @param requestId: id of a request 37117fd14ceSopenharmony_ci * @param authParams: json string contains group of osAccountId|data 37217fd14ceSopenharmony_ci * @param callbak: callback object 37317fd14ceSopenharmony_ci * 37417fd14ceSopenharmony_ci * @return When the ipc call is successful, it returns HC_SUCCESS. 37517fd14ceSopenharmony_ci * Otherwise, it returns other values. 37617fd14ceSopenharmony_ci */ 37717fd14ceSopenharmony_ciDEVICE_AUTH_API_PUBLIC int32_t ProcessAuthDevice( 37817fd14ceSopenharmony_ci int64_t requestId, const char *authParams, const DeviceAuthCallback *callbak); 37917fd14ceSopenharmony_ci 38017fd14ceSopenharmony_ci/** 38117fd14ceSopenharmony_ci * @brief Cancle auth device request. 38217fd14ceSopenharmony_ci * 38317fd14ceSopenharmony_ci * This API is used to cancle auth device request. 38417fd14ceSopenharmony_ci * 38517fd14ceSopenharmony_ci * @param requestId: id of a request 38617fd14ceSopenharmony_ci * @param authParams: json string contains osAccountId or NULL 38717fd14ceSopenharmony_ci * 38817fd14ceSopenharmony_ci * @return When the ipc call is successful, it returns HC_SUCCESS. 38917fd14ceSopenharmony_ci * Otherwise, it returns other values. 39017fd14ceSopenharmony_ci */ 39117fd14ceSopenharmony_ciDEVICE_AUTH_API_PUBLIC int32_t CancelAuthRequest(int64_t requestId, const char *authParams); 39217fd14ceSopenharmony_ci 39317fd14ceSopenharmony_ci/** 39417fd14ceSopenharmony_ci * @brief Initialize device auth service. 39517fd14ceSopenharmony_ci * 39617fd14ceSopenharmony_ci * This API is used to initialize device auth service. 39717fd14ceSopenharmony_ci * 39817fd14ceSopenharmony_ci * @return When the service initialization is successful, it returns HC_SUCCESS. 39917fd14ceSopenharmony_ci * Otherwise, it returns other values. 40017fd14ceSopenharmony_ci * @see DestroyDeviceAuthService 40117fd14ceSopenharmony_ci */ 40217fd14ceSopenharmony_ciDEVICE_AUTH_API_PUBLIC int InitDeviceAuthService(void); 40317fd14ceSopenharmony_ci 40417fd14ceSopenharmony_ci/** 40517fd14ceSopenharmony_ci * @brief Destroy device auth service. 40617fd14ceSopenharmony_ci * 40717fd14ceSopenharmony_ci * This API is used to destroy device auth service. 40817fd14ceSopenharmony_ci * 40917fd14ceSopenharmony_ci * @see InitDeviceAuthService 41017fd14ceSopenharmony_ci */ 41117fd14ceSopenharmony_ciDEVICE_AUTH_API_PUBLIC void DestroyDeviceAuthService(void); 41217fd14ceSopenharmony_ci 41317fd14ceSopenharmony_ci/** 41417fd14ceSopenharmony_ci * @brief Get group authentication instance. 41517fd14ceSopenharmony_ci * 41617fd14ceSopenharmony_ci * This API is used to get group authentication instance. 41717fd14ceSopenharmony_ci * The InitDeviceAuthService function must be called before using this method. 41817fd14ceSopenharmony_ci * 41917fd14ceSopenharmony_ci * @return When the method call result is successful, it returns GroupAuthManager instance. 42017fd14ceSopenharmony_ci * Otherwise, it returns NULL. 42117fd14ceSopenharmony_ci */ 42217fd14ceSopenharmony_ciDEVICE_AUTH_API_PUBLIC const GroupAuthManager *GetGaInstance(void); 42317fd14ceSopenharmony_ci 42417fd14ceSopenharmony_ci/** 42517fd14ceSopenharmony_ci * @brief Get group management instance. 42617fd14ceSopenharmony_ci * 42717fd14ceSopenharmony_ci * This API is used to get group management instance. 42817fd14ceSopenharmony_ci * The InitDeviceAuthService function must be called before using this method. 42917fd14ceSopenharmony_ci * 43017fd14ceSopenharmony_ci * @return When the method call result is successful, it returns DeviceGroupManager instance. 43117fd14ceSopenharmony_ci * Otherwise, it returns NULL. 43217fd14ceSopenharmony_ci */ 43317fd14ceSopenharmony_ciDEVICE_AUTH_API_PUBLIC const DeviceGroupManager *GetGmInstance(void); 43417fd14ceSopenharmony_ci 43517fd14ceSopenharmony_ci#ifdef __cplusplus 43617fd14ceSopenharmony_ci} 43717fd14ceSopenharmony_ci#endif 43817fd14ceSopenharmony_ci#endif 439