]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32F4/stm32f4xx_hal_cryp.h
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_STM / TARGET_STM32F4 / stm32f4xx_hal_cryp.h
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
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F4xx_HAL_CRYP_H
40 #define __STM32F4xx_HAL_CRYP_H
41
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45
46 #if defined(STM32F415xx) || defined(STM32F417xx) || defined(STM32F437xx) || defined(STM32F439xx)
47 /* Includes ------------------------------------------------------------------*/
48 #include "stm32f4xx_hal_def.h"
49
50 /** @addtogroup STM32F4xx_HAL_Driver
51   * @{
52   */
53
54 /** @addtogroup CRYP
55   * @{
56   */
57
58 /* Exported types ------------------------------------------------------------*/
59
60 /** 
61   * @brief  CRYP Configuration Structure definition
62   */
63 typedef struct
64 {
65   uint32_t DataType;    /*!< 32-bit data, 16-bit data, 8-bit data or 1-bit string.
66                              This parameter can be a value of @ref CRYP_Data_Type */
67
68   uint32_t KeySize;     /*!< Used only in AES mode only : 128, 192 or 256 bit key length. 
69                              This parameter can be a value of @ref CRYP_Key_Size */
70
71   uint8_t* pKey;        /*!< The key used for encryption/decryption */
72
73   uint8_t* pInitVect;   /*!< The initialization vector used also as initialization
74                              counter in CTR mode */
75
76   uint8_t IVSize;       /*!< The size of initialization vector. 
77                              This parameter (called nonce size in CCM) is used only 
78                              in AES-128/192/256 encryption/decryption CCM mode */
79
80   uint8_t TagSize;      /*!< The size of returned authentication TAG. 
81                              This parameter is used only in AES-128/192/256 
82                              encryption/decryption CCM mode */
83
84   uint8_t* Header;      /*!< The header used in GCM and CCM modes */
85
86   uint16_t HeaderSize;  /*!< The size of header buffer in bytes */
87
88   uint8_t* pScratch;    /*!< Scratch buffer used to append the header. It's size must be equal to header size + 21 bytes.
89                              This parameter is used only in AES-128/192/256 encryption/decryption CCM mode */
90 }CRYP_InitTypeDef;
91
92 /** 
93   * @brief HAL CRYP State structures definition
94   */
95 typedef enum
96 {
97   HAL_CRYP_STATE_RESET             = 0x00,  /*!< CRYP not yet initialized or disabled  */
98   HAL_CRYP_STATE_READY             = 0x01,  /*!< CRYP initialized and ready for use    */
99   HAL_CRYP_STATE_BUSY              = 0x02,  /*!< CRYP internal processing is ongoing   */
100   HAL_CRYP_STATE_TIMEOUT           = 0x03,  /*!< CRYP timeout state                    */
101   HAL_CRYP_STATE_ERROR             = 0x04   /*!< CRYP error state                      */
102 }HAL_CRYP_STATETypeDef;
103
104 /** 
105   * @brief HAL CRYP phase structures definition
106   */
107 typedef enum
108 {
109   HAL_CRYP_PHASE_READY             = 0x01,    /*!< CRYP peripheral is ready for initialization. */
110   HAL_CRYP_PHASE_PROCESS           = 0x02,    /*!< CRYP peripheral is in processing phase */
111   HAL_CRYP_PHASE_FINAL             = 0x03     /*!< CRYP peripheral is in final phase
112                                                    This is relevant only with CCM and GCM modes */
113 }HAL_PhaseTypeDef;
114
115 /** 
116   * @brief  CRYP handle Structure definition
117   */ 
118 typedef struct
119 {
120       CRYP_InitTypeDef         Init;             /*!< CRYP required parameters */
121
122       uint8_t                  *pCrypInBuffPtr;  /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
123
124       uint8_t                  *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
125
126       __IO uint16_t            CrypInCount;      /*!< Counter of inputed data */
127
128       __IO uint16_t            CrypOutCount;     /*!< Counter of outputed data */
129
130       HAL_StatusTypeDef        Status;           /*!< CRYP peripheral status */
131
132       HAL_PhaseTypeDef         Phase;            /*!< CRYP peripheral phase */
133
134       DMA_HandleTypeDef        *hdmain;          /*!< CRYP In DMA handle parameters */
135
136       DMA_HandleTypeDef        *hdmaout;         /*!< CRYP Out DMA handle parameters */
137
138       HAL_LockTypeDef          Lock;             /*!< CRYP locking object */
139
140    __IO  HAL_CRYP_STATETypeDef State;            /*!< CRYP peripheral state */
141 }CRYP_HandleTypeDef;
142
143 /* Exported constants --------------------------------------------------------*/
144
145 /** @defgroup CRYP_Exported_Constants
146   * @{
147   */
148
149 /** @defgroup CRYP_Key_Size 
150   * @{
151   */
152 #define CRYP_KEYSIZE_128B         ((uint32_t)0x00000000)
153 #define CRYP_KEYSIZE_192B         CRYP_CR_KEYSIZE_0
154 #define CRYP_KEYSIZE_256B         CRYP_CR_KEYSIZE_1
155
156 #define IS_CRYP_KEYSIZE(KEYSIZE)  (((KEYSIZE) == CRYP_KEYSIZE_128B)  || \
157                                    ((KEYSIZE) == CRYP_KEYSIZE_192B)  || \
158                                    ((KEYSIZE) == CRYP_KEYSIZE_256B))
159 /**
160   * @}
161   */
162
163 /** @defgroup CRYP_Data_Type 
164   * @{
165   */
166 #define CRYP_DATATYPE_32B         ((uint32_t)0x00000000)
167 #define CRYP_DATATYPE_16B         CRYP_CR_DATATYPE_0
168 #define CRYP_DATATYPE_8B          CRYP_CR_DATATYPE_1
169 #define CRYP_DATATYPE_1B          CRYP_CR_DATATYPE
170
171 #define IS_CRYP_DATATYPE(DATATYPE) (((DATATYPE) == CRYP_DATATYPE_32B) || \
172                                     ((DATATYPE) == CRYP_DATATYPE_16B) || \
173                                     ((DATATYPE) == CRYP_DATATYPE_8B)  || \
174                                     ((DATATYPE) == CRYP_DATATYPE_1B))  
175 /**
176   * @}
177   */
178
179 /** @defgroup CRYP_AlgoModeDirection
180   * @{
181   */ 
182 #define CRYP_CR_ALGOMODE_DIRECTION         ((uint32_t)0x0008003C)
183 #define CRYP_CR_ALGOMODE_TDES_ECB_ENCRYPT  ((uint32_t)0x00000000)
184 #define CRYP_CR_ALGOMODE_TDES_ECB_DECRYPT  ((uint32_t)0x00000004)
185 #define CRYP_CR_ALGOMODE_TDES_CBC_ENCRYPT  ((uint32_t)0x00000008)
186 #define CRYP_CR_ALGOMODE_TDES_CBC_DECRYPT  ((uint32_t)0x0000000C)
187 #define CRYP_CR_ALGOMODE_DES_ECB_ENCRYPT   ((uint32_t)0x00000010)
188 #define CRYP_CR_ALGOMODE_DES_ECB_DECRYPT   ((uint32_t)0x00000014)
189 #define CRYP_CR_ALGOMODE_DES_CBC_ENCRYPT   ((uint32_t)0x00000018)
190 #define CRYP_CR_ALGOMODE_DES_CBC_DECRYPT   ((uint32_t)0x0000001C)
191 #define CRYP_CR_ALGOMODE_AES_ECB_ENCRYPT   ((uint32_t)0x00000020)
192 #define CRYP_CR_ALGOMODE_AES_ECB_DECRYPT   ((uint32_t)0x00000024)
193 #define CRYP_CR_ALGOMODE_AES_CBC_ENCRYPT   ((uint32_t)0x00000028)
194 #define CRYP_CR_ALGOMODE_AES_CBC_DECRYPT   ((uint32_t)0x0000002C)
195 #define CRYP_CR_ALGOMODE_AES_CTR_ENCRYPT   ((uint32_t)0x00000030)
196 #define CRYP_CR_ALGOMODE_AES_CTR_DECRYPT   ((uint32_t)0x00000034)
197 /**
198   * @}
199   */
200   
201 /** @defgroup CRYP_Interrupt
202   * @{
203   */
204 #define CRYP_IT_INI               ((uint32_t)CRYP_IMSCR_INIM)   /*!< Input FIFO Interrupt */
205 #define CRYP_IT_OUTI              ((uint32_t)CRYP_IMSCR_OUTIM)  /*!< Output FIFO Interrupt */
206 /**
207   * @}
208   */
209
210 /** @defgroup CRYP_Flags 
211   * @{
212   */
213
214 #define CRYP_FLAG_BUSY   ((uint32_t)0x00000010)  /*!< The CRYP core is currently 
215                                                      processing a block of data 
216                                                      or a key preparation (for 
217                                                      AES decryption). */
218 #define CRYP_FLAG_IFEM   ((uint32_t)0x00000001)  /*!< Input FIFO is empty */
219 #define CRYP_FLAG_IFNF   ((uint32_t)0x00000002)  /*!< Input FIFO is not Full */
220 #define CRYP_FLAG_OFNE   ((uint32_t)0x00000004)  /*!< Output FIFO is not empty */
221 #define CRYP_FLAG_OFFU   ((uint32_t)0x00000008)  /*!< Output FIFO is Full */
222 #define CRYP_FLAG_OUTRIS ((uint32_t)0x01000002)  /*!< Output FIFO service raw 
223                                                       interrupt status */
224 #define CRYP_FLAG_INRIS  ((uint32_t)0x01000001)  /*!< Input FIFO service raw 
225                                                       interrupt status */
226 /**
227   * @}
228   */
229
230 /**
231   * @}
232   */
233
234 /* Exported macro ------------------------------------------------------------*/
235
236 /** @brief Reset CRYP handle state
237   * @param  __HANDLE__: specifies the CRYP handle.
238   * @retval None
239   */
240 #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)
241
242 /**
243   * @brief  Enable/Disable the CRYP peripheral.
244   * @param  None
245   * @retval None
246   */
247 #define __HAL_CRYP_ENABLE()  (CRYP->CR |=  CRYP_CR_CRYPEN)
248 #define __HAL_CRYP_DISABLE() (CRYP->CR &=  ~CRYP_CR_CRYPEN)
249
250 /**
251   * @brief  Flush the data FIFO.
252   * @param  None
253   * @retval None
254   */
255 #define __HAL_CRYP_FIFO_FLUSH() (CRYP->CR |=  CRYP_CR_FFLUSH)
256
257 /**
258   * @brief  Set the algorithm mode: AES-ECB, AES-CBC, AES-CTR, DES-ECB, DES-CBC.
259   * @param  MODE: The algorithm mode.
260   * @retval None
261   */
262 #define __HAL_CRYP_SET_MODE(MODE)  CRYP->CR |= (uint32_t)(MODE)
263
264 /** @brief  Check whether the specified CRYP flag is set or not.
265   * @param  __FLAG__: specifies the flag to check.
266   *         This parameter can be one of the following values:
267   *            @arg CRYP_FLAG_BUSY: The CRYP core is currently processing a block of data 
268   *                                 or a key preparation (for AES decryption). 
269   *            @arg CRYP_FLAG_IFEM: Input FIFO is empty
270   *            @arg CRYP_FLAG_IFNF: Input FIFO is not full
271   *            @arg CRYP_FLAG_INRIS: Input FIFO service raw interrupt is pending
272   *            @arg CRYP_FLAG_OFNE: Output FIFO is not empty
273   *            @arg CRYP_FLAG_OFFU: Output FIFO is full
274   *            @arg CRYP_FLAG_OUTRIS: Input FIFO service raw interrupt is pending
275   * @retval The new state of __FLAG__ (TRUE or FALSE).
276   */
277 #define CRYP_FLAG_MASK  ((uint32_t)0x0000001F)
278 #define __HAL_CRYP_GET_FLAG(__FLAG__) ((((uint8_t)((__FLAG__) >> 24)) == 0x01)?(((CRYP->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)): \
279                                                  (((CRYP->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)))
280
281 /** @brief  Check whether the specified CRYP interrupt is set or not.
282   * @param  __INTERRUPT__: specifies the interrupt to check.
283   *         This parameter can be one of the following values:
284   *            @arg CRYP_IT_INRIS: Input FIFO service raw interrupt is pending
285   *            @arg CRYP_IT_OUTRIS: Output FIFO service raw interrupt is pending
286   * @retval The new state of __INTERRUPT__ (TRUE or FALSE).
287   */
288 #define __HAL_CRYP_GET_IT(__INTERRUPT__) ((CRYP->MISR & (__INTERRUPT__)) == (__INTERRUPT__))
289
290 /**
291   * @brief  Enable the CRYP interrupt.
292   * @param  __INTERRUPT__: CRYP Interrupt.
293   * @retval None
294   */
295 #define __HAL_CRYP_ENABLE_IT(__INTERRUPT__) ((CRYP->IMSCR) |= (__INTERRUPT__))
296
297 /**
298   * @brief  Disable the CRYP interrupt.
299   * @param  __INTERRUPT__: CRYP interrupt.
300   * @retval None
301   */
302 #define __HAL_CRYP_DISABLE_IT(__INTERRUPT__) ((CRYP->IMSCR) &= ~(__INTERRUPT__))
303
304 /* Include CRYP HAL Extension module */
305 #include "stm32f4xx_hal_cryp_ex.h"
306
307 /* Exported functions --------------------------------------------------------*/
308 /* Initialization/de-initialization functions  ********************************/
309 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp);
310 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp);
311
312 /* AES encryption/decryption using polling  ***********************************/
313 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
314 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
315 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
316 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
317 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
318 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
319
320 /* AES encryption/decryption using interrupt  *********************************/
321 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
322 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
323 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
324 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
325 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
326 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
327
328 /* AES encryption/decryption using DMA  ***************************************/
329 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
330 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
331 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
332 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
333 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
334 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
335
336 /* DES encryption/decryption using polling  ***********************************/
337 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
338 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
339 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
340 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
341
342 /* DES encryption/decryption using interrupt  *********************************/
343 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
344 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
345 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
346 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
347
348 /* DES encryption/decryption using DMA  ***************************************/
349 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
350 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
351 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
352 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
353
354 /* TDES encryption/decryption using polling  **********************************/
355 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
356 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
357 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
358 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
359
360 /* TDES encryption/decryption using interrupt  ********************************/
361 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
362 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
363 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
364 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
365
366 /* TDES encryption/decryption using DMA  **************************************/
367 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
368 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
369 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
370 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
371
372 /* Processing functions  ******************************************************/
373 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);
374
375 /* Peripheral State functions  ************************************************/
376 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);
377
378 /* MSP functions  *************************************************************/
379 void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp);
380 void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp);
381
382 /* CallBack functions  ********************************************************/
383 void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp);
384 void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp);
385 void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp);
386
387 #endif /* STM32F415xx || STM32F417xx || STM32F437xx || STM32F439xx */
388
389 /**
390   * @}
391   */ 
392
393 /**
394   * @}
395   */ 
396   
397 #ifdef __cplusplus
398 }
399 #endif
400
401 #endif /* __STM32F4xx_HAL_CRYP_H */
402
403 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/