44 #ifndef ADI_CRYPTO_DEF_H 45 #define ADI_CRYPTO_DEF_H 49 #include <drivers/dma/adi_dma.h> 50 #include <adi_crypto_config.h> 53 #include <drivers/general/adi_drivers_general.h> 54 #define ALIGN4 ALIGNED_PRAGMA(4) 57 #define CRYPTO_SUPPORT_KEY_REQUIRED ( \ 58 (ADI_CRYPTO_ENABLE_ECB_SUPPORT == 1) \ 59 || (ADI_CRYPTO_ENABLE_CTR_SUPPORT == 1) \ 60 || (ADI_CRYPTO_ENABLE_CBC_SUPPORT == 1) \ 61 || (ADI_CRYPTO_ENABLE_CCM_SUPPORT == 1) \ 62 || (ADI_CRYPTO_ENABLE_CMAC_SUPPORT == 1) \ 65 #define CRYPTO_SUPPORT_MODE_CCM_ONLY ( \ 66 (ADI_CRYPTO_ENABLE_ECB_SUPPORT != 1) \ 67 && (ADI_CRYPTO_ENABLE_CTR_SUPPORT != 1) \ 68 && (ADI_CRYPTO_ENABLE_CBC_SUPPORT != 1) \ 69 && (ADI_CRYPTO_ENABLE_CCM_SUPPORT == 1) \ 70 && (ADI_CRYPTO_ENABLE_CMAC_SUPPORT != 1) \ 71 && (ADI_CRYPTO_ENABLE_SHA_SUPPORT != 1) \ 74 #define CRYPTO_SUPPORT_MODE_ANY_NON_CCM ( \ 75 (ADI_CRYPTO_ENABLE_ECB_SUPPORT == 1) \ 76 || (ADI_CRYPTO_ENABLE_CTR_SUPPORT == 1) \ 77 || (ADI_CRYPTO_ENABLE_CBC_SUPPORT == 1) \ 78 || (ADI_CRYPTO_ENABLE_CMAC_SUPPORT == 1) \ 79 || (ADI_CRYPTO_ENABLE_SHA_SUPPORT == 1) \ 82 #define CRYPTO_SUPPORT_MODE_ANY_NON_SHA ( \ 83 (ADI_CRYPTO_ENABLE_ECB_SUPPORT == 1) \ 84 || (ADI_CRYPTO_ENABLE_CTR_SUPPORT == 1) \ 85 || (ADI_CRYPTO_ENABLE_CBC_SUPPORT == 1) \ 86 || (ADI_CRYPTO_ENABLE_CMAC_SUPPORT == 1) \ 87 || (ADI_CRYPTO_ENABLE_CCM_SUPPORT == 1) \ 92 #if (defined (__ADUCM4x50__) && (1 == ADI_CRYPTO_ENABLE_PKSTOR_SUPPORT)) 93 #define PK_CONFIG_BITS (BITM_CRYPT_CFG_PRKSTOREN | BITM_CRYPT_CFG_BLKEN ) 94 #define NUM_PKSTOR_VAL_STRING_WORDS (2) 100 #define MIN(a,b) (((a)<(b))?(a):(b)) 103 #define MAX(a,b) (((a)>(b))?(a):(b)) 107 #define MAX_CRYPTO_DMA_BYTES (DMA_TRANSFER_LIMIT * sizeof(uint32_t)) 110 #define SHA_CHUNK_MAX_BYTES (64u) 111 #define SHA_CHUNK_MAX_BITS (SHA_CHUNK_MAX_BYTES * 8U) 112 #define SHA_CHUNK_MAX_WORDS (16u) 115 #define HMAC_CHUNK_MAX_BYTES (64u) 116 #define HMAC_CHUNK_MAX_BITS (HMAC_CHUNK_MAX_BYTES * 8U) 117 #define HMAC_CHUNK_MAX_WORDS (16u) 119 #define FIFO_WIDTH_IN_BITS (32u) 120 #define FIFO_WIDTH_IN_BYTES (FIFO_WIDTH_IN_BITS/8u) 121 #define FIFO_DEPTH (4u) 123 #define CRYPTO_INPUT_SIZE_IN_BITS (128u) 124 #define CRYPTO_INPUT_SIZE_IN_BYTES (CRYPTO_INPUT_SIZE_IN_BITS/8u) 126 #define SHA_OUTPUT_SIZE_IN_BITS (256u) 127 #define SHA_OUTPUT_SIZE_IN_BYTES (SHA_OUTPUT_SIZE_IN_BITS/8u) 137 typedef struct _CRYPTO_COMPUTE {
140 #if defined (__ADUCM4x50__) 141 ADI_CRYPTO_KEY_BYTE_SWAP eKeyByteSwap;
142 ADI_CRYPTO_SHA_BYTE_SWAP eShaByteSwap;
151 uint32_t *pNextAuthInput;
152 uint32_t numAuthBytesRemaining;
154 uint32_t *pNextInput;
155 uint32_t numInputBytesRemaining;
157 uint32_t *pNextOutput;
158 uint32_t numOutputBytesRemaining;
170 uint32_t CounterInit;
171 uint32_t numValidBytes;
172 uint32_t numShaBitsRemaining;
174 #if (defined (__ADUCM4x50__) && (1 == ADI_CRYPTO_ENABLE_PKSTOR_SUPPORT)) 178 ADI_CRYPTO_PK_KUW_LEN pkKuwLen;
185 typedef struct _CRYPTO_INFO {
186 ADI_CRYPT_TypeDef *pDev;
188 #if (ADI_CRYPTO_ENABLE_DMA_SUPPORT == 1) 189 IRQn_Type dmaInputIrqNum;
190 IRQn_Type dmaOutputIrqNum;
191 DMA_CHANn_TypeDef dmaInputChanNum;
192 DMA_CHANn_TypeDef dmaOutputChanNum;
203 #pragma diag_suppress=Pm123 207 struct __ADI_CRYPTO_DEV_DATA_TYPE {
212 ADI_CRYPT_TypeDef *pDev;
214 CRYPTO_INFO *pDevInfo;
216 CRYPTO_COMPUTE Computation;
219 ADI_CALLBACK pfCallback;
225 } ADI_CRYPTO_DEV_DATA_TYPE;
228 #pragma diag_default=Pm123
struct __ADI_CRYPTO_DEV_DATA_TYPE * ADI_CRYPTO_HANDLE