STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
stm32f7xx_hal_cryp.h
Go to the documentation of this file.
1 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F7xx_HAL_CRYP_H
40 #define __STM32F7xx_HAL_CRYP_H
41 
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45 
46 #if defined (STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx)
47 /* Includes ------------------------------------------------------------------*/
48 #include "stm32f7xx_hal_def.h"
49 
58 /* Exported types ------------------------------------------------------------*/
59 
68 typedef struct
69 {
70  uint32_t DataType;
73  uint32_t KeySize;
76  uint8_t* pKey;
78  uint8_t* pInitVect;
81  uint8_t IVSize;
85  uint8_t TagSize;
89  uint8_t* Header;
91  uint32_t HeaderSize;
93  uint8_t* pScratch;
95 }CRYP_InitTypeDef;
96 
106 typedef enum
107 {
108  HAL_CRYP_STATE_RESET = 0x00U,
109  HAL_CRYP_STATE_READY = 0x01U,
110  HAL_CRYP_STATE_BUSY = 0x02U,
111  HAL_CRYP_STATE_TIMEOUT = 0x03U,
112  HAL_CRYP_STATE_ERROR = 0x04U
113 }HAL_CRYP_STATETypeDef;
114 
124 typedef enum
125 {
126  HAL_CRYP_PHASE_READY = 0x01U,
127  HAL_CRYP_PHASE_PROCESS = 0x02U,
128  HAL_CRYP_PHASE_FINAL = 0x03U
130 }HAL_PhaseTypeDef;
131 
140 typedef struct
141 {
142  CRYP_TypeDef *Instance;
144  CRYP_InitTypeDef Init;
146  uint8_t *pCrypInBuffPtr;
148  uint8_t *pCrypOutBuffPtr;
150  __IO uint16_t CrypInCount;
152  __IO uint16_t CrypOutCount;
156  HAL_PhaseTypeDef Phase;
158  DMA_HandleTypeDef *hdmain;
160  DMA_HandleTypeDef *hdmaout;
162  HAL_LockTypeDef Lock;
164  __IO HAL_CRYP_STATETypeDef State;
165 }CRYP_HandleTypeDef;
166 
175 /* Exported constants --------------------------------------------------------*/
183 #define CRYP_KEYSIZE_128B ((uint32_t)0x00000000U)
184 #define CRYP_KEYSIZE_192B CRYP_CR_KEYSIZE_0
185 #define CRYP_KEYSIZE_256B CRYP_CR_KEYSIZE_1
186 
193 #define CRYP_DATATYPE_32B ((uint32_t)0x00000000U)
194 #define CRYP_DATATYPE_16B CRYP_CR_DATATYPE_0
195 #define CRYP_DATATYPE_8B CRYP_CR_DATATYPE_1
196 #define CRYP_DATATYPE_1B CRYP_CR_DATATYPE
197 
204 #define CRYP_CR_ALGOMODE_DIRECTION ((uint32_t)0x0008003CU)
205 #define CRYP_CR_ALGOMODE_TDES_ECB_ENCRYPT ((uint32_t)0x00000000U)
206 #define CRYP_CR_ALGOMODE_TDES_ECB_DECRYPT ((uint32_t)0x00000004U)
207 #define CRYP_CR_ALGOMODE_TDES_CBC_ENCRYPT ((uint32_t)0x00000008U)
208 #define CRYP_CR_ALGOMODE_TDES_CBC_DECRYPT ((uint32_t)0x0000000CU)
209 #define CRYP_CR_ALGOMODE_DES_ECB_ENCRYPT ((uint32_t)0x00000010U)
210 #define CRYP_CR_ALGOMODE_DES_ECB_DECRYPT ((uint32_t)0x00000014U)
211 #define CRYP_CR_ALGOMODE_DES_CBC_ENCRYPT ((uint32_t)0x00000018U)
212 #define CRYP_CR_ALGOMODE_DES_CBC_DECRYPT ((uint32_t)0x0000001CU)
213 #define CRYP_CR_ALGOMODE_AES_ECB_ENCRYPT ((uint32_t)0x00000020U)
214 #define CRYP_CR_ALGOMODE_AES_ECB_DECRYPT ((uint32_t)0x00000024U)
215 #define CRYP_CR_ALGOMODE_AES_CBC_ENCRYPT ((uint32_t)0x00000028U)
216 #define CRYP_CR_ALGOMODE_AES_CBC_DECRYPT ((uint32_t)0x0000002CU)
217 #define CRYP_CR_ALGOMODE_AES_CTR_ENCRYPT ((uint32_t)0x00000030U)
218 #define CRYP_CR_ALGOMODE_AES_CTR_DECRYPT ((uint32_t)0x00000034U)
219 
226 #define CRYP_IT_INI ((uint32_t)CRYP_IMSCR_INIM)
227 #define CRYP_IT_OUTI ((uint32_t)CRYP_IMSCR_OUTIM)
235 #define CRYP_FLAG_BUSY ((uint32_t)0x00000010U)
239 #define CRYP_FLAG_IFEM ((uint32_t)0x00000001U)
240 #define CRYP_FLAG_IFNF ((uint32_t)0x00000002U)
241 #define CRYP_FLAG_OFNE ((uint32_t)0x00000004U)
242 #define CRYP_FLAG_OFFU ((uint32_t)0x00000008U)
243 #define CRYP_FLAG_OUTRIS ((uint32_t)0x01000002U)
245 #define CRYP_FLAG_INRIS ((uint32_t)0x01000001U)
255 /* Exported macro ------------------------------------------------------------*/
256 
264 #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)
265 
271 #define __HAL_CRYP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRYP_CR_CRYPEN)
272 #define __HAL_CRYP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~CRYP_CR_CRYPEN)
273 
279 #define __HAL_CRYP_FIFO_FLUSH(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRYP_CR_FFLUSH)
280 
287 #define __HAL_CRYP_SET_MODE(__HANDLE__, MODE) ((__HANDLE__)->Instance->CR |= (uint32_t)(MODE))
288 
304 #define __HAL_CRYP_GET_FLAG(__HANDLE__, __FLAG__) ((((uint8_t)((__FLAG__) >> 24)) == 0x01U)?((((__HANDLE__)->Instance->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)): \
305  ((((__HANDLE__)->Instance->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)))
306 
315 #define __HAL_CRYP_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->MISR & (__INTERRUPT__)) == (__INTERRUPT__))
316 
323 #define __HAL_CRYP_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IMSCR) |= (__INTERRUPT__))
324 
331 #define __HAL_CRYP_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IMSCR) &= ~(__INTERRUPT__))
332 
337 /* Include CRYP HAL Extension module */
338 #include "stm32f7xx_hal_cryp_ex.h"
339 
340 /* Exported functions --------------------------------------------------------*/
348 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp);
349 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp);
350 void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp);
351 void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp);
359 /* AES encryption/decryption using polling ***********************************/
360 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
361 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
362 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
363 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
364 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
365 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
366 
367 /* AES encryption/decryption using interrupt *********************************/
368 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
369 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
370 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
371 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
372 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
373 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
374 
375 /* AES encryption/decryption using DMA ***************************************/
376 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
377 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
378 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
379 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
380 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
381 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
389 /* DES encryption/decryption using polling ***********************************/
390 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
391 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
392 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
393 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
394 
395 /* DES encryption/decryption using interrupt *********************************/
396 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
397 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
398 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
399 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
400 
401 /* DES encryption/decryption using DMA ***************************************/
402 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
403 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
404 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
405 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
413 /* TDES encryption/decryption using polling **********************************/
414 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
415 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
416 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
417 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
418 
419 /* TDES encryption/decryption using interrupt ********************************/
420 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
421 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
422 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
423 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
424 
425 /* TDES encryption/decryption using DMA **************************************/
426 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
427 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
428 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
429 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
437 void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp);
438 void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp);
439 void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp);
447 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);
455 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);
464 /* Private types -------------------------------------------------------------*/
473 /* Private variables ---------------------------------------------------------*/
482 /* Private constants ---------------------------------------------------------*/
486 #define CRYP_FLAG_MASK ((uint32_t)0x0000001F)
487 
491 /* Private macros ------------------------------------------------------------*/
496 #define IS_CRYP_KEYSIZE(__KEYSIZE__) (((__KEYSIZE__) == CRYP_KEYSIZE_128B) || \
497  ((__KEYSIZE__) == CRYP_KEYSIZE_192B) || \
498  ((__KEYSIZE__) == CRYP_KEYSIZE_256B))
499 
500 
501 #define IS_CRYP_DATATYPE(__DATATYPE__) (((__DATATYPE__) == CRYP_DATATYPE_32B) || \
502  ((__DATATYPE__) == CRYP_DATATYPE_16B) || \
503  ((__DATATYPE__) == CRYP_DATATYPE_8B) || \
504  ((__DATATYPE__) == CRYP_DATATYPE_1B))
505 
506 
511 /* Private functions ---------------------------------------------------------*/
524 #endif /* STM32F756xx || STM32F777xx || STM32F779xx */
525 
530 #ifdef __cplusplus
531 }
532 #endif
533 
534 #endif /* __STM32F7xx_HAL_CRYP_H */
535 
536 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Header file of CRYP HAL Extension module.
HAL_LockTypeDef
HAL Lock structures definition.
#define __IO
Definition: core_cm0.h:213
DMA handle Structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.
Crypto Processor.
Definition: stm32f756xx.h:1009
HAL_StatusTypeDef
HAL Status structures definition.