Files
kunlun/inc/crypto/iot_crypto_async.h
2024-09-28 14:24:04 +08:00

187 lines
6.1 KiB
C

/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
#ifndef _IOT_CRYPTO_ASYNC_H_
#define _IOT_CRYPTO_ASYNC_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "iot_config.h"
#include "iot_crypto_dsa_async_api.h"
/* ecdsa */
#define IOT_CRYPTO_ASYNC_ECDSA_PUB_LEN 64
#define IOT_CRYPTO_ASYNC_ECDSA_PRI_LEN 32
#define IOT_CRYPTO_ASYNC_ECDSA_R_S_LEN 32
/* sm2 */
#define IOT_CRYPTO_ASYNC_SM2_PUB_LEN 64
#define IOT_CRYPTO_ASYNC_SM2_PRI_LEN 32
#define IOT_CRYPTO_ASYNC_R_S_LEN 32
#define IOT_CRYPTO_ASYNC_SM2_USER_ID_LEN 16
/* sg */
#define IOT_CRYPTO_ASYNC_ECP_LEN 1
#define IOT_CRYPTO_ASYNC_CHIP_ID_LEN 24
/* save the pack status and set 1 byte align */
#pragma pack(push)
#pragma pack(1)
typedef struct _iot_crypto_async_src_info {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
/* TODO: add others information */
} iot_crypto_async_src_info_t;
typedef struct _iot_crypto_async_msg_info {
/* buffer length */
uint32_t len;
/* data buffer */
uint8_t data[0];
} iot_crypto_async_msg_info_t;
typedef struct _iot_crypto_async_sm2_sign_info_t {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
uint8_t id[IOT_CRYPTO_ASYNC_SM2_USER_ID_LEN];
uint8_t pub_key[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t pri_key[IOT_CRYPTO_ASYNC_SM2_PRI_LEN];
iot_crypto_async_msg_info_t msg;
} iot_crypto_async_sm2_sign_info_t;
typedef struct _iot_crypto_async_sm2_verify_info_t {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
uint8_t id[IOT_CRYPTO_ASYNC_SM2_USER_ID_LEN];
uint8_t pub_key[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t r[IOT_CRYPTO_ASYNC_R_S_LEN];
uint8_t s[IOT_CRYPTO_ASYNC_R_S_LEN];
iot_crypto_async_msg_info_t msg;
} iot_crypto_async_sm2_verify_info_t;
typedef struct _iot_crypto_async_ecdsa_sign_info_t {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
uint32_t ecp;
uint8_t pri_key[IOT_CRYPTO_ASYNC_ECDSA_PRI_LEN];
iot_crypto_async_msg_info_t msg;
} iot_crypto_async_ecdsa_sign_info_t;
typedef struct _iot_crypto_async_ecdsa_verify_info_t {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
uint32_t ecp;
uint8_t pub_key[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t r[IOT_CRYPTO_ASYNC_ECDSA_R_S_LEN];
uint8_t s[IOT_CRYPTO_ASYNC_ECDSA_R_S_LEN];
iot_crypto_async_msg_info_t msg;
} iot_crypto_async_ecdsa_verify_info_t;
typedef struct _iot_crypto_async_sm2_gen_key_info_t {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
uint8_t pub_key[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t pri_key[IOT_CRYPTO_ASYNC_SM2_PRI_LEN];
iot_crypto_ret_sm2_kdf_gen_t gen_key;
} iot_crypto_async_sm2_gen_key_info_t;
typedef struct _iot_crypto_async_sm2_gen_keypair_info_t {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
iot_crypto_ret_sm2_gen_keypair_info_t ret_info;
} iot_crypto_async_sm2_gen_keypair_info_t;
typedef struct _iot_crypto_async_ecdsa_gen_keypair_info_t {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
iot_crypto_ret_ecdsa_gen_keypair_info_t ret_info;
} iot_crypto_async_ecdsa_gen_keypair_info_t;
typedef struct _iot_crypto_async_sg_auth_sign_info {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
uint32_t random_type;
uint32_t random_len;
uint32_t gen_key_len;
uint32_t chip_id_len;
uint8_t root_pub[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t local_pub[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t local_pri[IOT_CRYPTO_ASYNC_SM2_PRI_LEN];
uint8_t sign_r[IOT_CRYPTO_ASYNC_R_S_LEN];
uint8_t sign_s[IOT_CRYPTO_ASYNC_R_S_LEN];
uint8_t user_id[IOT_CRYPTO_ASYNC_SM2_USER_ID_LEN];
uint8_t chip_id[IOT_CRYPTO_ASYNC_CHIP_ID_LEN];
uint8_t auth_ecp;
uint8_t auth_pub[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t random[0];
} iot_crypto_async_sg_auth_sign_info_t;
typedef struct _iot_crypto_async_sg_auth_verify_info {
/* crypto done callback function */
iot_crypto_async_done_func_t cb;
iot_crypto_async_hdr_t hdr;
uint32_t random_type;
uint32_t random_len;
uint32_t gen_key_len;
uint32_t local_ecp;
uint32_t chip_id_len;
uint8_t root_pub[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t local_pri[IOT_CRYPTO_ASYNC_SM2_PRI_LEN];
uint8_t sign_r[IOT_CRYPTO_ASYNC_R_S_LEN];
uint8_t sign_s[IOT_CRYPTO_ASYNC_R_S_LEN];
uint8_t random_r[IOT_CRYPTO_ASYNC_R_S_LEN];
uint8_t random_s[IOT_CRYPTO_ASYNC_R_S_LEN];
uint8_t user_id[IOT_CRYPTO_ASYNC_SM2_USER_ID_LEN];
uint8_t chip_id[IOT_CRYPTO_ASYNC_CHIP_ID_LEN];
uint8_t auth_ecp;
uint8_t auth_pub[IOT_CRYPTO_ASYNC_SM2_PUB_LEN];
uint8_t random[0];
} iot_crypto_async_sg_auth_verify_info_t;
/* restore the pack status */
#pragma pack(pop)
#if IOT_CRYPTO_ASYNC_SUPPORT
/**
* @brief iot_crypto_async_init crypto async context init
*
* @retval: none
*/
void iot_crypto_async_init(void);
#else /* IOT_CRYPTO_ASYNC_SUPPORT */
#define iot_crypto_async_init()
#endif /* IOT_CRYPTO_ASYNC_SUPPORT */
#ifdef __cplusplus
}
#endif
#endif /* _IOT_CRYPTO_ASYNC_H_ */