]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil/ST_Library/include/stm32f7xx_hal_cryp.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil / 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 V1.0.0RC1\r
6   * @date    24-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_TypeDef             *Instance;        /*!< CRYP registers base address */\r
143 \r
144       CRYP_InitTypeDef         Init;             /*!< CRYP required parameters */\r
145 \r
146       uint8_t                  *pCrypInBuffPtr;  /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */\r
147 \r
148       uint8_t                  *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */\r
149 \r
150       __IO uint16_t            CrypInCount;      /*!< Counter of inputed data */\r
151 \r
152       __IO uint16_t            CrypOutCount;     /*!< Counter of output data */\r
153 \r
154       HAL_StatusTypeDef        Status;           /*!< CRYP peripheral status */\r
155 \r
156       HAL_PhaseTypeDef         Phase;            /*!< CRYP peripheral phase */\r
157 \r
158       DMA_HandleTypeDef        *hdmain;          /*!< CRYP In DMA handle parameters */\r
159 \r
160       DMA_HandleTypeDef        *hdmaout;         /*!< CRYP Out DMA handle parameters */\r
161 \r
162       HAL_LockTypeDef          Lock;             /*!< CRYP locking object */\r
163 \r
164    __IO  HAL_CRYP_STATETypeDef State;            /*!< CRYP peripheral state */\r
165 }CRYP_HandleTypeDef;\r
166 \r
167 /** \r
168   * @}\r
169   */\r
170 \r
171 /** \r
172   * @}\r
173   */\r
174     \r
175 /* Exported constants --------------------------------------------------------*/\r
176 /** @defgroup CRYP_Exported_Constants CRYP Exported Constants\r
177   * @{\r
178   */\r
179 \r
180 /** @defgroup CRYP_Exported_Constants_Group1 CRYP CRYP_Key_Size\r
181   * @{\r
182   */\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
186 /**                                \r
187   * @}\r
188   */\r
189 \r
190 /** @defgroup CRYP_Exported_Constants_Group2 CRYP CRYP_Data_Type\r
191   * @{\r
192   */\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
197 /**                                \r
198   * @}\r
199   */\r
200 \r
201 /** @defgroup CRYP_Exported_Constants_Group3 CRYP CRYP_AlgoModeDirection\r
202   * @{\r
203   */\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
219 /**\r
220   * @}\r
221   */\r
222   \r
223 /** @defgroup CRYP_Exported_Constants_Group4 CRYP CRYP_Interrupt\r
224   * @{\r
225   */\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
228 /**\r
229   * @}\r
230   */\r
231 \r
232 /** @defgroup CRYP_Exported_Constants_Group5 CRYP CRYP_Flags\r
233   * @{\r
234   */\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
247 /**\r
248   * @}\r
249   */\r
250 \r
251 /**\r
252   * @}\r
253   */\r
254 \r
255 /* Exported macro ------------------------------------------------------------*/\r
256 /** @defgroup CRYP_Exported_Macros CRYP Exported Macros\r
257   * @{\r
258   */\r
259   \r
260 /** @brief Reset CRYP handle state\r
261   * @param  __HANDLE__: specifies the CRYP handle.\r
262   * @retval None\r
263   */\r
264 #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)\r
265 \r
266 /**\r
267   * @brief  Enable/Disable the CRYP peripheral.\r
268   * @param  __HANDLE__: specifies the CRYP handle.\r
269   * @retval None\r
270   */\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
273 \r
274 /**\r
275   * @brief  Flush the data FIFO.\r
276   * @param  __HANDLE__: specifies the CRYP handle.\r
277   * @retval None\r
278   */\r
279 #define __HAL_CRYP_FIFO_FLUSH(__HANDLE__) ((__HANDLE__)->Instance->CR |=  CRYP_CR_FFLUSH)\r
280 \r
281 /**\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
285   * @retval None\r
286   */\r
287 #define __HAL_CRYP_SET_MODE(__HANDLE__, MODE)  ((__HANDLE__)->Instance->CR |= (uint32_t)(MODE))\r
288 \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
302   */\r
303 \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
306 \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
314   */\r
315 #define __HAL_CRYP_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->MISR & (__INTERRUPT__)) == (__INTERRUPT__))\r
316 \r
317 /**\r
318   * @brief  Enable the CRYP interrupt.\r
319   * @param  __HANDLE__: specifies the CRYP handle.\r
320   * @param  __INTERRUPT__: CRYP Interrupt.\r
321   * @retval None\r
322   */\r
323 #define __HAL_CRYP_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IMSCR) |= (__INTERRUPT__))\r
324 \r
325 /**\r
326   * @brief  Disable the CRYP interrupt.\r
327   * @param  __HANDLE__: specifies the CRYP handle.\r
328   * @param  __INTERRUPT__: CRYP interrupt.\r
329   * @retval None\r
330   */\r
331 #define __HAL_CRYP_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IMSCR) &= ~(__INTERRUPT__))\r
332 \r
333 /**\r
334   * @}\r
335   */ \r
336   \r
337 /* Include CRYP HAL Extension module */\r
338 #include "stm32f7xx_hal_cryp_ex.h"\r
339 \r
340 /* Exported functions --------------------------------------------------------*/\r
341 /** @defgroup CRYP_Exported_Functions CRYP Exported Functions\r
342   * @{\r
343   */\r
344 \r
345 /** @addtogroup CRYP_Exported_Functions_Group1\r
346   * @{\r
347   */    \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
352 /**\r
353   * @}\r
354   */ \r
355 \r
356 /** @addtogroup CRYP_Exported_Functions_Group2\r
357   * @{\r
358   */  \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
366 \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
374 \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
382 /**\r
383   * @}\r
384   */ \r
385 \r
386 /** @addtogroup CRYP_Exported_Functions_Group3\r
387   * @{\r
388   */  \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
394 \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
400 \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
406 /**\r
407   * @}\r
408   */ \r
409 \r
410 /** @addtogroup CRYP_Exported_Functions_Group4\r
411   * @{\r
412   */  \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
418 \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
424 \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
430 /**\r
431   * @}\r
432   */ \r
433 \r
434 /** @addtogroup CRYP_Exported_Functions_Group5\r
435   * @{\r
436   */  \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
440 /**\r
441   * @}\r
442   */ \r
443 \r
444 /** @addtogroup CRYP_Exported_Functions_Group6\r
445   * @{\r
446   */  \r
447 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);\r
448 /**\r
449   * @}\r
450   */ \r
451 \r
452 /** @addtogroup CRYP_Exported_Functions_Group7\r
453   * @{\r
454   */  \r
455 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);\r
456 /**\r
457   * @}\r
458   */ \r
459   \r
460 /**\r
461   * @}\r
462   */\r
463 \r
464 /* Private types -------------------------------------------------------------*/\r
465 /** @defgroup CRYP_Private_Types CRYP Private Types\r
466   * @{\r
467   */\r
468 \r
469 /**\r
470   * @}\r
471   */ \r
472 \r
473 /* Private variables ---------------------------------------------------------*/\r
474 /** @defgroup CRYP_Private_Variables CRYP Private Variables\r
475   * @{\r
476   */\r
477 \r
478 /**\r
479   * @}\r
480   */ \r
481 \r
482 /* Private constants ---------------------------------------------------------*/\r
483 /** @defgroup CRYP_Private_Constants CRYP Private Constants\r
484   * @{\r
485   */\r
486 #define CRYP_FLAG_MASK  ((uint32_t)0x0000001F)\r
487 /**\r
488   * @}\r
489   */ \r
490 \r
491 /* Private macros ------------------------------------------------------------*/\r
492 /** @defgroup CRYP_Private_Macros CRYP Private Macros\r
493   * @{\r
494   */\r
495 \r
496 #define IS_CRYP_KEYSIZE(__KEYSIZE__)  (((__KEYSIZE__) == CRYP_KEYSIZE_128B)  || \\r
497                                        ((__KEYSIZE__) == CRYP_KEYSIZE_192B)  || \\r
498                                        ((__KEYSIZE__) == CRYP_KEYSIZE_256B))\r
499 \r
500 \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
505 \r
506 \r
507  /**\r
508   * @}\r
509   */ \r
510   \r
511 /* Private functions ---------------------------------------------------------*/\r
512 /** @defgroup CRYP_Private_Functions CRYP Private Functions\r
513   * @{\r
514   */\r
515 \r
516 /**\r
517   * @}\r
518   */\r
519      \r
520 #endif /* STM32F756xx */\r
521 \r
522 /**\r
523   * @}\r
524   */ \r
525 \r
526 /**\r
527   * @}\r
528   */ \r
529   \r
530 #ifdef __cplusplus\r
531 }\r
532 #endif\r
533 \r
534 #endif /* __STM32F7xx_HAL_CRYP_H */\r
535 \r
536 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r