2 ******************************************************************************
\r
3 * @file stm32f7xx_hal_cryp.h
\r
4 * @author MCD Application Team
\r
6 * @date 24-March-2015
\r
7 * @brief Header file of CRYP HAL module.
\r
8 ******************************************************************************
\r
11 * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
\r
13 * Redistribution and use in source and binary forms, with or without modification,
\r
14 * are permitted provided that the following conditions are met:
\r
15 * 1. Redistributions of source code must retain the above copyright notice,
\r
16 * this list of conditions and the following disclaimer.
\r
17 * 2. Redistributions in binary form must reproduce the above copyright notice,
\r
18 * this list of conditions and the following disclaimer in the documentation
\r
19 * and/or other materials provided with the distribution.
\r
20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
\r
21 * may be used to endorse or promote products derived from this software
\r
22 * without specific prior written permission.
\r
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
\r
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
\r
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
\r
27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
\r
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
\r
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
\r
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
\r
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
\r
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
\r
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\r
35 ******************************************************************************
\r
38 /* Define to prevent recursive inclusion -------------------------------------*/
\r
39 #ifndef __STM32F7xx_HAL_CRYP_H
\r
40 #define __STM32F7xx_HAL_CRYP_H
\r
46 #if defined(STM32F756xx)
\r
47 /* Includes ------------------------------------------------------------------*/
\r
48 #include "stm32f7xx_hal_def.h"
\r
50 /** @addtogroup STM32F7xx_HAL_Driver
\r
54 /** @addtogroup CRYP
\r
58 /* Exported types ------------------------------------------------------------*/
\r
60 /** @defgroup CRYP_Exported_Types CRYP Exported Types
\r
64 /** @defgroup CRYP_Exported_Types_Group1 CRYP Configuration Structure definition
\r
70 uint32_t DataType; /*!< 32-bit data, 16-bit data, 8-bit data or 1-bit string.
\r
71 This parameter can be a value of @ref CRYP CRYP_Data_Type */
\r
73 uint32_t KeySize; /*!< Used only in AES mode only : 128, 192 or 256 bit key length.
\r
74 This parameter can be a value of @ref CRYP CRYP_Key_Size */
\r
76 uint8_t* pKey; /*!< The key used for encryption/decryption */
\r
78 uint8_t* pInitVect; /*!< The initialization vector used also as initialization
\r
79 counter in CTR mode */
\r
81 uint8_t IVSize; /*!< The size of initialization vector.
\r
82 This parameter (called nonce size in CCM) is used only
\r
83 in AES-128/192/256 encryption/decryption CCM mode */
\r
85 uint8_t TagSize; /*!< The size of returned authentication TAG.
\r
86 This parameter is used only in AES-128/192/256
\r
87 encryption/decryption CCM mode */
\r
89 uint8_t* Header; /*!< The header used in GCM and CCM modes */
\r
91 uint32_t HeaderSize; /*!< The size of header buffer in bytes */
\r
93 uint8_t* pScratch; /*!< Scratch buffer used to append the header. It's size must be equal to header size + 21 bytes.
\r
94 This parameter is used only in AES-128/192/256 encryption/decryption CCM mode */
\r
101 /** @defgroup CRYP_Exported_Types_Group2 CRYP State structures definition
\r
108 HAL_CRYP_STATE_RESET = 0x00, /*!< CRYP not yet initialized or disabled */
\r
109 HAL_CRYP_STATE_READY = 0x01, /*!< CRYP initialized and ready for use */
\r
110 HAL_CRYP_STATE_BUSY = 0x02, /*!< CRYP internal processing is ongoing */
\r
111 HAL_CRYP_STATE_TIMEOUT = 0x03, /*!< CRYP timeout state */
\r
112 HAL_CRYP_STATE_ERROR = 0x04 /*!< CRYP error state */
\r
113 }HAL_CRYP_STATETypeDef;
\r
119 /** @defgroup CRYP_Exported_Types_Group3 CRYP phase structures definition
\r
126 HAL_CRYP_PHASE_READY = 0x01, /*!< CRYP peripheral is ready for initialization. */
\r
127 HAL_CRYP_PHASE_PROCESS = 0x02, /*!< CRYP peripheral is in processing phase */
\r
128 HAL_CRYP_PHASE_FINAL = 0x03 /*!< CRYP peripheral is in final phase
\r
129 This is relevant only with CCM and GCM modes */
\r
136 /** @defgroup CRYP_Exported_Types_Group4 CRYP handle Structure definition
\r
142 CRYP_TypeDef *Instance; /*!< CRYP registers base address */
\r
144 CRYP_InitTypeDef Init; /*!< CRYP required parameters */
\r
146 uint8_t *pCrypInBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
\r
148 uint8_t *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
\r
150 __IO uint16_t CrypInCount; /*!< Counter of inputed data */
\r
152 __IO uint16_t CrypOutCount; /*!< Counter of output data */
\r
154 HAL_StatusTypeDef Status; /*!< CRYP peripheral status */
\r
156 HAL_PhaseTypeDef Phase; /*!< CRYP peripheral phase */
\r
158 DMA_HandleTypeDef *hdmain; /*!< CRYP In DMA handle parameters */
\r
160 DMA_HandleTypeDef *hdmaout; /*!< CRYP Out DMA handle parameters */
\r
162 HAL_LockTypeDef Lock; /*!< CRYP locking object */
\r
164 __IO HAL_CRYP_STATETypeDef State; /*!< CRYP peripheral state */
\r
165 }CRYP_HandleTypeDef;
\r
175 /* Exported constants --------------------------------------------------------*/
\r
176 /** @defgroup CRYP_Exported_Constants CRYP Exported Constants
\r
180 /** @defgroup CRYP_Exported_Constants_Group1 CRYP CRYP_Key_Size
\r
183 #define CRYP_KEYSIZE_128B ((uint32_t)0x00000000)
\r
184 #define CRYP_KEYSIZE_192B CRYP_CR_KEYSIZE_0
\r
185 #define CRYP_KEYSIZE_256B CRYP_CR_KEYSIZE_1
\r
190 /** @defgroup CRYP_Exported_Constants_Group2 CRYP CRYP_Data_Type
\r
193 #define CRYP_DATATYPE_32B ((uint32_t)0x00000000)
\r
194 #define CRYP_DATATYPE_16B CRYP_CR_DATATYPE_0
\r
195 #define CRYP_DATATYPE_8B CRYP_CR_DATATYPE_1
\r
196 #define CRYP_DATATYPE_1B CRYP_CR_DATATYPE
\r
201 /** @defgroup CRYP_Exported_Constants_Group3 CRYP CRYP_AlgoModeDirection
\r
204 #define CRYP_CR_ALGOMODE_DIRECTION ((uint32_t)0x0008003C)
\r
205 #define CRYP_CR_ALGOMODE_TDES_ECB_ENCRYPT ((uint32_t)0x00000000)
\r
206 #define CRYP_CR_ALGOMODE_TDES_ECB_DECRYPT ((uint32_t)0x00000004)
\r
207 #define CRYP_CR_ALGOMODE_TDES_CBC_ENCRYPT ((uint32_t)0x00000008)
\r
208 #define CRYP_CR_ALGOMODE_TDES_CBC_DECRYPT ((uint32_t)0x0000000C)
\r
209 #define CRYP_CR_ALGOMODE_DES_ECB_ENCRYPT ((uint32_t)0x00000010)
\r
210 #define CRYP_CR_ALGOMODE_DES_ECB_DECRYPT ((uint32_t)0x00000014)
\r
211 #define CRYP_CR_ALGOMODE_DES_CBC_ENCRYPT ((uint32_t)0x00000018)
\r
212 #define CRYP_CR_ALGOMODE_DES_CBC_DECRYPT ((uint32_t)0x0000001C)
\r
213 #define CRYP_CR_ALGOMODE_AES_ECB_ENCRYPT ((uint32_t)0x00000020)
\r
214 #define CRYP_CR_ALGOMODE_AES_ECB_DECRYPT ((uint32_t)0x00000024)
\r
215 #define CRYP_CR_ALGOMODE_AES_CBC_ENCRYPT ((uint32_t)0x00000028)
\r
216 #define CRYP_CR_ALGOMODE_AES_CBC_DECRYPT ((uint32_t)0x0000002C)
\r
217 #define CRYP_CR_ALGOMODE_AES_CTR_ENCRYPT ((uint32_t)0x00000030)
\r
218 #define CRYP_CR_ALGOMODE_AES_CTR_DECRYPT ((uint32_t)0x00000034)
\r
223 /** @defgroup CRYP_Exported_Constants_Group4 CRYP CRYP_Interrupt
\r
226 #define CRYP_IT_INI ((uint32_t)CRYP_IMSCR_INIM) /*!< Input FIFO Interrupt */
\r
227 #define CRYP_IT_OUTI ((uint32_t)CRYP_IMSCR_OUTIM) /*!< Output FIFO Interrupt */
\r
232 /** @defgroup CRYP_Exported_Constants_Group5 CRYP CRYP_Flags
\r
235 #define CRYP_FLAG_BUSY ((uint32_t)0x00000010) /*!< The CRYP core is currently
\r
236 processing a block of data
\r
237 or a key preparation (for
\r
238 AES decryption). */
\r
239 #define CRYP_FLAG_IFEM ((uint32_t)0x00000001) /*!< Input FIFO is empty */
\r
240 #define CRYP_FLAG_IFNF ((uint32_t)0x00000002) /*!< Input FIFO is not Full */
\r
241 #define CRYP_FLAG_OFNE ((uint32_t)0x00000004) /*!< Output FIFO is not empty */
\r
242 #define CRYP_FLAG_OFFU ((uint32_t)0x00000008) /*!< Output FIFO is Full */
\r
243 #define CRYP_FLAG_OUTRIS ((uint32_t)0x01000002) /*!< Output FIFO service raw
\r
244 interrupt status */
\r
245 #define CRYP_FLAG_INRIS ((uint32_t)0x01000001) /*!< Input FIFO service raw
\r
246 interrupt status */
\r
255 /* Exported macro ------------------------------------------------------------*/
\r
256 /** @defgroup CRYP_Exported_Macros CRYP Exported Macros
\r
260 /** @brief Reset CRYP handle state
\r
261 * @param __HANDLE__: specifies the CRYP handle.
\r
264 #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)
\r
267 * @brief Enable/Disable the CRYP peripheral.
\r
268 * @param __HANDLE__: specifies the CRYP handle.
\r
271 #define __HAL_CRYP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRYP_CR_CRYPEN)
\r
272 #define __HAL_CRYP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~CRYP_CR_CRYPEN)
\r
275 * @brief Flush the data FIFO.
\r
276 * @param __HANDLE__: specifies the CRYP handle.
\r
279 #define __HAL_CRYP_FIFO_FLUSH(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRYP_CR_FFLUSH)
\r
282 * @brief Set the algorithm mode: AES-ECB, AES-CBC, AES-CTR, DES-ECB, DES-CBC.
\r
283 * @param __HANDLE__: specifies the CRYP handle.
\r
284 * @param MODE: The algorithm mode.
\r
287 #define __HAL_CRYP_SET_MODE(__HANDLE__, MODE) ((__HANDLE__)->Instance->CR |= (uint32_t)(MODE))
\r
289 /** @brief Check whether the specified CRYP flag is set or not.
\r
290 * @param __HANDLE__: specifies the CRYP handle.
\r
291 * @param __FLAG__: specifies the flag to check.
\r
292 * This parameter can be one of the following values:
\r
293 * @arg CRYP_FLAG_BUSY: The CRYP core is currently processing a block of data
\r
294 * or a key preparation (for AES decryption).
\r
295 * @arg CRYP_FLAG_IFEM: Input FIFO is empty
\r
296 * @arg CRYP_FLAG_IFNF: Input FIFO is not full
\r
297 * @arg CRYP_FLAG_INRIS: Input FIFO service raw interrupt is pending
\r
298 * @arg CRYP_FLAG_OFNE: Output FIFO is not empty
\r
299 * @arg CRYP_FLAG_OFFU: Output FIFO is full
\r
300 * @arg CRYP_FLAG_OUTRIS: Input FIFO service raw interrupt is pending
\r
301 * @retval The new state of __FLAG__ (TRUE or FALSE).
\r
304 #define __HAL_CRYP_GET_FLAG(__HANDLE__, __FLAG__) ((((uint8_t)((__FLAG__) >> 24)) == 0x01)?((((__HANDLE__)->Instance->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)): \
\r
305 ((((__HANDLE__)->Instance->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)))
\r
307 /** @brief Check whether the specified CRYP interrupt is set or not.
\r
308 * @param __HANDLE__: specifies the CRYP handle.
\r
309 * @param __INTERRUPT__: specifies the interrupt to check.
\r
310 * This parameter can be one of the following values:
\r
311 * @arg CRYP_IT_INRIS: Input FIFO service raw interrupt is pending
\r
312 * @arg CRYP_IT_OUTRIS: Output FIFO service raw interrupt is pending
\r
313 * @retval The new state of __INTERRUPT__ (TRUE or FALSE).
\r
315 #define __HAL_CRYP_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->MISR & (__INTERRUPT__)) == (__INTERRUPT__))
\r
318 * @brief Enable the CRYP interrupt.
\r
319 * @param __HANDLE__: specifies the CRYP handle.
\r
320 * @param __INTERRUPT__: CRYP Interrupt.
\r
323 #define __HAL_CRYP_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IMSCR) |= (__INTERRUPT__))
\r
326 * @brief Disable the CRYP interrupt.
\r
327 * @param __HANDLE__: specifies the CRYP handle.
\r
328 * @param __INTERRUPT__: CRYP interrupt.
\r
331 #define __HAL_CRYP_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IMSCR) &= ~(__INTERRUPT__))
\r
337 /* Include CRYP HAL Extension module */
\r
338 #include "stm32f7xx_hal_cryp_ex.h"
\r
340 /* Exported functions --------------------------------------------------------*/
\r
341 /** @defgroup CRYP_Exported_Functions CRYP Exported Functions
\r
345 /** @addtogroup CRYP_Exported_Functions_Group1
\r
348 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp);
\r
349 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp);
\r
350 void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp);
\r
351 void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp);
\r
356 /** @addtogroup CRYP_Exported_Functions_Group2
\r
359 /* AES encryption/decryption using polling ***********************************/
\r
360 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
361 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
\r
362 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
363 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
\r
364 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
365 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
\r
367 /* AES encryption/decryption using interrupt *********************************/
\r
368 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
369 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
370 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
371 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
372 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
373 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
375 /* AES encryption/decryption using DMA ***************************************/
\r
376 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
377 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
378 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
379 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
380 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
381 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
386 /** @addtogroup CRYP_Exported_Functions_Group3
\r
389 /* DES encryption/decryption using polling ***********************************/
\r
390 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
391 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
392 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
393 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
395 /* DES encryption/decryption using interrupt *********************************/
\r
396 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
397 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
398 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
399 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
401 /* DES encryption/decryption using DMA ***************************************/
\r
402 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
403 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
404 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
405 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
410 /** @addtogroup CRYP_Exported_Functions_Group4
\r
413 /* TDES encryption/decryption using polling **********************************/
\r
414 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
415 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
\r
416 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
\r
417 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
\r
419 /* TDES encryption/decryption using interrupt ********************************/
\r
420 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
421 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
422 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
423 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
425 /* TDES encryption/decryption using DMA **************************************/
\r
426 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
427 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
428 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
\r
429 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
\r
434 /** @addtogroup CRYP_Exported_Functions_Group5
\r
437 void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp);
\r
438 void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp);
\r
439 void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp);
\r
444 /** @addtogroup CRYP_Exported_Functions_Group6
\r
447 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);
\r
452 /** @addtogroup CRYP_Exported_Functions_Group7
\r
455 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);
\r
464 /* Private types -------------------------------------------------------------*/
\r
465 /** @defgroup CRYP_Private_Types CRYP Private Types
\r
473 /* Private variables ---------------------------------------------------------*/
\r
474 /** @defgroup CRYP_Private_Variables CRYP Private Variables
\r
482 /* Private constants ---------------------------------------------------------*/
\r
483 /** @defgroup CRYP_Private_Constants CRYP Private Constants
\r
486 #define CRYP_FLAG_MASK ((uint32_t)0x0000001F)
\r
491 /* Private macros ------------------------------------------------------------*/
\r
492 /** @defgroup CRYP_Private_Macros CRYP Private Macros
\r
496 #define IS_CRYP_KEYSIZE(__KEYSIZE__) (((__KEYSIZE__) == CRYP_KEYSIZE_128B) || \
\r
497 ((__KEYSIZE__) == CRYP_KEYSIZE_192B) || \
\r
498 ((__KEYSIZE__) == CRYP_KEYSIZE_256B))
\r
501 #define IS_CRYP_DATATYPE(__DATATYPE__) (((__DATATYPE__) == CRYP_DATATYPE_32B) || \
\r
502 ((__DATATYPE__) == CRYP_DATATYPE_16B) || \
\r
503 ((__DATATYPE__) == CRYP_DATATYPE_8B) || \
\r
504 ((__DATATYPE__) == CRYP_DATATYPE_1B))
\r
511 /* Private functions ---------------------------------------------------------*/
\r
512 /** @defgroup CRYP_Private_Functions CRYP Private Functions
\r
520 #endif /* STM32F756xx */
\r
534 #endif /* __STM32F7xx_HAL_CRYP_H */
\r
536 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
\r