]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL/ST_Library/include/stm32f7xx_hal_cryp.h
Update version number ready for V8.2.1 release.
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL / ST_Library / include / stm32f7xx_hal_cryp.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_cryp.h\r
4   * @author  MCD Application Team\r
5   * @version V0.3.0\r
6   * @date    06-March-2015\r
7   * @brief   Header file of CRYP HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\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
23   *\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
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_CRYP_H\r
40 #define __STM32F7xx_HAL_CRYP_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 #if defined(STM32F756xx)\r
47 /* Includes ------------------------------------------------------------------*/\r
48 #include "stm32f7xx_hal_def.h"\r
49 \r
50 /** @addtogroup STM32F7xx_HAL_Driver\r
51   * @{\r
52   */\r
53 \r
54 /** @addtogroup CRYP\r
55   * @{\r
56   */\r
57 \r
58 /* Exported types ------------------------------------------------------------*/\r
59 \r
60 /** @defgroup CRYP_Exported_Types CRYP Exported Types\r
61   * @{\r
62   */\r
63 \r
64 /** @defgroup CRYP_Exported_Types_Group1 CRYP Configuration Structure definition\r
65   * @{\r
66   */\r
67 \r
68 typedef struct\r
69 {\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
72 \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
75 \r
76   uint8_t* pKey;        /*!< The key used for encryption/decryption */\r
77 \r
78   uint8_t* pInitVect;   /*!< The initialization vector used also as initialization\r
79                              counter in CTR mode */\r
80 \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
84 \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
88 \r
89   uint8_t* Header;      /*!< The header used in GCM and CCM modes */\r
90 \r
91   uint32_t HeaderSize;  /*!< The size of header buffer in bytes */\r
92 \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
95 }CRYP_InitTypeDef;\r
96 \r
97 /** \r
98   * @}\r
99   */\r
100 \r
101 /** @defgroup CRYP_Exported_Types_Group2 CRYP State structures definition\r
102   * @{\r
103   */\r
104     \r
105 \r
106 typedef enum\r
107 {\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
114 \r
115 /** \r
116   * @}\r
117   */\r
118   \r
119 /** @defgroup CRYP_Exported_Types_Group3 CRYP phase structures definition\r
120   * @{\r
121   */\r
122     \r
123 \r
124 typedef enum\r
125 {\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
130 }HAL_PhaseTypeDef;\r
131 \r
132 /** \r
133   * @}\r
134   */\r
135   \r
136 /** @defgroup CRYP_Exported_Types_Group4 CRYP handle Structure definition\r
137   * @{\r
138   */\r
139   \r
140 typedef struct\r
141 {\r
142       CRYP_InitTypeDef         Init;             /*!< CRYP required parameters */\r
143 \r
144       uint8_t                  *pCrypInBuffPtr;  /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */\r
145 \r
146       uint8_t                  *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */\r
147 \r
148       __IO uint16_t            CrypInCount;      /*!< Counter of inputed data */\r
149 \r
150       __IO uint16_t            CrypOutCount;     /*!< Counter of output data */\r
151 \r
152       HAL_StatusTypeDef        Status;           /*!< CRYP peripheral status */\r
153 \r
154       HAL_PhaseTypeDef         Phase;            /*!< CRYP peripheral phase */\r
155 \r
156       DMA_HandleTypeDef        *hdmain;          /*!< CRYP In DMA handle parameters */\r
157 \r
158       DMA_HandleTypeDef        *hdmaout;         /*!< CRYP Out DMA handle parameters */\r
159 \r
160       HAL_LockTypeDef          Lock;             /*!< CRYP locking object */\r
161 \r
162    __IO  HAL_CRYP_STATETypeDef State;            /*!< CRYP peripheral state */\r
163 }CRYP_HandleTypeDef;\r
164 \r
165 /** \r
166   * @}\r
167   */\r
168 \r
169 /** \r
170   * @}\r
171   */\r
172     \r
173 /* Exported constants --------------------------------------------------------*/\r
174 /** @defgroup CRYP_Exported_Constants CRYP Exported Constants\r
175   * @{\r
176   */\r
177 \r
178 /** @defgroup CRYP_Exported_Constants_Group1 CRYP CRYP_Key_Size\r
179   * @{\r
180   */\r
181 #define CRYP_KEYSIZE_128B         ((uint32_t)0x00000000)\r
182 #define CRYP_KEYSIZE_192B         CRYP_CR_KEYSIZE_0\r
183 #define CRYP_KEYSIZE_256B         CRYP_CR_KEYSIZE_1\r
184 /**                                \r
185   * @}\r
186   */\r
187 \r
188 /** @defgroup CRYP_Exported_Constants_Group2 CRYP CRYP_Data_Type\r
189   * @{\r
190   */\r
191 #define CRYP_DATATYPE_32B         ((uint32_t)0x00000000)\r
192 #define CRYP_DATATYPE_16B         CRYP_CR_DATATYPE_0\r
193 #define CRYP_DATATYPE_8B          CRYP_CR_DATATYPE_1\r
194 #define CRYP_DATATYPE_1B          CRYP_CR_DATATYPE\r
195 /**                                \r
196   * @}\r
197   */\r
198 \r
199 /** @defgroup CRYP_Exported_Constants_Group3 CRYP CRYP_AlgoModeDirection\r
200   * @{\r
201   */\r
202 #define CRYP_CR_ALGOMODE_DIRECTION         ((uint32_t)0x0008003C)\r
203 #define CRYP_CR_ALGOMODE_TDES_ECB_ENCRYPT  ((uint32_t)0x00000000)\r
204 #define CRYP_CR_ALGOMODE_TDES_ECB_DECRYPT  ((uint32_t)0x00000004)\r
205 #define CRYP_CR_ALGOMODE_TDES_CBC_ENCRYPT  ((uint32_t)0x00000008)\r
206 #define CRYP_CR_ALGOMODE_TDES_CBC_DECRYPT  ((uint32_t)0x0000000C)\r
207 #define CRYP_CR_ALGOMODE_DES_ECB_ENCRYPT   ((uint32_t)0x00000010)\r
208 #define CRYP_CR_ALGOMODE_DES_ECB_DECRYPT   ((uint32_t)0x00000014)\r
209 #define CRYP_CR_ALGOMODE_DES_CBC_ENCRYPT   ((uint32_t)0x00000018)\r
210 #define CRYP_CR_ALGOMODE_DES_CBC_DECRYPT   ((uint32_t)0x0000001C)\r
211 #define CRYP_CR_ALGOMODE_AES_ECB_ENCRYPT   ((uint32_t)0x00000020)\r
212 #define CRYP_CR_ALGOMODE_AES_ECB_DECRYPT   ((uint32_t)0x00000024)\r
213 #define CRYP_CR_ALGOMODE_AES_CBC_ENCRYPT   ((uint32_t)0x00000028)\r
214 #define CRYP_CR_ALGOMODE_AES_CBC_DECRYPT   ((uint32_t)0x0000002C)\r
215 #define CRYP_CR_ALGOMODE_AES_CTR_ENCRYPT   ((uint32_t)0x00000030)\r
216 #define CRYP_CR_ALGOMODE_AES_CTR_DECRYPT   ((uint32_t)0x00000034)\r
217 /**\r
218   * @}\r
219   */\r
220   \r
221 /** @defgroup CRYP_Exported_Constants_Group4 CRYP CRYP_Interrupt\r
222   * @{\r
223   */\r
224 #define CRYP_IT_INI               ((uint32_t)CRYP_IMSCR_INIM)   /*!< Input FIFO Interrupt */\r
225 #define CRYP_IT_OUTI              ((uint32_t)CRYP_IMSCR_OUTIM)  /*!< Output FIFO Interrupt */\r
226 /**\r
227   * @}\r
228   */\r
229 \r
230 /** @defgroup CRYP_Exported_Constants_Group5 CRYP CRYP_Flags\r
231   * @{\r
232   */\r
233 #define CRYP_FLAG_BUSY   ((uint32_t)0x00000010)  /*!< The CRYP core is currently \r
234                                                      processing a block of data \r
235                                                      or a key preparation (for \r
236                                                      AES decryption). */\r
237 #define CRYP_FLAG_IFEM   ((uint32_t)0x00000001)  /*!< Input FIFO is empty */\r
238 #define CRYP_FLAG_IFNF   ((uint32_t)0x00000002)  /*!< Input FIFO is not Full */\r
239 #define CRYP_FLAG_OFNE   ((uint32_t)0x00000004)  /*!< Output FIFO is not empty */\r
240 #define CRYP_FLAG_OFFU   ((uint32_t)0x00000008)  /*!< Output FIFO is Full */\r
241 #define CRYP_FLAG_OUTRIS ((uint32_t)0x01000002)  /*!< Output FIFO service raw \r
242                                                       interrupt status */\r
243 #define CRYP_FLAG_INRIS  ((uint32_t)0x01000001)  /*!< Input FIFO service raw \r
244                                                       interrupt status */\r
245 /**\r
246   * @}\r
247   */\r
248 \r
249 /**\r
250   * @}\r
251   */\r
252 \r
253 /* Exported macro ------------------------------------------------------------*/\r
254 /** @defgroup CRYP_Exported_Macros CRYP Exported Macros\r
255   * @{\r
256   */\r
257   \r
258 /** @brief Reset CRYP handle state\r
259   * @param  __HANDLE__: specifies the CRYP handle.\r
260   * @retval None\r
261   */\r
262 #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)\r
263 \r
264 /**\r
265   * @brief  Enable/Disable the CRYP peripheral.\r
266   * @retval None\r
267   */\r
268 #define __HAL_CRYP_ENABLE()  (CRYP->CR |=  CRYP_CR_CRYPEN)\r
269 #define __HAL_CRYP_DISABLE() (CRYP->CR &=  ~CRYP_CR_CRYPEN)\r
270 \r
271 /**\r
272   * @brief  Flush the data FIFO.\r
273   * @retval None\r
274   */\r
275 #define __HAL_CRYP_FIFO_FLUSH() (CRYP->CR |=  CRYP_CR_FFLUSH)\r
276 \r
277 /**\r
278   * @brief  Set the algorithm mode: AES-ECB, AES-CBC, AES-CTR, DES-ECB, DES-CBC.\r
279   * @param  MODE: The algorithm mode.\r
280   * @retval None\r
281   */\r
282 #define __HAL_CRYP_SET_MODE(MODE)  CRYP->CR |= (uint32_t)(MODE)\r
283 \r
284 /** @brief  Check whether the specified CRYP flag is set or not.\r
285   * @param  __FLAG__: specifies the flag to check.\r
286   *         This parameter can be one of the following values:\r
287   *            @arg CRYP_FLAG_BUSY: The CRYP core is currently processing a block of data \r
288   *                                 or a key preparation (for AES decryption). \r
289   *            @arg CRYP_FLAG_IFEM: Input FIFO is empty\r
290   *            @arg CRYP_FLAG_IFNF: Input FIFO is not full\r
291   *            @arg CRYP_FLAG_INRIS: Input FIFO service raw interrupt is pending\r
292   *            @arg CRYP_FLAG_OFNE: Output FIFO is not empty\r
293   *            @arg CRYP_FLAG_OFFU: Output FIFO is full\r
294   *            @arg CRYP_FLAG_OUTRIS: Input FIFO service raw interrupt is pending\r
295   * @retval The new state of __FLAG__ (TRUE or FALSE).\r
296   */\r
297 \r
298 #define __HAL_CRYP_GET_FLAG(__FLAG__) ((((uint8_t)((__FLAG__) >> 24)) == 0x01)?(((CRYP->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)): \\r
299                                                  (((CRYP->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)))\r
300 \r
301 /** @brief  Check whether the specified CRYP interrupt is set or not.\r
302   * @param  __INTERRUPT__: specifies the interrupt to check.\r
303   *         This parameter can be one of the following values:\r
304   *            @arg CRYP_IT_INRIS: Input FIFO service raw interrupt is pending\r
305   *            @arg CRYP_IT_OUTRIS: Output FIFO service raw interrupt is pending\r
306   * @retval The new state of __INTERRUPT__ (TRUE or FALSE).\r
307   */\r
308 #define __HAL_CRYP_GET_IT(__INTERRUPT__) ((CRYP->MISR & (__INTERRUPT__)) == (__INTERRUPT__))\r
309 \r
310 /**\r
311   * @brief  Enable the CRYP interrupt.\r
312   * @param  __INTERRUPT__: CRYP Interrupt.\r
313   * @retval None\r
314   */\r
315 #define __HAL_CRYP_ENABLE_IT(__INTERRUPT__) ((CRYP->IMSCR) |= (__INTERRUPT__))\r
316 \r
317 /**\r
318   * @brief  Disable the CRYP interrupt.\r
319   * @param  __INTERRUPT__: CRYP interrupt.\r
320   * @retval None\r
321   */\r
322 #define __HAL_CRYP_DISABLE_IT(__INTERRUPT__) ((CRYP->IMSCR) &= ~(__INTERRUPT__))\r
323 \r
324 /**\r
325   * @}\r
326   */ \r
327   \r
328 /* Include CRYP HAL Extension module */\r
329 #include "stm32f7xx_hal_cryp_ex.h"\r
330 \r
331 /* Exported functions --------------------------------------------------------*/\r
332 /** @defgroup CRYP_Exported_Functions CRYP Exported Functions\r
333   * @{\r
334   */\r
335 \r
336 /** @addtogroup CRYP_Exported_Functions_Group1\r
337   * @{\r
338   */    \r
339 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp);\r
340 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp);\r
341 void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp);\r
342 void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp);\r
343 /**\r
344   * @}\r
345   */ \r
346 \r
347 /** @addtogroup CRYP_Exported_Functions_Group2\r
348   * @{\r
349   */  \r
350 /* AES encryption/decryption using polling  ***********************************/\r
351 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
352 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);\r
353 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
354 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);\r
355 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
356 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);\r
357 \r
358 /* AES encryption/decryption using interrupt  *********************************/\r
359 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
360 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
361 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
362 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
363 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
364 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
365 \r
366 /* AES encryption/decryption using DMA  ***************************************/\r
367 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
368 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
369 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
370 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
371 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
372 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
373 /**\r
374   * @}\r
375   */ \r
376 \r
377 /** @addtogroup CRYP_Exported_Functions_Group3\r
378   * @{\r
379   */  \r
380 /* DES encryption/decryption using polling  ***********************************/\r
381 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
382 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
383 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
384 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
385 \r
386 /* DES encryption/decryption using interrupt  *********************************/\r
387 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
388 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
389 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
390 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
391 \r
392 /* DES encryption/decryption using DMA  ***************************************/\r
393 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
394 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
395 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
396 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
397 /**\r
398   * @}\r
399   */ \r
400 \r
401 /** @addtogroup CRYP_Exported_Functions_Group4\r
402   * @{\r
403   */  \r
404 /* TDES encryption/decryption using polling  **********************************/\r
405 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
406 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);\r
407 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);\r
408 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);\r
409 \r
410 /* TDES encryption/decryption using interrupt  ********************************/\r
411 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
412 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
413 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
414 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
415 \r
416 /* TDES encryption/decryption using DMA  **************************************/\r
417 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
418 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
419 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);\r
420 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);\r
421 /**\r
422   * @}\r
423   */ \r
424 \r
425 /** @addtogroup CRYP_Exported_Functions_Group5\r
426   * @{\r
427   */  \r
428 void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp);\r
429 void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp);\r
430 void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp);\r
431 /**\r
432   * @}\r
433   */ \r
434 \r
435 /** @addtogroup CRYP_Exported_Functions_Group6\r
436   * @{\r
437   */  \r
438 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);\r
439 /**\r
440   * @}\r
441   */ \r
442 \r
443 /** @addtogroup CRYP_Exported_Functions_Group7\r
444   * @{\r
445   */  \r
446 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);\r
447 /**\r
448   * @}\r
449   */ \r
450   \r
451 /**\r
452   * @}\r
453   */\r
454 \r
455 /* Private types -------------------------------------------------------------*/\r
456 /** @defgroup CRYP_Private_Types CRYP Private Types\r
457   * @{\r
458   */\r
459 \r
460 /**\r
461   * @}\r
462   */ \r
463 \r
464 /* Private variables ---------------------------------------------------------*/\r
465 /** @defgroup CRYP_Private_Variables CRYP Private Variables\r
466   * @{\r
467   */\r
468 \r
469 /**\r
470   * @}\r
471   */ \r
472 \r
473 /* Private constants ---------------------------------------------------------*/\r
474 /** @defgroup CRYP_Private_Constants CRYP Private Constants\r
475   * @{\r
476   */\r
477 #define CRYP_FLAG_MASK  ((uint32_t)0x0000001F)\r
478 /**\r
479   * @}\r
480   */ \r
481 \r
482 /* Private macros ------------------------------------------------------------*/\r
483 /** @defgroup CRYP_Private_Macros CRYP Private Macros\r
484   * @{\r
485   */\r
486 \r
487 #define IS_CRYP_KEYSIZE(__KEYSIZE__)  (((__KEYSIZE__) == CRYP_KEYSIZE_128B)  || \\r
488                                        ((__KEYSIZE__) == CRYP_KEYSIZE_192B)  || \\r
489                                        ((__KEYSIZE__) == CRYP_KEYSIZE_256B))\r
490 \r
491 \r
492 #define IS_CRYP_DATATYPE(__DATATYPE__) (((__DATATYPE__) == CRYP_DATATYPE_32B) || \\r
493                                         ((__DATATYPE__) == CRYP_DATATYPE_16B) || \\r
494                                         ((__DATATYPE__) == CRYP_DATATYPE_8B)  || \\r
495                                         ((__DATATYPE__) == CRYP_DATATYPE_1B))  \r
496 \r
497 \r
498  /**\r
499   * @}\r
500   */ \r
501   \r
502 /* Private functions ---------------------------------------------------------*/\r
503 /** @defgroup CRYP_Private_Functions CRYP Private Functions\r
504   * @{\r
505   */\r
506 \r
507 /**\r
508   * @}\r
509   */\r
510      \r
511 #endif /* STM32F756xx */\r
512 \r
513 /**\r
514   * @}\r
515   */ \r
516 \r
517 /**\r
518   * @}\r
519   */ \r
520   \r
521 #ifdef __cplusplus\r
522 }\r
523 #endif\r
524 \r
525 #endif /* __STM32F7xx_HAL_CRYP_H */\r
526 \r
527 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r