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

101 lines
3.2 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_LOCK_H_
#define _IOT_CRYPTO_LOCK_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "os_types.h"
/* crypto algorithm type */
#define IOT_CRYPTO_ATYPE_ENC_DEC_AES 0
#define IOT_CRYPTO_ATYPE_ENC_DEC_AES_GCM 1
#define IOT_CRYPTO_ATYPE_ENC_DEC_AES_GCM_CERT 2
#define IOT_CRYPTO_ATYPE_ENC_DEC_SM4 3
#define IOT_CRYPTO_ATYPE_TRNG 4
#define IOT_CRYPTO_ATYPE_ENC_DEC_DES 5
#define IOT_CRYPTO_ATYPE_ENC_DEC_SM2 6
#define IOT_CRYPTO_ATYPE_SM2_SIGN 7
#define IOT_CRYPTO_ATYPE_SM2_VERIFY 8
#define IOT_CRYPTO_ATYPE_ECDSA_SIGN 9
#define IOT_CRYPTO_ATYPE_ECDSA_VERIFY 10
#define IOT_CRYPTO_ATYPE_SHA_SM3 11
#define IOT_CRYPTO_ATYPE_KEYPAIR_ECDSA 12
#define IOT_CRYPTO_ATYPE_KEYPAIR_SM2 13
#define IOT_CRYPTO_ATYPE_SHAREKEY_SM2 14
#define IOT_CRYPTO_ATYPE_CNT 15
/* SM3_SHA hw plc_cpu/sec_cpu spinlock */
#if IOT_SEC_CPU_SUPPORT
#include "cpu.h"
#include "iot_spinlock.h"
/**
* @brief iot_crypto_sm3_sha_spin_lock acquire crypto spinlock
*
* @retval: none
*/
#define iot_crypto_sm3_sha_spin_lock() \
iot_spinlock_lock(SPINLOCK_CRYPTO_SM3_SHA, (uint8_t)cpu_get_mhartid())
/**
* @brief iot_crypto_sm3_sha_spin_unlock release crypto spinlock
*
* @retval: none
*/
#define iot_crypto_sm3_sha_spin_unlock() \
iot_spinlock_unlock(SPINLOCK_CRYPTO_SM3_SHA, (uint8_t)cpu_get_mhartid())
#else /* IOT_SEC_CPU_SUPPORT */
#define iot_crypto_sm3_sha_spin_lock()
#define iot_crypto_sm3_sha_spin_unlock()
#endif /* IOT_SEC_CPU_SUPPORT */
/**
* @brief iot_crypto_acquire_mutex acquire crypto lock
*
* @param type: algorithm type, see IOT_CRYPTO_ATYPE_XXX
* @retval: none
*/
void iot_crypto_acquire_mutex(uint8_t type);
/**
* @brief iot_crypto_release_mutex release crypto lock
*
* @param type: algorithm type, see IOT_CRYPTO_ATYPE_XXX
* @retval: none
*/
void iot_crypto_release_mutex(uint8_t type);
/**
* @brief iot_crypto_lock_init crypto lock context init
*
* @param type: algorithm type, see IOT_CRYPTO_ATYPE_XXX
* @retval: none
*/
uint32_t iot_crypto_lock_init(void);
#ifdef __cplusplus
}
#endif
#endif /* _IOT_CRYPTO_LOCK_H_ */