117fd14ceSopenharmony_ci/* 217fd14ceSopenharmony_ci * Copyright (c) 2020-2021 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 __HICHAIN_H__ 1717fd14ceSopenharmony_ci#define __HICHAIN_H__ 1817fd14ceSopenharmony_ci 1917fd14ceSopenharmony_ci#include <stdint.h> 2017fd14ceSopenharmony_ci 2117fd14ceSopenharmony_ci#if defined(_WINDOWS) 2217fd14ceSopenharmony_ci#ifdef DLL_EXPORT 2317fd14ceSopenharmony_ci#define DLL_API_PUBLIC __declspec(dllexport) 2417fd14ceSopenharmony_ci#else 2517fd14ceSopenharmony_ci#define DLL_API_PUBLIC __declspec(dllimport) 2617fd14ceSopenharmony_ci#endif 2717fd14ceSopenharmony_ci#else 2817fd14ceSopenharmony_ci#define DLL_API_PUBLIC __attribute__ ((visibility("default"))) 2917fd14ceSopenharmony_ci#endif 3017fd14ceSopenharmony_ci 3117fd14ceSopenharmony_ci#ifdef HILINK_E2E_SECURITY_CONFIG 3217fd14ceSopenharmony_ci#define _SCANTY_MEMORY_ 3317fd14ceSopenharmony_ci#endif 3417fd14ceSopenharmony_ci 3517fd14ceSopenharmony_cienum hc_error { 3617fd14ceSopenharmony_ci HC_OK = 0, 3717fd14ceSopenharmony_ci HC_INPUT_ERROR, 3817fd14ceSopenharmony_ci HC_INNER_ERROR, 3917fd14ceSopenharmony_ci HC_STATE_ERROR, 4017fd14ceSopenharmony_ci HC_SERVICE_CONFIRM_ERROR, 4117fd14ceSopenharmony_ci HC_UNKNOW_MESSAGE, 4217fd14ceSopenharmony_ci HC_NO_MESSAGE_TO_SEND, 4317fd14ceSopenharmony_ci HC_REPEATED_REFERENCE, 4417fd14ceSopenharmony_ci HC_NEED_DEPEND, 4517fd14ceSopenharmony_ci HC_BUILD_OBJECT_FAILED, 4617fd14ceSopenharmony_ci HC_BUILD_SEND_DATA_FAILED, 4717fd14ceSopenharmony_ci HC_MALLOC_FAILED, 4817fd14ceSopenharmony_ci HC_VERSION_UNSUPPORT, 4917fd14ceSopenharmony_ci HC_LARGE_PRIME_NUMBER_LEN_UNSUPPORT, 5017fd14ceSopenharmony_ci HC_CAL_BIGNUM_EXP_FAILED, 5117fd14ceSopenharmony_ci HC_INTERNAL_ERROR, 5217fd14ceSopenharmony_ci HC_IMPORT_AUTH_DATA_FAILED, 5317fd14ceSopenharmony_ci HC_VERIFY_PROOF_FAILED, 5417fd14ceSopenharmony_ci HC_GENERATE_PROOF_FAILED, 5517fd14ceSopenharmony_ci HC_GENERATE_SESSION_KEY_FAILED, 5617fd14ceSopenharmony_ci HC_ST_KEY_PAIR_FAILED, 5717fd14ceSopenharmony_ci HC_COMPUTE_STS_SHARED_SECRET_FAILED, 5817fd14ceSopenharmony_ci HC_COMPUTE_HKDF_FAILED, 5917fd14ceSopenharmony_ci HC_PAKE_SESSION_KEY_ERROR, 6017fd14ceSopenharmony_ci HC_PAKE_OBJECT_ERROR, 6117fd14ceSopenharmony_ci HC_STS_OBJECT_ERROR, 6217fd14ceSopenharmony_ci HC_DECRYPT_FAILED, 6317fd14ceSopenharmony_ci HC_ENCRYPT_FAILED, 6417fd14ceSopenharmony_ci HC_SIGN_TOO_SHORT, 6517fd14ceSopenharmony_ci HC_VERIFY_EXCHANGE_FAILED, 6617fd14ceSopenharmony_ci HC_SIGN_EXCHANGE_FAILED, 6717fd14ceSopenharmony_ci HC_SAVE_LTPK_FAILED, 6817fd14ceSopenharmony_ci HC_DELETE_LTPK_FAILED, 6917fd14ceSopenharmony_ci HC_GET_LTPK_FAILED, 7017fd14ceSopenharmony_ci HC_GEN_ALIAS_FAILED, 7117fd14ceSopenharmony_ci HC_GEN_SERVICE_ID_FAILED, 7217fd14ceSopenharmony_ci HC_GEN_RANDOM_FAILED, 7317fd14ceSopenharmony_ci HC_UNSUPPORT, 7417fd14ceSopenharmony_ci HC_MESSAGE_INCONSISTENCY, 7517fd14ceSopenharmony_ci HC_OPERATION_CODE_ERROR, 7617fd14ceSopenharmony_ci HC_MEMCPY_ERROR, 7717fd14ceSopenharmony_ci PROTOCOL_STATE_ERROR, 7817fd14ceSopenharmony_ci PROTOCOL_SET_STATE_ERROR, 7917fd14ceSopenharmony_ci PROTOCOL_TIMEOUT_ERROR, 8017fd14ceSopenharmony_ci PROTOCOL_SAHRED_SECRET_FAIL, 8117fd14ceSopenharmony_ci PROTOCOL_HKDF_FAIL, 8217fd14ceSopenharmony_ci PROTOCOL_SHA_FAIL, 8317fd14ceSopenharmony_ci PROTOCOL_RAND_FAIL, 8417fd14ceSopenharmony_ci PROTOCOL_ENCRYPT_FAIL, 8517fd14ceSopenharmony_ci PROTOCOL_DECRYPT_FAIL, 8617fd14ceSopenharmony_ci PROTOCOL_VERIFY_DATA_FAIL, 8717fd14ceSopenharmony_ci PROTOCOL_KEY_ALG_FAIL, 8817fd14ceSopenharmony_ci PROTOCOL_RESULT_ERROR, 8917fd14ceSopenharmony_ci KEK_NOT_EXIST, 9017fd14ceSopenharmony_ci DEK_NOT_EXIST, 9117fd14ceSopenharmony_ci TEMP_KEY_GEN_FAILED, 9217fd14ceSopenharmony_ci HC_INPUT_PTR_NULL 9317fd14ceSopenharmony_ci}; 9417fd14ceSopenharmony_ci 9517fd14ceSopenharmony_cienum hc_type { 9617fd14ceSopenharmony_ci HC_CENTRE = 1, 9717fd14ceSopenharmony_ci HC_ACCESSORY, 9817fd14ceSopenharmony_ci}; 9917fd14ceSopenharmony_ci 10017fd14ceSopenharmony_cienum hc_user_type { 10117fd14ceSopenharmony_ci HC_USER_TYPE_ACCESSORY = 0, 10217fd14ceSopenharmony_ci HC_USER_TYPE_CONTROLLER = 1 10317fd14ceSopenharmony_ci}; 10417fd14ceSopenharmony_ci 10517fd14ceSopenharmony_cienum hc_operation { 10617fd14ceSopenharmony_ci INVALID_OPERATION_CODE = -1, 10717fd14ceSopenharmony_ci NO_OPERATION_CODE = 0, 10817fd14ceSopenharmony_ci BIND = 1, 10917fd14ceSopenharmony_ci AUTHENTICATE, 11017fd14ceSopenharmony_ci ADD_AUTHINFO, 11117fd14ceSopenharmony_ci REMOVE_AUTHINFO, 11217fd14ceSopenharmony_ci UNBIND, 11317fd14ceSopenharmony_ci AUTH_KEY_AGREEMENT, 11417fd14ceSopenharmony_ci REGISTER, 11517fd14ceSopenharmony_ci SEC_CLONE_OP, 11617fd14ceSopenharmony_ci REMOVE_ALL_AUTHINFO, 11717fd14ceSopenharmony_ci GET_PEER_USER_TYPE, 11817fd14ceSopenharmony_ci GENERATE_KEY_PAIR = 99 11917fd14ceSopenharmony_ci}; 12017fd14ceSopenharmony_ci 12117fd14ceSopenharmony_cienum hc_result { 12217fd14ceSopenharmony_ci END_SUCCESS = 0, 12317fd14ceSopenharmony_ci END_FAILED, 12417fd14ceSopenharmony_ci KEY_AGREEMENT_PROCESSING, 12517fd14ceSopenharmony_ci KEY_AGREEMENT_END, 12617fd14ceSopenharmony_ci OPERATION_PROCESSING, 12717fd14ceSopenharmony_ci OPERATION_END, 12817fd14ceSopenharmony_ci}; 12917fd14ceSopenharmony_ci 13017fd14ceSopenharmony_cienum hc_export_type { 13117fd14ceSopenharmony_ci EXPORT_DATA_FULL_AUTH_INFO = 0, 13217fd14ceSopenharmony_ci EXPORT_DATA_LITE_AUTH_INFO = 1, 13317fd14ceSopenharmony_ci EXPORT_DATA_SIGNED_AUTH_INFO = 2 13417fd14ceSopenharmony_ci}; 13517fd14ceSopenharmony_ci 13617fd14ceSopenharmony_ci#define HC_AUTH_ID_BUFF_LEN 64 13717fd14ceSopenharmony_ci#define HC_SALT_BUFF_LEN 16 13817fd14ceSopenharmony_ci#define HC_PIN_BUFF_LEN 16 13917fd14ceSopenharmony_ci#define HC_SESSION_KEY_LEN 128 14017fd14ceSopenharmony_ci#define HC_KEY_TYPE_LEN 2 14117fd14ceSopenharmony_ci#define HC_BASE_KEY_NUM 5 14217fd14ceSopenharmony_ci 14317fd14ceSopenharmony_ci#if !defined(_SCANTY_MEMORY_) 14417fd14ceSopenharmony_ci#define HC_PACKAGE_NAME_BUFF_LEN 256 14517fd14ceSopenharmony_ci#define HC_SERVICE_TYPE_BUFF_LEN 256 14617fd14ceSopenharmony_ci#else /* _SCANTY_MEMORY_ */ 14717fd14ceSopenharmony_ci#define HC_PACKAGE_NAME_BUFF_LEN 16 14817fd14ceSopenharmony_ci#define HC_SERVICE_TYPE_BUFF_LEN 16 14917fd14ceSopenharmony_ci#endif /* _SCANTY_MEMORY_ */ 15017fd14ceSopenharmony_ci#define HC_KEY_ALIAS_MAX_LEN 64 15117fd14ceSopenharmony_ci 15217fd14ceSopenharmony_ci/* alia list max size */ 15317fd14ceSopenharmony_ci#if defined(_SCANTY_MEMORY_) 15417fd14ceSopenharmony_ci#define HC_PUB_KEY_ALIAS_MAX_NUM 15 15517fd14ceSopenharmony_ci#elif defined(_SUPPORT_SEC_CLONE_SERVER_) 15617fd14ceSopenharmony_ci#define HC_PUB_KEY_ALIAS_MAX_NUM 120 15717fd14ceSopenharmony_ci#else 15817fd14ceSopenharmony_ci#define HC_PUB_KEY_ALIAS_MAX_NUM 20 15917fd14ceSopenharmony_ci#endif 16017fd14ceSopenharmony_ci 16117fd14ceSopenharmony_cienum hc_trust_peer_result { 16217fd14ceSopenharmony_ci HC_NOT_TRUST_PEER = 0, 16317fd14ceSopenharmony_ci HC_BINDED_TRUST_PEER, 16417fd14ceSopenharmony_ci HC_AUTHED_TRUST_PEER, 16517fd14ceSopenharmony_ci HC_ACCESSORY_TRUST_PEER 16617fd14ceSopenharmony_ci}; 16717fd14ceSopenharmony_ci 16817fd14ceSopenharmony_citypedef void *hc_handle; 16917fd14ceSopenharmony_ci 17017fd14ceSopenharmony_cistruct uint8_buff { 17117fd14ceSopenharmony_ci uint8_t *val; 17217fd14ceSopenharmony_ci uint32_t size; 17317fd14ceSopenharmony_ci uint32_t length; 17417fd14ceSopenharmony_ci}; 17517fd14ceSopenharmony_ci 17617fd14ceSopenharmony_cistruct hc_pin { 17717fd14ceSopenharmony_ci uint32_t length; 17817fd14ceSopenharmony_ci uint8_t pin[HC_PIN_BUFF_LEN]; 17917fd14ceSopenharmony_ci}; 18017fd14ceSopenharmony_ci 18117fd14ceSopenharmony_cistruct hc_salt { 18217fd14ceSopenharmony_ci uint32_t length; 18317fd14ceSopenharmony_ci uint8_t salt[HC_SALT_BUFF_LEN]; 18417fd14ceSopenharmony_ci}; 18517fd14ceSopenharmony_ci 18617fd14ceSopenharmony_cistruct hc_auth_id { 18717fd14ceSopenharmony_ci uint32_t length; 18817fd14ceSopenharmony_ci uint8_t auth_id[HC_AUTH_ID_BUFF_LEN]; 18917fd14ceSopenharmony_ci}; 19017fd14ceSopenharmony_ci 19117fd14ceSopenharmony_cistruct hc_session_key { 19217fd14ceSopenharmony_ci uint32_t length; 19317fd14ceSopenharmony_ci uint8_t session_key[HC_SESSION_KEY_LEN]; 19417fd14ceSopenharmony_ci}; 19517fd14ceSopenharmony_ci 19617fd14ceSopenharmony_cistruct hc_package_name { 19717fd14ceSopenharmony_ci uint32_t length; 19817fd14ceSopenharmony_ci uint8_t name[HC_PACKAGE_NAME_BUFF_LEN]; 19917fd14ceSopenharmony_ci}; 20017fd14ceSopenharmony_ci 20117fd14ceSopenharmony_cistruct hc_service_type { 20217fd14ceSopenharmony_ci uint32_t length; 20317fd14ceSopenharmony_ci uint8_t type[HC_SERVICE_TYPE_BUFF_LEN]; 20417fd14ceSopenharmony_ci}; 20517fd14ceSopenharmony_ci 20617fd14ceSopenharmony_cistruct hc_user_info { 20717fd14ceSopenharmony_ci struct hc_auth_id auth_id; 20817fd14ceSopenharmony_ci int32_t user_type; 20917fd14ceSopenharmony_ci}; 21017fd14ceSopenharmony_ci 21117fd14ceSopenharmony_cistruct operation_parameter { 21217fd14ceSopenharmony_ci struct hc_auth_id self_auth_id; 21317fd14ceSopenharmony_ci struct hc_auth_id peer_auth_id; 21417fd14ceSopenharmony_ci uint32_t key_length; 21517fd14ceSopenharmony_ci}; 21617fd14ceSopenharmony_ci 21717fd14ceSopenharmony_cistruct hc_key_alias { 21817fd14ceSopenharmony_ci uint32_t length; 21917fd14ceSopenharmony_ci uint8_t key_alias[HC_KEY_ALIAS_MAX_LEN]; 22017fd14ceSopenharmony_ci}; 22117fd14ceSopenharmony_ci 22217fd14ceSopenharmony_cistruct session_identity { 22317fd14ceSopenharmony_ci uint32_t session_id; 22417fd14ceSopenharmony_ci struct hc_package_name package_name; 22517fd14ceSopenharmony_ci struct hc_service_type service_type; 22617fd14ceSopenharmony_ci void *context; 22717fd14ceSopenharmony_ci}; 22817fd14ceSopenharmony_ci 22917fd14ceSopenharmony_citypedef void (*transmit_cb)(const struct session_identity *identity, const void *data, uint32_t length); 23017fd14ceSopenharmony_citypedef void (*get_protocol_params_cb)(const struct session_identity *identity, int32_t operation_code, 23117fd14ceSopenharmony_ci struct hc_pin *pin, struct operation_parameter *para); 23217fd14ceSopenharmony_citypedef void (*set_session_key_func)(const struct session_identity *identity, 23317fd14ceSopenharmony_ci const struct hc_session_key *session_key); 23417fd14ceSopenharmony_citypedef void (*set_service_result_func)(const struct session_identity *identity, int32_t result, int32_t errorCodeRecv); 23517fd14ceSopenharmony_citypedef int32_t (*confirm_receive_request_func)(const struct session_identity *identity, int32_t operation_code); 23617fd14ceSopenharmony_ci 23717fd14ceSopenharmony_cistruct hc_call_back { 23817fd14ceSopenharmony_ci transmit_cb transmit; 23917fd14ceSopenharmony_ci get_protocol_params_cb get_protocol_params; 24017fd14ceSopenharmony_ci set_session_key_func set_session_key; 24117fd14ceSopenharmony_ci set_service_result_func set_service_result; 24217fd14ceSopenharmony_ci confirm_receive_request_func confirm_receive_request; 24317fd14ceSopenharmony_ci}; 24417fd14ceSopenharmony_ci 24517fd14ceSopenharmony_citypedef void (*log_func)(const char *tag, const char *func_name, const char *format, ...); 24617fd14ceSopenharmony_ci 24717fd14ceSopenharmony_cistruct log_func_group { 24817fd14ceSopenharmony_ci log_func log_d; 24917fd14ceSopenharmony_ci log_func log_i; 25017fd14ceSopenharmony_ci log_func log_w; 25117fd14ceSopenharmony_ci log_func log_e; 25217fd14ceSopenharmony_ci}; 25317fd14ceSopenharmony_ci 25417fd14ceSopenharmony_ci#ifdef __cplusplus 25517fd14ceSopenharmony_ciextern "C" { 25617fd14ceSopenharmony_ci#endif 25717fd14ceSopenharmony_ci 25817fd14ceSopenharmony_ci/* 25917fd14ceSopenharmony_ci * Register log operation callback 26017fd14ceSopenharmony_ci * 26117fd14ceSopenharmony_ci * para log: The log callback functions group 26217fd14ceSopenharmony_ci * return void 26317fd14ceSopenharmony_ci */ 26417fd14ceSopenharmony_ciDLL_API_PUBLIC void registe_log(struct log_func_group *log); 26517fd14ceSopenharmony_ci 26617fd14ceSopenharmony_ci/* 26717fd14ceSopenharmony_ci * Get hichain instance 26817fd14ceSopenharmony_ci * 26917fd14ceSopenharmony_ci * para identity: basic information of session 27017fd14ceSopenharmony_ci * pare type: hichain device type 27117fd14ceSopenharmony_ci * hc_call_back: hichain callback functions 27217fd14ceSopenharmony_ci * return hichain instance 27317fd14ceSopenharmony_ci */ 27417fd14ceSopenharmony_ciDLL_API_PUBLIC hc_handle get_instance(const struct session_identity *identity, enum hc_type type, 27517fd14ceSopenharmony_ci const struct hc_call_back *call_back); 27617fd14ceSopenharmony_ci 27717fd14ceSopenharmony_ci/* 27817fd14ceSopenharmony_ci * Destroy hichain instance 27917fd14ceSopenharmony_ci * 28017fd14ceSopenharmony_ci * para handle: hichain instance 28117fd14ceSopenharmony_ci * return void 28217fd14ceSopenharmony_ci */ 28317fd14ceSopenharmony_ciDLL_API_PUBLIC void destroy(hc_handle *handle); 28417fd14ceSopenharmony_ci 28517fd14ceSopenharmony_ci/* 28617fd14ceSopenharmony_ci * set context in handle 28717fd14ceSopenharmony_ci * 28817fd14ceSopenharmony_ci * para handle: hichain instance 28917fd14ceSopenharmony_ci * para context: put in an object in instance 29017fd14ceSopenharmony_ci * return void 29117fd14ceSopenharmony_ci */ 29217fd14ceSopenharmony_ciDLL_API_PUBLIC void set_context(hc_handle handle, void *context); 29317fd14ceSopenharmony_ci 29417fd14ceSopenharmony_ci/* 29517fd14ceSopenharmony_ci * Hichain receives message data 29617fd14ceSopenharmony_ci * 29717fd14ceSopenharmony_ci * para handle: hichain instance 29817fd14ceSopenharmony_ci * para data: message data 29917fd14ceSopenharmony_ci * return 0 ok, others error 30017fd14ceSopenharmony_ci */ 30117fd14ceSopenharmony_ciDLL_API_PUBLIC int32_t receive_data(hc_handle handle, struct uint8_buff *data); 30217fd14ceSopenharmony_ci 30317fd14ceSopenharmony_ci/* 30417fd14ceSopenharmony_ci * Hichain receives message data , data is json object 30517fd14ceSopenharmony_ci * 30617fd14ceSopenharmony_ci * para handle: hichain instance 30717fd14ceSopenharmony_ci * para json_object: message data 30817fd14ceSopenharmony_ci * return 0 ok, others error 30917fd14ceSopenharmony_ci */ 31017fd14ceSopenharmony_ciDLL_API_PUBLIC int32_t receive_data_with_json_object(hc_handle handle, const void *json_object); 31117fd14ceSopenharmony_ci 31217fd14ceSopenharmony_ci#ifndef _CUT_API_ 31317fd14ceSopenharmony_ci 31417fd14ceSopenharmony_ci 31517fd14ceSopenharmony_ci/* 31617fd14ceSopenharmony_ci * Start pake module 31717fd14ceSopenharmony_ci * 31817fd14ceSopenharmony_ci * para handle: hichain instance 31917fd14ceSopenharmony_ci * para params: operating parameter 32017fd14ceSopenharmony_ci * return 0 ok, others error 32117fd14ceSopenharmony_ci */ 32217fd14ceSopenharmony_ciDLL_API_PUBLIC int32_t start_pake(hc_handle handle, const struct operation_parameter *params); 32317fd14ceSopenharmony_ci 32417fd14ceSopenharmony_ci/* 32517fd14ceSopenharmony_ci * Authenticate peer identity and build session key 32617fd14ceSopenharmony_ci * 32717fd14ceSopenharmony_ci * para handle: hichain instance 32817fd14ceSopenharmony_ci * para params: operating parameter 32917fd14ceSopenharmony_ci * return 0 ok, others error 33017fd14ceSopenharmony_ci */ 33117fd14ceSopenharmony_ciDLL_API_PUBLIC int32_t authenticate_peer(hc_handle handle, struct operation_parameter *params); 33217fd14ceSopenharmony_ci 33317fd14ceSopenharmony_ci/* 33417fd14ceSopenharmony_ci * Delete local saved authentication 33517fd14ceSopenharmony_ci * 33617fd14ceSopenharmony_ci * para handle: hichain instance 33717fd14ceSopenharmony_ci * para hc_user_info: user to be deleted 33817fd14ceSopenharmony_ci * return 0 ok, others error 33917fd14ceSopenharmony_ci */ 34017fd14ceSopenharmony_ciDLL_API_PUBLIC int32_t delete_local_auth_info(hc_handle handle, struct hc_user_info *user_info); 34117fd14ceSopenharmony_ci 34217fd14ceSopenharmony_ci/* 34317fd14ceSopenharmony_ci * Share the bound device to other users 34417fd14ceSopenharmony_ci * 34517fd14ceSopenharmony_ci * para handle: hichain instance 34617fd14ceSopenharmony_ci * para params: operating parameter, self_auth_id: controller auth id, peer_auth_id: peer auth id 34717fd14ceSopenharmony_ci * para auth_id: authorized auth id 34817fd14ceSopenharmony_ci * para user_type: authorized user type. 0 : ACCESSORY ; 1 : CONTROLLER 34917fd14ceSopenharmony_ci * return 0 ok, others error 35017fd14ceSopenharmony_ci */ 35117fd14ceSopenharmony_ciint32_t add_auth_info(hc_handle handle, const struct operation_parameter *params, 35217fd14ceSopenharmony_ci const struct hc_auth_id *auth_id, int32_t user_type); 35317fd14ceSopenharmony_ci 35417fd14ceSopenharmony_ci/* 35517fd14ceSopenharmony_ci * Remove user authorization of an accessory 35617fd14ceSopenharmony_ci * 35717fd14ceSopenharmony_ci * para handle: hichain instance 35817fd14ceSopenharmony_ci * para params: operating parameter, self_auth_id: controller auth id, peer_auth_id: peer auth id 35917fd14ceSopenharmony_ci * para auth_id: unauthorized auth id 36017fd14ceSopenharmony_ci * para user_type: unauthorized user type. 0 : ACCESSORY ; 1 : CONTROLLER 36117fd14ceSopenharmony_ci * return 0 ok, others error 36217fd14ceSopenharmony_ci */ 36317fd14ceSopenharmony_ciint32_t remove_auth_info(hc_handle handle, const struct operation_parameter *params, 36417fd14ceSopenharmony_ci const struct hc_auth_id *auth_id, int32_t user_type); 36517fd14ceSopenharmony_ci 36617fd14ceSopenharmony_ci/* 36717fd14ceSopenharmony_ci * Delete local saved authentication 36817fd14ceSopenharmony_ci * 36917fd14ceSopenharmony_ci * para handle: hichain instance 37017fd14ceSopenharmony_ci * para user_info: user to be deleted 37117fd14ceSopenharmony_ci * return 0 ok, others error 37217fd14ceSopenharmony_ci */ 37317fd14ceSopenharmony_ciint32_t delete_local_auth_info(hc_handle handle, struct hc_user_info *user_info); 37417fd14ceSopenharmony_ci 37517fd14ceSopenharmony_ci/* 37617fd14ceSopenharmony_ci * Judge trusted peer 37717fd14ceSopenharmony_ci * 37817fd14ceSopenharmony_ci * para handle: hichain instance 37917fd14ceSopenharmony_ci * para hc_user_info: user to be judged 38017fd14ceSopenharmony_ci * return 0 untrusted, 1 trusted(bind), 2 trusted(auth) 38117fd14ceSopenharmony_ci */ 38217fd14ceSopenharmony_ciDLL_API_PUBLIC int32_t is_trust_peer(hc_handle handle, struct hc_user_info *user_info); 38317fd14ceSopenharmony_ci 38417fd14ceSopenharmony_ci/* 38517fd14ceSopenharmony_ci * List trusted peers 38617fd14ceSopenharmony_ci * 38717fd14ceSopenharmony_ci * para handle: hichain instance 38817fd14ceSopenharmony_ci * para trust_user_type: the type of peer. 0 : ACCESSORY ; 1 : CONTROLLER 38917fd14ceSopenharmony_ci * para owner_auth_id: input null, output binding list; input owner, output auth list;others, output null 39017fd14ceSopenharmony_ci * para auth_id_list: list to receive auth id 39117fd14ceSopenharmony_ci * return number of trusted peers 39217fd14ceSopenharmony_ci */ 39317fd14ceSopenharmony_ciDLL_API_PUBLIC uint32_t list_trust_peers(hc_handle handle, int32_t trust_user_type, 39417fd14ceSopenharmony_ci struct hc_auth_id *owner_auth_id, struct hc_auth_id **auth_id_list); 39517fd14ceSopenharmony_ci#endif /* _CUT_XXX_ */ 39617fd14ceSopenharmony_ci 39717fd14ceSopenharmony_ci/* 39817fd14ceSopenharmony_ci * Set self authId 39917fd14ceSopenharmony_ci * 40017fd14ceSopenharmony_ci * para handle: hichain instance 40117fd14ceSopenharmony_ci * para data: the data of auth id 40217fd14ceSopenharmony_ci * return void 40317fd14ceSopenharmony_ci */ 40417fd14ceSopenharmony_ciDLL_API_PUBLIC void set_self_auth_id(hc_handle handle, struct uint8_buff *data); 40517fd14ceSopenharmony_ci 40617fd14ceSopenharmony_ci#ifdef __cplusplus 40717fd14ceSopenharmony_ci} 40817fd14ceSopenharmony_ci#endif 40917fd14ceSopenharmony_ci 41017fd14ceSopenharmony_ci#endif /* __HICHAIN_H__ */ 411