101 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			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_ */
							 |