1 /** 2 ****************************************************************************** 3 * @file lib_crypt.h 4 * @author Application Team 5 * @version V1.1.0 6 * @date 2019-10-28 7 * @brief CRYPT library. 8 ****************************************************************************** 9 * @attention 10 * 11 ****************************************************************************** 12 */ 13 #ifndef __LIB_CRYPT_H 14 #define __LIB_CRYPT_H 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 #include "target.h" 21 /************** Bits definition for CRYPT_CTRL register ******************/ 22 #define CRYPT_CTRL_MODE_MULTIPLY (0x0U << CRYPT_CTRL_MODE_Pos) 23 #define CRYPT_CTRL_MODE_ADD (0x1U << CRYPT_CTRL_MODE_Pos) 24 #define CRYPT_CTRL_MODE_SUB (0x2U << CRYPT_CTRL_MODE_Pos) 25 #define CRYPT_CTRL_MODE_RSHIFT1 (0x3U << CRYPT_CTRL_MODE_Pos) 26 #define CRYPT_CTRL_LENGTH_32 (0x0U << CRYPT_CTRL_LENGTH_Pos) 27 #define CRYPT_CTRL_LENGTH_64 (0x1U << CRYPT_CTRL_LENGTH_Pos) 28 #define CRYPT_CTRL_LENGTH_96 (0x2U << CRYPT_CTRL_LENGTH_Pos) 29 #define CRYPT_CTRL_LENGTH_128 (0x3U << CRYPT_CTRL_LENGTH_Pos) 30 #define CRYPT_CTRL_LENGTH_160 (0x4U << CRYPT_CTRL_LENGTH_Pos) 31 #define CRYPT_CTRL_LENGTH_192 (0x5U << CRYPT_CTRL_LENGTH_Pos) 32 #define CRYPT_CTRL_LENGTH_224 (0x6U << CRYPT_CTRL_LENGTH_Pos) 33 #define CRYPT_CTRL_LENGTH_256 (0x7U << CRYPT_CTRL_LENGTH_Pos) 34 #define CRYPT_CTRL_LENGTH_288 (0x8U << CRYPT_CTRL_LENGTH_Pos) 35 #define CRYPT_CTRL_LENGTH_320 (0x9U << CRYPT_CTRL_LENGTH_Pos) 36 #define CRYPT_CTRL_LENGTH_352 (0xAU << CRYPT_CTRL_LENGTH_Pos) 37 #define CRYPT_CTRL_LENGTH_384 (0xBU << CRYPT_CTRL_LENGTH_Pos) 38 #define CRYPT_CTRL_LENGTH_416 (0xCU << CRYPT_CTRL_LENGTH_Pos) 39 #define CRYPT_CTRL_LENGTH_448 (0xDU << CRYPT_CTRL_LENGTH_Pos) 40 #define CRYPT_CTRL_LENGTH_480 (0xEU << CRYPT_CTRL_LENGTH_Pos) 41 #define CRYPT_CTRL_LENGTH_512 (0xFU << CRYPT_CTRL_LENGTH_Pos) 42 //Length 43 #define CRYPT_LENGTH_32 CRYPT_CTRL_LENGTH_32 44 #define CRYPT_LENGTH_64 CRYPT_CTRL_LENGTH_64 45 #define CRYPT_LENGTH_96 CRYPT_CTRL_LENGTH_96 46 #define CRYPT_LENGTH_128 CRYPT_CTRL_LENGTH_128 47 #define CRYPT_LENGTH_160 CRYPT_CTRL_LENGTH_160 48 #define CRYPT_LENGTH_192 CRYPT_CTRL_LENGTH_192 49 #define CRYPT_LENGTH_224 CRYPT_CTRL_LENGTH_224 50 #define CRYPT_LENGTH_256 CRYPT_CTRL_LENGTH_256 51 #define CRYPT_LENGTH_288 CRYPT_CTRL_LENGTH_288 52 #define CRYPT_LENGTH_320 CRYPT_CTRL_LENGTH_320 53 #define CRYPT_LENGTH_352 CRYPT_CTRL_LENGTH_352 54 #define CRYPT_LENGTH_384 CRYPT_CTRL_LENGTH_384 55 #define CRYPT_LENGTH_416 CRYPT_CTRL_LENGTH_416 56 #define CRYPT_LENGTH_448 CRYPT_CTRL_LENGTH_448 57 #define CRYPT_LENGTH_480 CRYPT_CTRL_LENGTH_480 58 #define CRYPT_LENGTH_512 CRYPT_CTRL_LENGTH_512 59 //Nostop 60 #define CRYPT_STOPCPU (0) 61 #define CRYPT_NOSTOPCPU CRYPT_CTRL_NOSTOP 62 63 /* Private macros ------------------------------------------------------------*/ 64 #define IS_CRYPT_ADDR(__ADDR__) (((__ADDR__) & 0x3U) == 0U) 65 66 #define IS_CRYPT_LENGTH(__LENGTH__) (((__LENGTH__) == CRYPT_LENGTH_32) ||\ 67 ((__LENGTH__) == CRYPT_LENGTH_64) ||\ 68 ((__LENGTH__) == CRYPT_LENGTH_32) ||\ 69 ((__LENGTH__) == CRYPT_LENGTH_96) ||\ 70 ((__LENGTH__) == CRYPT_LENGTH_128) ||\ 71 ((__LENGTH__) == CRYPT_LENGTH_160) ||\ 72 ((__LENGTH__) == CRYPT_LENGTH_192) ||\ 73 ((__LENGTH__) == CRYPT_LENGTH_224) ||\ 74 ((__LENGTH__) == CRYPT_LENGTH_256) ||\ 75 ((__LENGTH__) == CRYPT_LENGTH_288) ||\ 76 ((__LENGTH__) == CRYPT_LENGTH_320) ||\ 77 ((__LENGTH__) == CRYPT_LENGTH_352) ||\ 78 ((__LENGTH__) == CRYPT_LENGTH_384) ||\ 79 ((__LENGTH__) == CRYPT_LENGTH_416) ||\ 80 ((__LENGTH__) == CRYPT_LENGTH_448) ||\ 81 ((__LENGTH__) == CRYPT_LENGTH_480) ||\ 82 ((__LENGTH__) == CRYPT_LENGTH_512)) 83 84 #define IS_CRYPT_NOSTOP(__NOSTOP__) (((__NOSTOP__) == CRYPT_STOPCPU) || ((__NOSTOP__) == CRYPT_NOSTOPCPU)) 85 86 /****************************** CRYPT Instances *******************************/ 87 #define IS_CRYPT_ALL_INSTANCE(INSTANCE) ((INSTANCE) == CRYPT) 88 89 /* Exported Functions ------------------------------------------------------- */ 90 void CRYPT_AddressAConfig(uint16_t AddrA); 91 void CRYPT_AddressBConfig(uint16_t AddrB); 92 void CRYPT_AddressOConfig(uint16_t AddrO); 93 uint8_t CRYPT_GetCarryBorrowBit(void); 94 void CRYPT_StartAdd(uint32_t Length, uint32_t Nostop); 95 void CRYPT_StartMultiply(uint32_t Length, uint32_t Nostop); 96 void CRYPT_StartSub(uint32_t Length, uint32_t Nostop); 97 void CRYPT_StartRShift1(uint32_t Length, uint32_t Nostop); 98 void CRYPT_WaitForLastOperation(void); 99 100 101 #ifdef __cplusplus 102 } 103 #endif 104 105 #endif /* __LIB_CRYPT_H */ 106 107 /*********************************** END OF FILE ******************************/ 108