You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

404 lines
20 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32f4xx_hal_cryp.h
  4. * @author MCD Application Team
  5. * @version V1.1.0
  6. * @date 19-June-2014
  7. * @brief Header file of CRYP HAL module.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
  12. *
  13. * Redistribution and use in source and binary forms, with or without modification,
  14. * are permitted provided that the following conditions are met:
  15. * 1. Redistributions of source code must retain the above copyright notice,
  16. * this list of conditions and the following disclaimer.
  17. * 2. Redistributions in binary form must reproduce the above copyright notice,
  18. * this list of conditions and the following disclaimer in the documentation
  19. * and/or other materials provided with the distribution.
  20. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  21. * may be used to endorse or promote products derived from this software
  22. * without specific prior written permission.
  23. *
  24. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  27. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  28. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  30. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  31. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  32. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  33. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34. *
  35. ******************************************************************************
  36. */
  37. /* Define to prevent recursive inclusion -------------------------------------*/
  38. #ifndef __STM32F4xx_HAL_CRYP_H
  39. #define __STM32F4xx_HAL_CRYP_H
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. #if defined(STM32F415xx) || defined(STM32F417xx) || defined(STM32F437xx) || defined(STM32F439xx)
  44. /* Includes ------------------------------------------------------------------*/
  45. #include "stm32f4xx_hal_def.h"
  46. /** @addtogroup STM32F4xx_HAL_Driver
  47. * @{
  48. */
  49. /** @addtogroup CRYP
  50. * @{
  51. */
  52. /* Exported types ------------------------------------------------------------*/
  53. /**
  54. * @brief CRYP Configuration Structure definition
  55. */
  56. typedef struct
  57. {
  58. uint32_t DataType; /*!< 32-bit data, 16-bit data, 8-bit data or 1-bit string.
  59. This parameter can be a value of @ref CRYP_Data_Type */
  60. uint32_t KeySize; /*!< Used only in AES mode only : 128, 192 or 256 bit key length.
  61. This parameter can be a value of @ref CRYP_Key_Size */
  62. uint8_t* pKey; /*!< The key used for encryption/decryption */
  63. uint8_t* pInitVect; /*!< The initialization vector used also as initialization
  64. counter in CTR mode */
  65. uint8_t IVSize; /*!< The size of initialization vector.
  66. This parameter (called nonce size in CCM) is used only
  67. in AES-128/192/256 encryption/decryption CCM mode */
  68. uint8_t TagSize; /*!< The size of returned authentication TAG.
  69. This parameter is used only in AES-128/192/256
  70. encryption/decryption CCM mode */
  71. uint8_t* Header; /*!< The header used in GCM and CCM modes */
  72. uint16_t HeaderSize; /*!< The size of header buffer in bytes */
  73. uint8_t* pScratch; /*!< Scratch buffer used to append the header. It's size must be equal to header size + 21 bytes.
  74. This parameter is used only in AES-128/192/256 encryption/decryption CCM mode */
  75. }CRYP_InitTypeDef;
  76. /**
  77. * @brief HAL CRYP State structures definition
  78. */
  79. typedef enum
  80. {
  81. HAL_CRYP_STATE_RESET = 0x00, /*!< CRYP not yet initialized or disabled */
  82. HAL_CRYP_STATE_READY = 0x01, /*!< CRYP initialized and ready for use */
  83. HAL_CRYP_STATE_BUSY = 0x02, /*!< CRYP internal processing is ongoing */
  84. HAL_CRYP_STATE_TIMEOUT = 0x03, /*!< CRYP timeout state */
  85. HAL_CRYP_STATE_ERROR = 0x04 /*!< CRYP error state */
  86. }HAL_CRYP_STATETypeDef;
  87. /**
  88. * @brief HAL CRYP phase structures definition
  89. */
  90. typedef enum
  91. {
  92. HAL_CRYP_PHASE_READY = 0x01, /*!< CRYP peripheral is ready for initialization. */
  93. HAL_CRYP_PHASE_PROCESS = 0x02, /*!< CRYP peripheral is in processing phase */
  94. HAL_CRYP_PHASE_FINAL = 0x03 /*!< CRYP peripheral is in final phase
  95. This is relevant only with CCM and GCM modes */
  96. }HAL_PhaseTypeDef;
  97. /**
  98. * @brief CRYP handle Structure definition
  99. */
  100. typedef struct
  101. {
  102. CRYP_InitTypeDef Init; /*!< CRYP required parameters */
  103. uint8_t *pCrypInBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
  104. uint8_t *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
  105. __IO uint16_t CrypInCount; /*!< Counter of inputed data */
  106. __IO uint16_t CrypOutCount; /*!< Counter of outputed data */
  107. HAL_StatusTypeDef Status; /*!< CRYP peripheral status */
  108. HAL_PhaseTypeDef Phase; /*!< CRYP peripheral phase */
  109. DMA_HandleTypeDef *hdmain; /*!< CRYP In DMA handle parameters */
  110. DMA_HandleTypeDef *hdmaout; /*!< CRYP Out DMA handle parameters */
  111. HAL_LockTypeDef Lock; /*!< CRYP locking object */
  112. __IO HAL_CRYP_STATETypeDef State; /*!< CRYP peripheral state */
  113. }CRYP_HandleTypeDef;
  114. /* Exported constants --------------------------------------------------------*/
  115. /** @defgroup CRYP_Exported_Constants
  116. * @{
  117. */
  118. /** @defgroup CRYP_Key_Size
  119. * @{
  120. */
  121. #define CRYP_KEYSIZE_128B ((uint32_t)0x00000000)
  122. #define CRYP_KEYSIZE_192B CRYP_CR_KEYSIZE_0
  123. #define CRYP_KEYSIZE_256B CRYP_CR_KEYSIZE_1
  124. #define IS_CRYP_KEYSIZE(KEYSIZE) (((KEYSIZE) == CRYP_KEYSIZE_128B) || \
  125. ((KEYSIZE) == CRYP_KEYSIZE_192B) || \
  126. ((KEYSIZE) == CRYP_KEYSIZE_256B))
  127. /**
  128. * @}
  129. */
  130. /** @defgroup CRYP_Data_Type
  131. * @{
  132. */
  133. #define CRYP_DATATYPE_32B ((uint32_t)0x00000000)
  134. #define CRYP_DATATYPE_16B CRYP_CR_DATATYPE_0
  135. #define CRYP_DATATYPE_8B CRYP_CR_DATATYPE_1
  136. #define CRYP_DATATYPE_1B CRYP_CR_DATATYPE
  137. #define IS_CRYP_DATATYPE(DATATYPE) (((DATATYPE) == CRYP_DATATYPE_32B) || \
  138. ((DATATYPE) == CRYP_DATATYPE_16B) || \
  139. ((DATATYPE) == CRYP_DATATYPE_8B) || \
  140. ((DATATYPE) == CRYP_DATATYPE_1B))
  141. /**
  142. * @}
  143. */
  144. /** @defgroup CRYP_AlgoModeDirection
  145. * @{
  146. */
  147. #define CRYP_CR_ALGOMODE_DIRECTION ((uint32_t)0x0008003C)
  148. #define CRYP_CR_ALGOMODE_TDES_ECB_ENCRYPT ((uint32_t)0x00000000)
  149. #define CRYP_CR_ALGOMODE_TDES_ECB_DECRYPT ((uint32_t)0x00000004)
  150. #define CRYP_CR_ALGOMODE_TDES_CBC_ENCRYPT ((uint32_t)0x00000008)
  151. #define CRYP_CR_ALGOMODE_TDES_CBC_DECRYPT ((uint32_t)0x0000000C)
  152. #define CRYP_CR_ALGOMODE_DES_ECB_ENCRYPT ((uint32_t)0x00000010)
  153. #define CRYP_CR_ALGOMODE_DES_ECB_DECRYPT ((uint32_t)0x00000014)
  154. #define CRYP_CR_ALGOMODE_DES_CBC_ENCRYPT ((uint32_t)0x00000018)
  155. #define CRYP_CR_ALGOMODE_DES_CBC_DECRYPT ((uint32_t)0x0000001C)
  156. #define CRYP_CR_ALGOMODE_AES_ECB_ENCRYPT ((uint32_t)0x00000020)
  157. #define CRYP_CR_ALGOMODE_AES_ECB_DECRYPT ((uint32_t)0x00000024)
  158. #define CRYP_CR_ALGOMODE_AES_CBC_ENCRYPT ((uint32_t)0x00000028)
  159. #define CRYP_CR_ALGOMODE_AES_CBC_DECRYPT ((uint32_t)0x0000002C)
  160. #define CRYP_CR_ALGOMODE_AES_CTR_ENCRYPT ((uint32_t)0x00000030)
  161. #define CRYP_CR_ALGOMODE_AES_CTR_DECRYPT ((uint32_t)0x00000034)
  162. /**
  163. * @}
  164. */
  165. /** @defgroup CRYP_Interrupt
  166. * @{
  167. */
  168. #define CRYP_IT_INI ((uint32_t)CRYP_IMSCR_INIM) /*!< Input FIFO Interrupt */
  169. #define CRYP_IT_OUTI ((uint32_t)CRYP_IMSCR_OUTIM) /*!< Output FIFO Interrupt */
  170. /**
  171. * @}
  172. */
  173. /** @defgroup CRYP_Flags
  174. * @{
  175. */
  176. #define CRYP_FLAG_BUSY ((uint32_t)0x00000010) /*!< The CRYP core is currently
  177. processing a block of data
  178. or a key preparation (for
  179. AES decryption). */
  180. #define CRYP_FLAG_IFEM ((uint32_t)0x00000001) /*!< Input FIFO is empty */
  181. #define CRYP_FLAG_IFNF ((uint32_t)0x00000002) /*!< Input FIFO is not Full */
  182. #define CRYP_FLAG_OFNE ((uint32_t)0x00000004) /*!< Output FIFO is not empty */
  183. #define CRYP_FLAG_OFFU ((uint32_t)0x00000008) /*!< Output FIFO is Full */
  184. #define CRYP_FLAG_OUTRIS ((uint32_t)0x01000002) /*!< Output FIFO service raw
  185. interrupt status */
  186. #define CRYP_FLAG_INRIS ((uint32_t)0x01000001) /*!< Input FIFO service raw
  187. interrupt status */
  188. /**
  189. * @}
  190. */
  191. /**
  192. * @}
  193. */
  194. /* Exported macro ------------------------------------------------------------*/
  195. /** @brief Reset CRYP handle state
  196. * @param __HANDLE__: specifies the CRYP handle.
  197. * @retval None
  198. */
  199. #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)
  200. /**
  201. * @brief Enable/Disable the CRYP peripheral.
  202. * @param None
  203. * @retval None
  204. */
  205. #define __HAL_CRYP_ENABLE() (CRYP->CR |= CRYP_CR_CRYPEN)
  206. #define __HAL_CRYP_DISABLE() (CRYP->CR &= ~CRYP_CR_CRYPEN)
  207. /**
  208. * @brief Flush the data FIFO.
  209. * @param None
  210. * @retval None
  211. */
  212. #define __HAL_CRYP_FIFO_FLUSH() (CRYP->CR |= CRYP_CR_FFLUSH)
  213. /**
  214. * @brief Set the algorithm mode: AES-ECB, AES-CBC, AES-CTR, DES-ECB, DES-CBC.
  215. * @param MODE: The algorithm mode.
  216. * @retval None
  217. */
  218. #define __HAL_CRYP_SET_MODE(MODE) CRYP->CR |= (uint32_t)(MODE)
  219. /** @brief Check whether the specified CRYP flag is set or not.
  220. * @param __FLAG__: specifies the flag to check.
  221. * This parameter can be one of the following values:
  222. * @arg CRYP_FLAG_BUSY: The CRYP core is currently processing a block of data
  223. * or a key preparation (for AES decryption).
  224. * @arg CRYP_FLAG_IFEM: Input FIFO is empty
  225. * @arg CRYP_FLAG_IFNF: Input FIFO is not full
  226. * @arg CRYP_FLAG_INRIS: Input FIFO service raw interrupt is pending
  227. * @arg CRYP_FLAG_OFNE: Output FIFO is not empty
  228. * @arg CRYP_FLAG_OFFU: Output FIFO is full
  229. * @arg CRYP_FLAG_OUTRIS: Input FIFO service raw interrupt is pending
  230. * @retval The new state of __FLAG__ (TRUE or FALSE).
  231. */
  232. #define CRYP_FLAG_MASK ((uint32_t)0x0000001F)
  233. #define __HAL_CRYP_GET_FLAG(__FLAG__) ((((uint8_t)((__FLAG__) >> 24)) == 0x01)?(((CRYP->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)): \
  234. (((CRYP->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)))
  235. /** @brief Check whether the specified CRYP interrupt is set or not.
  236. * @param __INTERRUPT__: specifies the interrupt to check.
  237. * This parameter can be one of the following values:
  238. * @arg CRYP_IT_INRIS: Input FIFO service raw interrupt is pending
  239. * @arg CRYP_IT_OUTRIS: Output FIFO service raw interrupt is pending
  240. * @retval The new state of __INTERRUPT__ (TRUE or FALSE).
  241. */
  242. #define __HAL_CRYP_GET_IT(__INTERRUPT__) ((CRYP->MISR & (__INTERRUPT__)) == (__INTERRUPT__))
  243. /**
  244. * @brief Enable the CRYP interrupt.
  245. * @param __INTERRUPT__: CRYP Interrupt.
  246. * @retval None
  247. */
  248. #define __HAL_CRYP_ENABLE_IT(__INTERRUPT__) ((CRYP->IMSCR) |= (__INTERRUPT__))
  249. /**
  250. * @brief Disable the CRYP interrupt.
  251. * @param __INTERRUPT__: CRYP interrupt.
  252. * @retval None
  253. */
  254. #define __HAL_CRYP_DISABLE_IT(__INTERRUPT__) ((CRYP->IMSCR) &= ~(__INTERRUPT__))
  255. /* Include CRYP HAL Extension module */
  256. #include "stm32f4xx_hal_cryp_ex.h"
  257. /* Exported functions --------------------------------------------------------*/
  258. /* Initialization/de-initialization functions ********************************/
  259. HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp);
  260. HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp);
  261. /* AES encryption/decryption using polling ***********************************/
  262. HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  263. HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
  264. HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  265. HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
  266. HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  267. HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
  268. /* AES encryption/decryption using interrupt *********************************/
  269. HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  270. HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  271. HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  272. HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  273. HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  274. HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  275. /* AES encryption/decryption using DMA ***************************************/
  276. HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  277. HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  278. HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  279. HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  280. HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  281. HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  282. /* DES encryption/decryption using polling ***********************************/
  283. HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  284. HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  285. HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  286. HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  287. /* DES encryption/decryption using interrupt *********************************/
  288. HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  289. HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  290. HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  291. HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  292. /* DES encryption/decryption using DMA ***************************************/
  293. HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  294. HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  295. HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  296. HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  297. /* TDES encryption/decryption using polling **********************************/
  298. HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  299. HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
  300. HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
  301. HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
  302. /* TDES encryption/decryption using interrupt ********************************/
  303. HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  304. HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  305. HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  306. HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  307. /* TDES encryption/decryption using DMA **************************************/
  308. HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  309. HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  310. HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
  311. HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
  312. /* Processing functions ******************************************************/
  313. void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);
  314. /* Peripheral State functions ************************************************/
  315. HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);
  316. /* MSP functions *************************************************************/
  317. void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp);
  318. void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp);
  319. /* CallBack functions ********************************************************/
  320. void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp);
  321. void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp);
  322. void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp);
  323. #endif /* STM32F415xx || STM32F417xx || STM32F437xx || STM32F439xx */
  324. /**
  325. * @}
  326. */
  327. /**
  328. * @}
  329. */
  330. #ifdef __cplusplus
  331. }
  332. #endif
  333. #endif /* __STM32F4xx_HAL_CRYP_H */
  334. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/