The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
Anna Bridge
Date:
Fri Jun 22 15:38:59 2018 +0100
Revision:
169:a7c7b631e539
Parent:
163:e59c8e839560
mbed library. Release version 162

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 156:ff21514d8981 1 /**
AnnaBridge 156:ff21514d8981 2 ******************************************************************************
AnnaBridge 156:ff21514d8981 3 * @file stm32f4xx_hal_cryp.h
AnnaBridge 156:ff21514d8981 4 * @author MCD Application Team
AnnaBridge 156:ff21514d8981 5 * @brief Header file of CRYP HAL module.
AnnaBridge 156:ff21514d8981 6 ******************************************************************************
AnnaBridge 156:ff21514d8981 7 * @attention
AnnaBridge 156:ff21514d8981 8 *
AnnaBridge 156:ff21514d8981 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 156:ff21514d8981 10 *
AnnaBridge 156:ff21514d8981 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 156:ff21514d8981 12 * are permitted provided that the following conditions are met:
AnnaBridge 156:ff21514d8981 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 156:ff21514d8981 14 * this list of conditions and the following disclaimer.
AnnaBridge 156:ff21514d8981 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 156:ff21514d8981 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 156:ff21514d8981 17 * and/or other materials provided with the distribution.
AnnaBridge 156:ff21514d8981 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 156:ff21514d8981 19 * may be used to endorse or promote products derived from this software
AnnaBridge 156:ff21514d8981 20 * without specific prior written permission.
AnnaBridge 156:ff21514d8981 21 *
AnnaBridge 156:ff21514d8981 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 156:ff21514d8981 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 156:ff21514d8981 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 156:ff21514d8981 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 156:ff21514d8981 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 156:ff21514d8981 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 156:ff21514d8981 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 156:ff21514d8981 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 156:ff21514d8981 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 156:ff21514d8981 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 156:ff21514d8981 32 *
AnnaBridge 156:ff21514d8981 33 ******************************************************************************
AnnaBridge 156:ff21514d8981 34 */
AnnaBridge 156:ff21514d8981 35
AnnaBridge 156:ff21514d8981 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 156:ff21514d8981 37 #ifndef __STM32F4xx_HAL_CRYP_H
AnnaBridge 156:ff21514d8981 38 #define __STM32F4xx_HAL_CRYP_H
AnnaBridge 156:ff21514d8981 39
AnnaBridge 156:ff21514d8981 40 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 41 extern "C" {
AnnaBridge 156:ff21514d8981 42 #endif
AnnaBridge 156:ff21514d8981 43
AnnaBridge 156:ff21514d8981 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 45 #include "stm32f4xx_hal_def.h"
AnnaBridge 156:ff21514d8981 46
AnnaBridge 156:ff21514d8981 47
AnnaBridge 156:ff21514d8981 48 #if defined(CRYP)
AnnaBridge 156:ff21514d8981 49
AnnaBridge 156:ff21514d8981 50 /** @addtogroup STM32F4xx_HAL_Driver
AnnaBridge 156:ff21514d8981 51 * @{
AnnaBridge 156:ff21514d8981 52 */
AnnaBridge 156:ff21514d8981 53
AnnaBridge 156:ff21514d8981 54 /** @addtogroup CRYP
AnnaBridge 156:ff21514d8981 55 * @{
AnnaBridge 156:ff21514d8981 56 */
AnnaBridge 156:ff21514d8981 57
AnnaBridge 156:ff21514d8981 58 /* Exported types ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 59
AnnaBridge 156:ff21514d8981 60 /** @defgroup CRYP_Exported_Types CRYP Exported Types
AnnaBridge 156:ff21514d8981 61 * @{
AnnaBridge 156:ff21514d8981 62 */
AnnaBridge 156:ff21514d8981 63
AnnaBridge 156:ff21514d8981 64 /** @defgroup CRYP_Exported_Types_Group1 CRYP Configuration Structure definition
AnnaBridge 156:ff21514d8981 65 * @{
AnnaBridge 156:ff21514d8981 66 */
AnnaBridge 156:ff21514d8981 67
AnnaBridge 156:ff21514d8981 68 typedef struct
AnnaBridge 156:ff21514d8981 69 {
AnnaBridge 156:ff21514d8981 70 uint32_t DataType; /*!< 32-bit data, 16-bit data, 8-bit data or 1-bit string.
AnnaBridge 156:ff21514d8981 71 This parameter can be a value of @ref CRYP_Data_Type */
AnnaBridge 156:ff21514d8981 72
AnnaBridge 156:ff21514d8981 73 uint32_t KeySize; /*!< Used only in AES mode only : 128, 192 or 256 bit key length.
AnnaBridge 156:ff21514d8981 74 This parameter can be a value of @ref CRYP_Key_Size */
AnnaBridge 156:ff21514d8981 75
AnnaBridge 156:ff21514d8981 76 uint8_t* pKey; /*!< The key used for encryption/decryption */
AnnaBridge 156:ff21514d8981 77
AnnaBridge 156:ff21514d8981 78 uint8_t* pInitVect; /*!< The initialization vector used also as initialization
AnnaBridge 156:ff21514d8981 79 counter in CTR mode */
AnnaBridge 156:ff21514d8981 80
AnnaBridge 156:ff21514d8981 81 uint8_t IVSize; /*!< The size of initialization vector.
AnnaBridge 156:ff21514d8981 82 This parameter (called nonce size in CCM) is used only
AnnaBridge 156:ff21514d8981 83 in AES-128/192/256 encryption/decryption CCM mode */
AnnaBridge 156:ff21514d8981 84
AnnaBridge 156:ff21514d8981 85 uint8_t TagSize; /*!< The size of returned authentication TAG.
AnnaBridge 156:ff21514d8981 86 This parameter is used only in AES-128/192/256
AnnaBridge 156:ff21514d8981 87 encryption/decryption CCM mode */
AnnaBridge 156:ff21514d8981 88
AnnaBridge 156:ff21514d8981 89 uint8_t* Header; /*!< The header used in GCM and CCM modes */
AnnaBridge 156:ff21514d8981 90
AnnaBridge 156:ff21514d8981 91 uint32_t HeaderSize; /*!< The size of header buffer in bytes */
AnnaBridge 156:ff21514d8981 92
AnnaBridge 156:ff21514d8981 93 uint8_t* pScratch; /*!< Scratch buffer used to append the header. It's size must be equal to header size + 21 bytes.
AnnaBridge 156:ff21514d8981 94 This parameter is used only in AES-128/192/256 encryption/decryption CCM mode */
AnnaBridge 156:ff21514d8981 95 }CRYP_InitTypeDef;
AnnaBridge 156:ff21514d8981 96
AnnaBridge 156:ff21514d8981 97 /**
AnnaBridge 156:ff21514d8981 98 * @}
AnnaBridge 156:ff21514d8981 99 */
AnnaBridge 156:ff21514d8981 100
AnnaBridge 156:ff21514d8981 101 /** @defgroup CRYP_Exported_Types_Group2 CRYP State structures definition
AnnaBridge 156:ff21514d8981 102 * @{
AnnaBridge 156:ff21514d8981 103 */
AnnaBridge 156:ff21514d8981 104
AnnaBridge 156:ff21514d8981 105
AnnaBridge 156:ff21514d8981 106 typedef enum
AnnaBridge 156:ff21514d8981 107 {
AnnaBridge 156:ff21514d8981 108 HAL_CRYP_STATE_RESET = 0x00U, /*!< CRYP not yet initialized or disabled */
AnnaBridge 156:ff21514d8981 109 HAL_CRYP_STATE_READY = 0x01U, /*!< CRYP initialized and ready for use */
AnnaBridge 156:ff21514d8981 110 HAL_CRYP_STATE_BUSY = 0x02U, /*!< CRYP internal processing is ongoing */
AnnaBridge 156:ff21514d8981 111 HAL_CRYP_STATE_TIMEOUT = 0x03U, /*!< CRYP timeout state */
AnnaBridge 156:ff21514d8981 112 HAL_CRYP_STATE_ERROR = 0x04U /*!< CRYP error state */
AnnaBridge 156:ff21514d8981 113 }HAL_CRYP_STATETypeDef;
AnnaBridge 156:ff21514d8981 114
AnnaBridge 156:ff21514d8981 115 /**
AnnaBridge 156:ff21514d8981 116 * @}
AnnaBridge 156:ff21514d8981 117 */
AnnaBridge 156:ff21514d8981 118
AnnaBridge 156:ff21514d8981 119 /** @defgroup CRYP_Exported_Types_Group3 CRYP phase structures definition
AnnaBridge 156:ff21514d8981 120 * @{
AnnaBridge 156:ff21514d8981 121 */
AnnaBridge 156:ff21514d8981 122
AnnaBridge 156:ff21514d8981 123
AnnaBridge 156:ff21514d8981 124 typedef enum
AnnaBridge 156:ff21514d8981 125 {
AnnaBridge 156:ff21514d8981 126 HAL_CRYP_PHASE_READY = 0x01U, /*!< CRYP peripheral is ready for initialization. */
AnnaBridge 156:ff21514d8981 127 HAL_CRYP_PHASE_PROCESS = 0x02U, /*!< CRYP peripheral is in processing phase */
AnnaBridge 156:ff21514d8981 128 HAL_CRYP_PHASE_FINAL = 0x03U /*!< CRYP peripheral is in final phase
AnnaBridge 156:ff21514d8981 129 This is relevant only with CCM and GCM modes */
AnnaBridge 156:ff21514d8981 130 }HAL_PhaseTypeDef;
AnnaBridge 156:ff21514d8981 131
AnnaBridge 156:ff21514d8981 132 /**
AnnaBridge 156:ff21514d8981 133 * @}
AnnaBridge 156:ff21514d8981 134 */
AnnaBridge 156:ff21514d8981 135
AnnaBridge 156:ff21514d8981 136 /** @defgroup CRYP_Exported_Types_Group4 CRYP handle Structure definition
AnnaBridge 156:ff21514d8981 137 * @{
AnnaBridge 156:ff21514d8981 138 */
AnnaBridge 156:ff21514d8981 139
AnnaBridge 156:ff21514d8981 140 typedef struct
AnnaBridge 156:ff21514d8981 141 {
AnnaBridge 156:ff21514d8981 142 CRYP_TypeDef *Instance; /*!< CRYP registers base address */
AnnaBridge 156:ff21514d8981 143
AnnaBridge 156:ff21514d8981 144 CRYP_InitTypeDef Init; /*!< CRYP required parameters */
AnnaBridge 156:ff21514d8981 145
AnnaBridge 156:ff21514d8981 146 uint8_t *pCrypInBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
AnnaBridge 156:ff21514d8981 147
AnnaBridge 156:ff21514d8981 148 uint8_t *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
AnnaBridge 156:ff21514d8981 149
AnnaBridge 156:ff21514d8981 150 __IO uint16_t CrypInCount; /*!< Counter of inputed data */
AnnaBridge 156:ff21514d8981 151
AnnaBridge 156:ff21514d8981 152 __IO uint16_t CrypOutCount; /*!< Counter of output data */
AnnaBridge 156:ff21514d8981 153
AnnaBridge 156:ff21514d8981 154 HAL_StatusTypeDef Status; /*!< CRYP peripheral status */
AnnaBridge 156:ff21514d8981 155
AnnaBridge 156:ff21514d8981 156 HAL_PhaseTypeDef Phase; /*!< CRYP peripheral phase */
AnnaBridge 156:ff21514d8981 157
AnnaBridge 156:ff21514d8981 158 DMA_HandleTypeDef *hdmain; /*!< CRYP In DMA handle parameters */
AnnaBridge 156:ff21514d8981 159
AnnaBridge 156:ff21514d8981 160 DMA_HandleTypeDef *hdmaout; /*!< CRYP Out DMA handle parameters */
AnnaBridge 156:ff21514d8981 161
AnnaBridge 156:ff21514d8981 162 HAL_LockTypeDef Lock; /*!< CRYP locking object */
AnnaBridge 156:ff21514d8981 163
AnnaBridge 156:ff21514d8981 164 __IO HAL_CRYP_STATETypeDef State; /*!< CRYP peripheral state */
AnnaBridge 156:ff21514d8981 165 }CRYP_HandleTypeDef;
AnnaBridge 156:ff21514d8981 166
AnnaBridge 156:ff21514d8981 167 /**
AnnaBridge 156:ff21514d8981 168 * @}
AnnaBridge 156:ff21514d8981 169 */
AnnaBridge 156:ff21514d8981 170
AnnaBridge 156:ff21514d8981 171 /**
AnnaBridge 156:ff21514d8981 172 * @}
AnnaBridge 156:ff21514d8981 173 */
AnnaBridge 156:ff21514d8981 174
AnnaBridge 156:ff21514d8981 175 /* Exported constants --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 176 /** @defgroup CRYP_Exported_Constants CRYP Exported Constants
AnnaBridge 156:ff21514d8981 177 * @{
AnnaBridge 156:ff21514d8981 178 */
AnnaBridge 156:ff21514d8981 179
AnnaBridge 156:ff21514d8981 180 /** @defgroup CRYP_Key_Size CRYP Key Size
AnnaBridge 156:ff21514d8981 181 * @{
AnnaBridge 156:ff21514d8981 182 */
AnnaBridge 156:ff21514d8981 183 #define CRYP_KEYSIZE_128B 0x00000000U
AnnaBridge 156:ff21514d8981 184 #define CRYP_KEYSIZE_192B CRYP_CR_KEYSIZE_0
AnnaBridge 156:ff21514d8981 185 #define CRYP_KEYSIZE_256B CRYP_CR_KEYSIZE_1
AnnaBridge 156:ff21514d8981 186 /**
AnnaBridge 156:ff21514d8981 187 * @}
AnnaBridge 156:ff21514d8981 188 */
AnnaBridge 156:ff21514d8981 189
AnnaBridge 156:ff21514d8981 190 /** @defgroup CRYP_Data_Type CRYP Data Type
AnnaBridge 156:ff21514d8981 191 * @{
AnnaBridge 156:ff21514d8981 192 */
AnnaBridge 156:ff21514d8981 193 #define CRYP_DATATYPE_32B 0x00000000U
AnnaBridge 156:ff21514d8981 194 #define CRYP_DATATYPE_16B CRYP_CR_DATATYPE_0
AnnaBridge 156:ff21514d8981 195 #define CRYP_DATATYPE_8B CRYP_CR_DATATYPE_1
AnnaBridge 156:ff21514d8981 196 #define CRYP_DATATYPE_1B CRYP_CR_DATATYPE
AnnaBridge 156:ff21514d8981 197 /**
AnnaBridge 156:ff21514d8981 198 * @}
AnnaBridge 156:ff21514d8981 199 */
AnnaBridge 156:ff21514d8981 200
AnnaBridge 156:ff21514d8981 201 /** @defgroup CRYP_Exported_Constants_Group3 CRYP CRYP_AlgoModeDirection
AnnaBridge 156:ff21514d8981 202 * @{
AnnaBridge 156:ff21514d8981 203 */
AnnaBridge 156:ff21514d8981 204 #define CRYP_CR_ALGOMODE_DIRECTION 0x0008003CU
AnnaBridge 156:ff21514d8981 205 #define CRYP_CR_ALGOMODE_TDES_ECB_ENCRYPT 0x00000000U
AnnaBridge 156:ff21514d8981 206 #define CRYP_CR_ALGOMODE_TDES_ECB_DECRYPT 0x00000004U
AnnaBridge 156:ff21514d8981 207 #define CRYP_CR_ALGOMODE_TDES_CBC_ENCRYPT 0x00000008U
AnnaBridge 156:ff21514d8981 208 #define CRYP_CR_ALGOMODE_TDES_CBC_DECRYPT 0x0000000CU
AnnaBridge 156:ff21514d8981 209 #define CRYP_CR_ALGOMODE_DES_ECB_ENCRYPT 0x00000010U
AnnaBridge 156:ff21514d8981 210 #define CRYP_CR_ALGOMODE_DES_ECB_DECRYPT 0x00000014U
AnnaBridge 156:ff21514d8981 211 #define CRYP_CR_ALGOMODE_DES_CBC_ENCRYPT 0x00000018U
AnnaBridge 156:ff21514d8981 212 #define CRYP_CR_ALGOMODE_DES_CBC_DECRYPT 0x0000001CU
AnnaBridge 156:ff21514d8981 213 #define CRYP_CR_ALGOMODE_AES_ECB_ENCRYPT 0x00000020U
AnnaBridge 156:ff21514d8981 214 #define CRYP_CR_ALGOMODE_AES_ECB_DECRYPT 0x00000024U
AnnaBridge 156:ff21514d8981 215 #define CRYP_CR_ALGOMODE_AES_CBC_ENCRYPT 0x00000028U
AnnaBridge 156:ff21514d8981 216 #define CRYP_CR_ALGOMODE_AES_CBC_DECRYPT 0x0000002CU
AnnaBridge 156:ff21514d8981 217 #define CRYP_CR_ALGOMODE_AES_CTR_ENCRYPT 0x00000030U
AnnaBridge 156:ff21514d8981 218 #define CRYP_CR_ALGOMODE_AES_CTR_DECRYPT 0x00000034U
AnnaBridge 156:ff21514d8981 219 /**
AnnaBridge 156:ff21514d8981 220 * @}
AnnaBridge 156:ff21514d8981 221 */
AnnaBridge 156:ff21514d8981 222
AnnaBridge 156:ff21514d8981 223 /** @defgroup CRYP_Exported_Constants_Group4 CRYP CRYP_Interrupt
AnnaBridge 156:ff21514d8981 224 * @{
AnnaBridge 156:ff21514d8981 225 */
AnnaBridge 156:ff21514d8981 226 #define CRYP_IT_INI ((uint32_t)CRYP_IMSCR_INIM) /*!< Input FIFO Interrupt */
AnnaBridge 156:ff21514d8981 227 #define CRYP_IT_OUTI ((uint32_t)CRYP_IMSCR_OUTIM) /*!< Output FIFO Interrupt */
AnnaBridge 156:ff21514d8981 228 /**
AnnaBridge 156:ff21514d8981 229 * @}
AnnaBridge 156:ff21514d8981 230 */
AnnaBridge 156:ff21514d8981 231
AnnaBridge 156:ff21514d8981 232 /** @defgroup CRYP_Exported_Constants_Group5 CRYP CRYP_Flags
AnnaBridge 156:ff21514d8981 233 * @{
AnnaBridge 156:ff21514d8981 234 */
AnnaBridge 156:ff21514d8981 235 #define CRYP_FLAG_BUSY 0x00000010U /*!< The CRYP core is currently
AnnaBridge 156:ff21514d8981 236 processing a block of data
AnnaBridge 156:ff21514d8981 237 or a key preparation (for
AnnaBridge 156:ff21514d8981 238 AES decryption). */
AnnaBridge 156:ff21514d8981 239 #define CRYP_FLAG_IFEM 0x00000001U /*!< Input FIFO is empty */
AnnaBridge 156:ff21514d8981 240 #define CRYP_FLAG_IFNF 0x00000002U /*!< Input FIFO is not Full */
AnnaBridge 156:ff21514d8981 241 #define CRYP_FLAG_OFNE 0x00000004U /*!< Output FIFO is not empty */
AnnaBridge 156:ff21514d8981 242 #define CRYP_FLAG_OFFU 0x00000008U /*!< Output FIFO is Full */
AnnaBridge 156:ff21514d8981 243 #define CRYP_FLAG_OUTRIS 0x01000002U /*!< Output FIFO service raw
AnnaBridge 156:ff21514d8981 244 interrupt status */
AnnaBridge 156:ff21514d8981 245 #define CRYP_FLAG_INRIS 0x01000001U /*!< Input FIFO service raw
AnnaBridge 156:ff21514d8981 246 interrupt status */
AnnaBridge 156:ff21514d8981 247 /**
AnnaBridge 156:ff21514d8981 248 * @}
AnnaBridge 156:ff21514d8981 249 */
AnnaBridge 156:ff21514d8981 250
AnnaBridge 156:ff21514d8981 251 /**
AnnaBridge 156:ff21514d8981 252 * @}
AnnaBridge 156:ff21514d8981 253 */
AnnaBridge 156:ff21514d8981 254
AnnaBridge 156:ff21514d8981 255 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 256 /** @defgroup CRYP_Exported_Macros CRYP Exported Macros
AnnaBridge 156:ff21514d8981 257 * @{
AnnaBridge 156:ff21514d8981 258 */
AnnaBridge 156:ff21514d8981 259
AnnaBridge 156:ff21514d8981 260 /** @brief Reset CRYP handle state
AnnaBridge 163:e59c8e839560 261 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 156:ff21514d8981 262 * @retval None
AnnaBridge 156:ff21514d8981 263 */
AnnaBridge 156:ff21514d8981 264 #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)
AnnaBridge 156:ff21514d8981 265
AnnaBridge 156:ff21514d8981 266 /**
AnnaBridge 156:ff21514d8981 267 * @brief Enable/Disable the CRYP peripheral.
AnnaBridge 163:e59c8e839560 268 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 156:ff21514d8981 269 * @retval None
AnnaBridge 156:ff21514d8981 270 */
AnnaBridge 156:ff21514d8981 271 #define __HAL_CRYP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRYP_CR_CRYPEN)
AnnaBridge 156:ff21514d8981 272 #define __HAL_CRYP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~CRYP_CR_CRYPEN)
AnnaBridge 156:ff21514d8981 273
AnnaBridge 156:ff21514d8981 274 /**
AnnaBridge 156:ff21514d8981 275 * @brief Flush the data FIFO.
AnnaBridge 163:e59c8e839560 276 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 156:ff21514d8981 277 * @retval None
AnnaBridge 156:ff21514d8981 278 */
AnnaBridge 156:ff21514d8981 279 #define __HAL_CRYP_FIFO_FLUSH(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRYP_CR_FFLUSH)
AnnaBridge 156:ff21514d8981 280
AnnaBridge 156:ff21514d8981 281 /**
AnnaBridge 156:ff21514d8981 282 * @brief Set the algorithm mode: AES-ECB, AES-CBC, AES-CTR, DES-ECB, DES-CBC.
AnnaBridge 163:e59c8e839560 283 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 163:e59c8e839560 284 * @param MODE The algorithm mode.
AnnaBridge 156:ff21514d8981 285 * @retval None
AnnaBridge 156:ff21514d8981 286 */
AnnaBridge 156:ff21514d8981 287 #define __HAL_CRYP_SET_MODE(__HANDLE__, MODE) ((__HANDLE__)->Instance->CR |= (uint32_t)(MODE))
AnnaBridge 156:ff21514d8981 288
AnnaBridge 156:ff21514d8981 289 /** @brief Check whether the specified CRYP flag is set or not.
AnnaBridge 163:e59c8e839560 290 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 163:e59c8e839560 291 * @param __FLAG__ specifies the flag to check.
AnnaBridge 156:ff21514d8981 292 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 293 * @arg CRYP_FLAG_BUSY: The CRYP core is currently processing a block of data
AnnaBridge 156:ff21514d8981 294 * or a key preparation (for AES decryption).
AnnaBridge 156:ff21514d8981 295 * @arg CRYP_FLAG_IFEM: Input FIFO is empty
AnnaBridge 156:ff21514d8981 296 * @arg CRYP_FLAG_IFNF: Input FIFO is not full
AnnaBridge 156:ff21514d8981 297 * @arg CRYP_FLAG_INRIS: Input FIFO service raw interrupt is pending
AnnaBridge 156:ff21514d8981 298 * @arg CRYP_FLAG_OFNE: Output FIFO is not empty
AnnaBridge 156:ff21514d8981 299 * @arg CRYP_FLAG_OFFU: Output FIFO is full
AnnaBridge 156:ff21514d8981 300 * @arg CRYP_FLAG_OUTRIS: Input FIFO service raw interrupt is pending
AnnaBridge 156:ff21514d8981 301 * @retval The new state of __FLAG__ (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 302 */
AnnaBridge 156:ff21514d8981 303
AnnaBridge 156:ff21514d8981 304 #define __HAL_CRYP_GET_FLAG(__HANDLE__, __FLAG__) ((((uint8_t)((__FLAG__) >> 24U)) == 0x01U)?((((__HANDLE__)->Instance->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)): \
AnnaBridge 156:ff21514d8981 305 ((((__HANDLE__)->Instance->RISR) & ((__FLAG__) & CRYP_FLAG_MASK)) == ((__FLAG__) & CRYP_FLAG_MASK)))
AnnaBridge 156:ff21514d8981 306
AnnaBridge 156:ff21514d8981 307 /** @brief Check whether the specified CRYP interrupt is set or not.
AnnaBridge 163:e59c8e839560 308 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 163:e59c8e839560 309 * @param __INTERRUPT__ specifies the interrupt to check.
AnnaBridge 156:ff21514d8981 310 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 311 * @arg CRYP_IT_INRIS: Input FIFO service raw interrupt is pending
AnnaBridge 156:ff21514d8981 312 * @arg CRYP_IT_OUTRIS: Output FIFO service raw interrupt is pending
AnnaBridge 156:ff21514d8981 313 * @retval The new state of __INTERRUPT__ (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 314 */
AnnaBridge 156:ff21514d8981 315 #define __HAL_CRYP_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->MISR & (__INTERRUPT__)) == (__INTERRUPT__))
AnnaBridge 156:ff21514d8981 316
AnnaBridge 156:ff21514d8981 317 /**
AnnaBridge 156:ff21514d8981 318 * @brief Enable the CRYP interrupt.
AnnaBridge 163:e59c8e839560 319 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 163:e59c8e839560 320 * @param __INTERRUPT__ CRYP Interrupt.
AnnaBridge 156:ff21514d8981 321 * @retval None
AnnaBridge 156:ff21514d8981 322 */
AnnaBridge 156:ff21514d8981 323 #define __HAL_CRYP_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IMSCR) |= (__INTERRUPT__))
AnnaBridge 156:ff21514d8981 324
AnnaBridge 156:ff21514d8981 325 /**
AnnaBridge 156:ff21514d8981 326 * @brief Disable the CRYP interrupt.
AnnaBridge 163:e59c8e839560 327 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 163:e59c8e839560 328 * @param __INTERRUPT__ CRYP interrupt.
AnnaBridge 156:ff21514d8981 329 * @retval None
AnnaBridge 156:ff21514d8981 330 */
AnnaBridge 156:ff21514d8981 331 #define __HAL_CRYP_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IMSCR) &= ~(__INTERRUPT__))
AnnaBridge 156:ff21514d8981 332
AnnaBridge 156:ff21514d8981 333 /**
AnnaBridge 156:ff21514d8981 334 * @}
AnnaBridge 156:ff21514d8981 335 */
AnnaBridge 156:ff21514d8981 336
AnnaBridge 156:ff21514d8981 337 /* Include CRYP HAL Extension module */
AnnaBridge 156:ff21514d8981 338 #include "stm32f4xx_hal_cryp_ex.h"
AnnaBridge 156:ff21514d8981 339
AnnaBridge 156:ff21514d8981 340 /* Exported functions --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 341 /** @defgroup CRYP_Exported_Functions CRYP Exported Functions
AnnaBridge 156:ff21514d8981 342 * @{
AnnaBridge 156:ff21514d8981 343 */
AnnaBridge 156:ff21514d8981 344
AnnaBridge 156:ff21514d8981 345 /** @addtogroup CRYP_Exported_Functions_Group1
AnnaBridge 156:ff21514d8981 346 * @{
AnnaBridge 156:ff21514d8981 347 */
AnnaBridge 156:ff21514d8981 348 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 349 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 350 void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 351 void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 352 /**
AnnaBridge 156:ff21514d8981 353 * @}
AnnaBridge 156:ff21514d8981 354 */
AnnaBridge 156:ff21514d8981 355
AnnaBridge 156:ff21514d8981 356 /** @addtogroup CRYP_Exported_Functions_Group2
AnnaBridge 156:ff21514d8981 357 * @{
AnnaBridge 156:ff21514d8981 358 */
AnnaBridge 156:ff21514d8981 359 /* AES encryption/decryption using polling ***********************************/
AnnaBridge 156:ff21514d8981 360 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 361 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 362 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 363 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 364 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 365 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 366
AnnaBridge 156:ff21514d8981 367 /* AES encryption/decryption using interrupt *********************************/
AnnaBridge 156:ff21514d8981 368 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 369 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 370 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 371 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 372 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 373 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 374
AnnaBridge 156:ff21514d8981 375 /* AES encryption/decryption using DMA ***************************************/
AnnaBridge 156:ff21514d8981 376 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 377 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 378 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 379 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 380 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 381 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 382 /**
AnnaBridge 156:ff21514d8981 383 * @}
AnnaBridge 156:ff21514d8981 384 */
AnnaBridge 156:ff21514d8981 385
AnnaBridge 156:ff21514d8981 386 /** @addtogroup CRYP_Exported_Functions_Group3
AnnaBridge 156:ff21514d8981 387 * @{
AnnaBridge 156:ff21514d8981 388 */
AnnaBridge 156:ff21514d8981 389 /* DES encryption/decryption using polling ***********************************/
AnnaBridge 156:ff21514d8981 390 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 391 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 392 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 393 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 394
AnnaBridge 156:ff21514d8981 395 /* DES encryption/decryption using interrupt *********************************/
AnnaBridge 156:ff21514d8981 396 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 397 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 398 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 399 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 400
AnnaBridge 156:ff21514d8981 401 /* DES encryption/decryption using DMA ***************************************/
AnnaBridge 156:ff21514d8981 402 HAL_StatusTypeDef HAL_CRYP_DESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 403 HAL_StatusTypeDef HAL_CRYP_DESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 404 HAL_StatusTypeDef HAL_CRYP_DESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 405 HAL_StatusTypeDef HAL_CRYP_DESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 406 /**
AnnaBridge 156:ff21514d8981 407 * @}
AnnaBridge 156:ff21514d8981 408 */
AnnaBridge 156:ff21514d8981 409
AnnaBridge 156:ff21514d8981 410 /** @addtogroup CRYP_Exported_Functions_Group4
AnnaBridge 156:ff21514d8981 411 * @{
AnnaBridge 156:ff21514d8981 412 */
AnnaBridge 156:ff21514d8981 413 /* TDES encryption/decryption using polling **********************************/
AnnaBridge 156:ff21514d8981 414 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 415 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 416 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 417 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 418
AnnaBridge 156:ff21514d8981 419 /* TDES encryption/decryption using interrupt ********************************/
AnnaBridge 156:ff21514d8981 420 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 421 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 422 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 423 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 424
AnnaBridge 156:ff21514d8981 425 /* TDES encryption/decryption using DMA **************************************/
AnnaBridge 156:ff21514d8981 426 HAL_StatusTypeDef HAL_CRYP_TDESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 427 HAL_StatusTypeDef HAL_CRYP_TDESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 428 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 429 HAL_StatusTypeDef HAL_CRYP_TDESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 430 /**
AnnaBridge 156:ff21514d8981 431 * @}
AnnaBridge 156:ff21514d8981 432 */
AnnaBridge 156:ff21514d8981 433
AnnaBridge 156:ff21514d8981 434 /** @addtogroup CRYP_Exported_Functions_Group5
AnnaBridge 156:ff21514d8981 435 * @{
AnnaBridge 156:ff21514d8981 436 */
AnnaBridge 156:ff21514d8981 437 void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 438 void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 439 void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 440 /**
AnnaBridge 156:ff21514d8981 441 * @}
AnnaBridge 156:ff21514d8981 442 */
AnnaBridge 156:ff21514d8981 443
AnnaBridge 156:ff21514d8981 444 /** @addtogroup CRYP_Exported_Functions_Group6
AnnaBridge 156:ff21514d8981 445 * @{
AnnaBridge 156:ff21514d8981 446 */
AnnaBridge 156:ff21514d8981 447 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 448 /**
AnnaBridge 156:ff21514d8981 449 * @}
AnnaBridge 156:ff21514d8981 450 */
AnnaBridge 156:ff21514d8981 451
AnnaBridge 156:ff21514d8981 452 /** @addtogroup CRYP_Exported_Functions_Group7
AnnaBridge 156:ff21514d8981 453 * @{
AnnaBridge 156:ff21514d8981 454 */
AnnaBridge 156:ff21514d8981 455 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 456 /**
AnnaBridge 156:ff21514d8981 457 * @}
AnnaBridge 156:ff21514d8981 458 */
AnnaBridge 156:ff21514d8981 459
AnnaBridge 156:ff21514d8981 460 /**
AnnaBridge 156:ff21514d8981 461 * @}
AnnaBridge 156:ff21514d8981 462 */
AnnaBridge 156:ff21514d8981 463
AnnaBridge 156:ff21514d8981 464 /* Private types -------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 465 /** @defgroup CRYP_Private_Types CRYP Private Types
AnnaBridge 156:ff21514d8981 466 * @{
AnnaBridge 156:ff21514d8981 467 */
AnnaBridge 156:ff21514d8981 468
AnnaBridge 156:ff21514d8981 469 /**
AnnaBridge 156:ff21514d8981 470 * @}
AnnaBridge 156:ff21514d8981 471 */
AnnaBridge 156:ff21514d8981 472
AnnaBridge 156:ff21514d8981 473 /* Private variables ---------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 474 /** @defgroup CRYP_Private_Variables CRYP Private Variables
AnnaBridge 156:ff21514d8981 475 * @{
AnnaBridge 156:ff21514d8981 476 */
AnnaBridge 156:ff21514d8981 477
AnnaBridge 156:ff21514d8981 478 /**
AnnaBridge 156:ff21514d8981 479 * @}
AnnaBridge 156:ff21514d8981 480 */
AnnaBridge 156:ff21514d8981 481
AnnaBridge 156:ff21514d8981 482 /* Private constants ---------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 483 /** @defgroup CRYP_Private_Constants CRYP Private Constants
AnnaBridge 156:ff21514d8981 484 * @{
AnnaBridge 156:ff21514d8981 485 */
AnnaBridge 156:ff21514d8981 486 #define CRYP_FLAG_MASK 0x0000001FU
AnnaBridge 156:ff21514d8981 487 /**
AnnaBridge 156:ff21514d8981 488 * @}
AnnaBridge 156:ff21514d8981 489 */
AnnaBridge 156:ff21514d8981 490
AnnaBridge 156:ff21514d8981 491 /* Private macros ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 492 /** @defgroup CRYP_Private_Macros CRYP Private Macros
AnnaBridge 156:ff21514d8981 493 * @{
AnnaBridge 156:ff21514d8981 494 */
AnnaBridge 156:ff21514d8981 495
AnnaBridge 156:ff21514d8981 496 #define IS_CRYP_KEYSIZE(__KEYSIZE__) (((__KEYSIZE__) == CRYP_KEYSIZE_128B) || \
AnnaBridge 156:ff21514d8981 497 ((__KEYSIZE__) == CRYP_KEYSIZE_192B) || \
AnnaBridge 156:ff21514d8981 498 ((__KEYSIZE__) == CRYP_KEYSIZE_256B))
AnnaBridge 156:ff21514d8981 499
AnnaBridge 156:ff21514d8981 500
AnnaBridge 156:ff21514d8981 501 #define IS_CRYP_DATATYPE(__DATATYPE__) (((__DATATYPE__) == CRYP_DATATYPE_32B) || \
AnnaBridge 156:ff21514d8981 502 ((__DATATYPE__) == CRYP_DATATYPE_16B) || \
AnnaBridge 156:ff21514d8981 503 ((__DATATYPE__) == CRYP_DATATYPE_8B) || \
AnnaBridge 156:ff21514d8981 504 ((__DATATYPE__) == CRYP_DATATYPE_1B))
AnnaBridge 156:ff21514d8981 505
AnnaBridge 156:ff21514d8981 506
AnnaBridge 156:ff21514d8981 507 /**
AnnaBridge 156:ff21514d8981 508 * @}
AnnaBridge 156:ff21514d8981 509 */
AnnaBridge 156:ff21514d8981 510
AnnaBridge 156:ff21514d8981 511 /* Private functions ---------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 512 /** @defgroup CRYP_Private_Functions CRYP Private Functions
AnnaBridge 156:ff21514d8981 513 * @{
AnnaBridge 156:ff21514d8981 514 */
AnnaBridge 156:ff21514d8981 515
AnnaBridge 156:ff21514d8981 516 /**
AnnaBridge 156:ff21514d8981 517 * @}
AnnaBridge 156:ff21514d8981 518 */
AnnaBridge 156:ff21514d8981 519
AnnaBridge 156:ff21514d8981 520 #endif /* CRYP */
AnnaBridge 156:ff21514d8981 521
AnnaBridge 156:ff21514d8981 522 #if defined (AES)
AnnaBridge 156:ff21514d8981 523
AnnaBridge 156:ff21514d8981 524 /** @addtogroup STM32F4xx_HAL_Driver
AnnaBridge 156:ff21514d8981 525 * @{
AnnaBridge 156:ff21514d8981 526 */
AnnaBridge 156:ff21514d8981 527
AnnaBridge 156:ff21514d8981 528 /** @addtogroup CRYP
AnnaBridge 156:ff21514d8981 529 * @{
AnnaBridge 156:ff21514d8981 530 */
AnnaBridge 156:ff21514d8981 531
AnnaBridge 156:ff21514d8981 532 /* Exported types ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 533 /** @defgroup CRYP_Exported_Types CRYP Exported Types
AnnaBridge 156:ff21514d8981 534 * @{
AnnaBridge 156:ff21514d8981 535 */
AnnaBridge 156:ff21514d8981 536
AnnaBridge 156:ff21514d8981 537 /**
AnnaBridge 156:ff21514d8981 538 * @brief CRYP Configuration Structure definition
AnnaBridge 156:ff21514d8981 539 */
AnnaBridge 156:ff21514d8981 540 typedef struct
AnnaBridge 156:ff21514d8981 541 {
AnnaBridge 156:ff21514d8981 542 uint32_t DataType; /*!< 32-bit data, 16-bit data, 8-bit data or 1-bit string.
AnnaBridge 156:ff21514d8981 543 This parameter can be a value of @ref CRYP_Data_Type */
AnnaBridge 156:ff21514d8981 544
AnnaBridge 156:ff21514d8981 545 uint32_t KeySize; /*!< 128 or 256-bit key length.
AnnaBridge 156:ff21514d8981 546 This parameter can be a value of @ref CRYP_Key_Size */
AnnaBridge 156:ff21514d8981 547
AnnaBridge 156:ff21514d8981 548 uint32_t OperatingMode; /*!< AES operating mode.
AnnaBridge 156:ff21514d8981 549 This parameter can be a value of @ref CRYP_AES_OperatingMode */
AnnaBridge 156:ff21514d8981 550
AnnaBridge 156:ff21514d8981 551 uint32_t ChainingMode; /*!< AES chaining mode.
AnnaBridge 156:ff21514d8981 552 This parameter can be a value of @ref CRYP_AES_ChainingMode */
AnnaBridge 156:ff21514d8981 553
AnnaBridge 156:ff21514d8981 554 uint32_t KeyWriteFlag; /*!< Allows to bypass or not key write-up before decryption.
AnnaBridge 156:ff21514d8981 555 This parameter can be a value of @ref CRYP_Key_Write */
AnnaBridge 156:ff21514d8981 556
AnnaBridge 156:ff21514d8981 557 uint32_t GCMCMACPhase; /*!< Indicates the processing phase of the Galois Counter Mode (GCM),
AnnaBridge 156:ff21514d8981 558 Galois Message Authentication Code (GMAC) or Cipher Message
AnnaBridge 156:ff21514d8981 559 Authentication Code (CMAC) or Counter with Cipher Mode (CCM) when
AnnaBridge 156:ff21514d8981 560 the latter is applicable.
AnnaBridge 156:ff21514d8981 561 This parameter can be a value of @ref CRYP_GCM_CMAC_Phase */
AnnaBridge 156:ff21514d8981 562
AnnaBridge 156:ff21514d8981 563 uint8_t* pKey; /*!< Encryption/Decryption Key */
AnnaBridge 156:ff21514d8981 564
AnnaBridge 156:ff21514d8981 565 uint8_t* pInitVect; /*!< Initialization Vector used for CTR, CBC, GCM/GMAC, CMAC,
AnnaBridge 156:ff21514d8981 566 (and CCM when applicable) modes */
AnnaBridge 156:ff21514d8981 567
AnnaBridge 156:ff21514d8981 568 uint8_t* Header; /*!< Header used in GCM/GMAC, CMAC (and CCM when applicable) modes */
AnnaBridge 156:ff21514d8981 569
AnnaBridge 156:ff21514d8981 570 uint64_t HeaderSize; /*!< Header size in bytes */
AnnaBridge 156:ff21514d8981 571
AnnaBridge 156:ff21514d8981 572 }CRYP_InitTypeDef;
AnnaBridge 156:ff21514d8981 573
AnnaBridge 156:ff21514d8981 574 /**
AnnaBridge 156:ff21514d8981 575 * @brief HAL CRYP State structures definition
AnnaBridge 156:ff21514d8981 576 */
AnnaBridge 156:ff21514d8981 577 typedef enum
AnnaBridge 156:ff21514d8981 578 {
AnnaBridge 156:ff21514d8981 579 HAL_CRYP_STATE_RESET = 0x00U, /*!< CRYP not yet initialized or disabled */
AnnaBridge 156:ff21514d8981 580 HAL_CRYP_STATE_READY = 0x01U, /*!< CRYP initialized and ready for use */
AnnaBridge 156:ff21514d8981 581 HAL_CRYP_STATE_BUSY = 0x02U, /*!< CRYP internal processing is ongoing */
AnnaBridge 156:ff21514d8981 582 HAL_CRYP_STATE_TIMEOUT = 0x03U, /*!< CRYP timeout state */
AnnaBridge 156:ff21514d8981 583 HAL_CRYP_STATE_ERROR = 0x04U, /*!< CRYP error state */
AnnaBridge 156:ff21514d8981 584 HAL_CRYP_STATE_SUSPENDED = 0x05U /*!< CRYP suspended */
AnnaBridge 156:ff21514d8981 585 }HAL_CRYP_STATETypeDef;
AnnaBridge 156:ff21514d8981 586
AnnaBridge 156:ff21514d8981 587 /**
AnnaBridge 156:ff21514d8981 588 * @brief HAL CRYP phase structures definition
AnnaBridge 156:ff21514d8981 589 */
AnnaBridge 156:ff21514d8981 590 typedef enum
AnnaBridge 156:ff21514d8981 591 {
AnnaBridge 156:ff21514d8981 592 HAL_CRYP_PHASE_READY = 0x01U, /*!< CRYP peripheral is ready for initialization. */
AnnaBridge 156:ff21514d8981 593 HAL_CRYP_PHASE_PROCESS = 0x02U, /*!< CRYP peripheral is in processing phase */
AnnaBridge 156:ff21514d8981 594 HAL_CRYP_PHASE_START = 0x03U, /*!< CRYP peripheral has been initialized but
AnnaBridge 156:ff21514d8981 595 GCM/GMAC/CMAC(/CCM) initialization phase has not started */
AnnaBridge 156:ff21514d8981 596 HAL_CRYP_PHASE_INIT_OVER = 0x04U, /*!< GCM/GMAC/CMAC(/CCM) init phase has been carried out */
AnnaBridge 156:ff21514d8981 597 HAL_CRYP_PHASE_HEADER_OVER = 0x05U, /*!< GCM/GMAC/CMAC(/CCM) header phase has been carried out */
AnnaBridge 156:ff21514d8981 598 HAL_CRYP_PHASE_PAYLOAD_OVER = 0x06U, /*!< GCM(/CCM) payload phase has been carried out */
AnnaBridge 156:ff21514d8981 599 HAL_CRYP_PHASE_FINAL_OVER = 0x07U, /*!< GCM/GMAC/CMAC(/CCM) final phase has been carried out */
AnnaBridge 156:ff21514d8981 600 HAL_CRYP_PHASE_HEADER_SUSPENDED = 0x08U, /*!< GCM/GMAC/CMAC(/CCM) header phase has been suspended */
AnnaBridge 156:ff21514d8981 601 HAL_CRYP_PHASE_PAYLOAD_SUSPENDED = 0x09U, /*!< GCM(/CCM) payload phase has been suspended */
AnnaBridge 156:ff21514d8981 602 HAL_CRYP_PHASE_NOT_USED = 0x0AU /*!< Phase is irrelevant to the current chaining mode */
AnnaBridge 156:ff21514d8981 603 }HAL_PhaseTypeDef;
AnnaBridge 156:ff21514d8981 604
AnnaBridge 156:ff21514d8981 605 /**
AnnaBridge 156:ff21514d8981 606 * @brief HAL CRYP mode suspend definitions
AnnaBridge 156:ff21514d8981 607 */
AnnaBridge 156:ff21514d8981 608 typedef enum
AnnaBridge 156:ff21514d8981 609 {
AnnaBridge 156:ff21514d8981 610 HAL_CRYP_SUSPEND_NONE = 0x00U, /*!< CRYP peripheral suspension not requested */
AnnaBridge 156:ff21514d8981 611 HAL_CRYP_SUSPEND = 0x01U /*!< CRYP peripheral suspension requested */
AnnaBridge 156:ff21514d8981 612 }HAL_SuspendTypeDef;
AnnaBridge 156:ff21514d8981 613
AnnaBridge 156:ff21514d8981 614
AnnaBridge 156:ff21514d8981 615 /**
AnnaBridge 156:ff21514d8981 616 * @brief HAL CRYP Error Codes definition
AnnaBridge 156:ff21514d8981 617 */
AnnaBridge 156:ff21514d8981 618 #define HAL_CRYP_ERROR_NONE 0x00000000U /*!< No error */
AnnaBridge 156:ff21514d8981 619 #define HAL_CRYP_WRITE_ERROR 0x00000001U /*!< Write error */
AnnaBridge 156:ff21514d8981 620 #define HAL_CRYP_READ_ERROR 0x00000002U /*!< Read error */
AnnaBridge 156:ff21514d8981 621 #define HAL_CRYP_DMA_ERROR 0x00000004U /*!< DMA error */
AnnaBridge 156:ff21514d8981 622 #define HAL_CRYP_BUSY_ERROR 0x00000008U /*!< Busy flag error */
AnnaBridge 156:ff21514d8981 623
AnnaBridge 156:ff21514d8981 624 /**
AnnaBridge 156:ff21514d8981 625 * @brief CRYP handle Structure definition
AnnaBridge 156:ff21514d8981 626 */
AnnaBridge 156:ff21514d8981 627 typedef struct
AnnaBridge 156:ff21514d8981 628 {
AnnaBridge 156:ff21514d8981 629 AES_TypeDef *Instance; /*!< Register base address */
AnnaBridge 156:ff21514d8981 630
AnnaBridge 156:ff21514d8981 631 CRYP_InitTypeDef Init; /*!< CRYP initialization parameters */
AnnaBridge 156:ff21514d8981 632
AnnaBridge 156:ff21514d8981 633 uint8_t *pCrypInBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) input buffer */
AnnaBridge 156:ff21514d8981 634
AnnaBridge 156:ff21514d8981 635 uint8_t *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) output buffer */
AnnaBridge 156:ff21514d8981 636
AnnaBridge 156:ff21514d8981 637 uint32_t CrypInCount; /*!< Input data size in bytes or, after suspension, the remaining
AnnaBridge 156:ff21514d8981 638 number of bytes to process */
AnnaBridge 156:ff21514d8981 639
AnnaBridge 156:ff21514d8981 640 uint32_t CrypOutCount; /*!< Output data size in bytes */
AnnaBridge 156:ff21514d8981 641
AnnaBridge 156:ff21514d8981 642 HAL_PhaseTypeDef Phase; /*!< CRYP peripheral processing phase for GCM, GMAC, CMAC
AnnaBridge 156:ff21514d8981 643 (or CCM when applicable) modes.
AnnaBridge 156:ff21514d8981 644 Indicates the last phase carried out to ease
AnnaBridge 156:ff21514d8981 645 phase transitions */
AnnaBridge 156:ff21514d8981 646
AnnaBridge 156:ff21514d8981 647 DMA_HandleTypeDef *hdmain; /*!< CRYP peripheral Input DMA handle parameters */
AnnaBridge 156:ff21514d8981 648
AnnaBridge 156:ff21514d8981 649 DMA_HandleTypeDef *hdmaout; /*!< CRYP peripheral Output DMA handle parameters */
AnnaBridge 156:ff21514d8981 650
AnnaBridge 156:ff21514d8981 651 HAL_LockTypeDef Lock; /*!< CRYP locking object */
AnnaBridge 156:ff21514d8981 652
AnnaBridge 156:ff21514d8981 653 __IO HAL_CRYP_STATETypeDef State; /*!< CRYP peripheral state */
AnnaBridge 156:ff21514d8981 654
AnnaBridge 156:ff21514d8981 655 __IO uint32_t ErrorCode; /*!< CRYP peripheral error code */
AnnaBridge 156:ff21514d8981 656
AnnaBridge 156:ff21514d8981 657 HAL_SuspendTypeDef SuspendRequest; /*!< CRYP peripheral suspension request flag */
AnnaBridge 156:ff21514d8981 658 }CRYP_HandleTypeDef;
AnnaBridge 156:ff21514d8981 659
AnnaBridge 156:ff21514d8981 660 /**
AnnaBridge 156:ff21514d8981 661 * @}
AnnaBridge 156:ff21514d8981 662 */
AnnaBridge 156:ff21514d8981 663
AnnaBridge 156:ff21514d8981 664
AnnaBridge 156:ff21514d8981 665 /* Exported constants --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 666 /** @defgroup CRYP_Exported_Constants CRYP Exported Constants
AnnaBridge 156:ff21514d8981 667 * @{
AnnaBridge 156:ff21514d8981 668 */
AnnaBridge 156:ff21514d8981 669
AnnaBridge 156:ff21514d8981 670 /** @defgroup CRYP_Key_Size Key size selection
AnnaBridge 156:ff21514d8981 671 * @{
AnnaBridge 156:ff21514d8981 672 */
AnnaBridge 156:ff21514d8981 673 #define CRYP_KEYSIZE_128B 0x00000000U /*!< 128-bit long key */
AnnaBridge 156:ff21514d8981 674 #define CRYP_KEYSIZE_256B AES_CR_KEYSIZE /*!< 256-bit long key */
AnnaBridge 156:ff21514d8981 675 /**
AnnaBridge 156:ff21514d8981 676 * @}
AnnaBridge 156:ff21514d8981 677 */
AnnaBridge 156:ff21514d8981 678
AnnaBridge 156:ff21514d8981 679 /** @defgroup CRYP_Data_Type AES Data Type selection
AnnaBridge 156:ff21514d8981 680 * @{
AnnaBridge 156:ff21514d8981 681 */
AnnaBridge 156:ff21514d8981 682 #define CRYP_DATATYPE_32B 0x00000000U /*!< 32-bit data type (no swapping) */
AnnaBridge 156:ff21514d8981 683 #define CRYP_DATATYPE_16B AES_CR_DATATYPE_0 /*!< 16-bit data type (half-word swapping) */
AnnaBridge 156:ff21514d8981 684 #define CRYP_DATATYPE_8B AES_CR_DATATYPE_1 /*!< 8-bit data type (byte swapping) */
AnnaBridge 156:ff21514d8981 685 #define CRYP_DATATYPE_1B AES_CR_DATATYPE /*!< 1-bit data type (bit swapping) */
AnnaBridge 156:ff21514d8981 686 /**
AnnaBridge 156:ff21514d8981 687 * @}
AnnaBridge 156:ff21514d8981 688 */
AnnaBridge 156:ff21514d8981 689
AnnaBridge 156:ff21514d8981 690 /** @defgroup CRYP_AES_State AES Enable state
AnnaBridge 156:ff21514d8981 691 * @{
AnnaBridge 156:ff21514d8981 692 */
AnnaBridge 156:ff21514d8981 693 #define CRYP_AES_DISABLE 0x00000000U /*!< Disable AES */
AnnaBridge 156:ff21514d8981 694 #define CRYP_AES_ENABLE AES_CR_EN /*!< Enable AES */
AnnaBridge 156:ff21514d8981 695 /**
AnnaBridge 156:ff21514d8981 696 * @}
AnnaBridge 156:ff21514d8981 697 */
AnnaBridge 156:ff21514d8981 698
AnnaBridge 156:ff21514d8981 699 /** @defgroup CRYP_AES_OperatingMode AES operating mode
AnnaBridge 156:ff21514d8981 700 * @{
AnnaBridge 156:ff21514d8981 701 */
AnnaBridge 156:ff21514d8981 702 #define CRYP_ALGOMODE_ENCRYPT 0x00000000U /*!< Encryption mode */
AnnaBridge 156:ff21514d8981 703 #define CRYP_ALGOMODE_KEYDERIVATION AES_CR_MODE_0 /*!< Key derivation mode */
AnnaBridge 156:ff21514d8981 704 #define CRYP_ALGOMODE_DECRYPT AES_CR_MODE_1 /*!< Decryption */
AnnaBridge 156:ff21514d8981 705 #define CRYP_ALGOMODE_KEYDERIVATION_DECRYPT AES_CR_MODE /*!< Key derivation and decryption */
AnnaBridge 156:ff21514d8981 706 #define CRYP_ALGOMODE_TAG_GENERATION 0x00000000U /*!< GMAC or CMAC authentication tag generation */
AnnaBridge 156:ff21514d8981 707 /**
AnnaBridge 156:ff21514d8981 708 * @}
AnnaBridge 156:ff21514d8981 709 */
AnnaBridge 156:ff21514d8981 710
AnnaBridge 156:ff21514d8981 711 /** @defgroup CRYP_AES_ChainingMode AES chaining mode
AnnaBridge 156:ff21514d8981 712 * @{
AnnaBridge 156:ff21514d8981 713 */
AnnaBridge 156:ff21514d8981 714 #define CRYP_CHAINMODE_AES_ECB 0x00000000U /*!< Electronic codebook chaining algorithm */
AnnaBridge 156:ff21514d8981 715 #define CRYP_CHAINMODE_AES_CBC AES_CR_CHMOD_0 /*!< Cipher block chaining algorithm */
AnnaBridge 156:ff21514d8981 716 #define CRYP_CHAINMODE_AES_CTR AES_CR_CHMOD_1 /*!< Counter mode chaining algorithm */
AnnaBridge 156:ff21514d8981 717 #define CRYP_CHAINMODE_AES_GCM_GMAC (AES_CR_CHMOD_0 | AES_CR_CHMOD_1) /*!< Galois counter mode - Galois message authentication code */
AnnaBridge 156:ff21514d8981 718 #define CRYP_CHAINMODE_AES_CMAC AES_CR_CHMOD_2 /*!< Cipher message authentication code */
AnnaBridge 156:ff21514d8981 719 #if defined(AES_CR_NPBLB)
AnnaBridge 156:ff21514d8981 720 #define CRYP_CHAINMODE_AES_CCM_CMAC AES_CR_CHMOD_2 /*!< Counter with Cipher Mode - Cipher message authentication code */
AnnaBridge 156:ff21514d8981 721 #endif
AnnaBridge 156:ff21514d8981 722 /**
AnnaBridge 156:ff21514d8981 723 * @}
AnnaBridge 156:ff21514d8981 724 */
AnnaBridge 156:ff21514d8981 725
AnnaBridge 156:ff21514d8981 726 /** @defgroup CRYP_Key_Write AES decryption key write-up flag
AnnaBridge 156:ff21514d8981 727 * @{
AnnaBridge 156:ff21514d8981 728 */
AnnaBridge 156:ff21514d8981 729 #define CRYP_KEY_WRITE_ENABLE 0x00000000U /*!< Enable decryption key writing */
AnnaBridge 156:ff21514d8981 730 #define CRYP_KEY_WRITE_DISABLE 0x00000001U /*!< Disable decryption key writing */
AnnaBridge 156:ff21514d8981 731 /**
AnnaBridge 156:ff21514d8981 732 * @}
AnnaBridge 156:ff21514d8981 733 */
AnnaBridge 156:ff21514d8981 734
AnnaBridge 156:ff21514d8981 735 /** @defgroup CRYP_DMAIN DMA Input phase management enable state
AnnaBridge 156:ff21514d8981 736 * @{
AnnaBridge 156:ff21514d8981 737 */
AnnaBridge 156:ff21514d8981 738 #define CRYP_DMAIN_DISABLE 0x00000000U /*!< Disable DMA Input phase management */
AnnaBridge 156:ff21514d8981 739 #define CRYP_DMAIN_ENABLE AES_CR_DMAINEN /*!< Enable DMA Input phase management */
AnnaBridge 156:ff21514d8981 740 /**
AnnaBridge 156:ff21514d8981 741 * @}
AnnaBridge 156:ff21514d8981 742 */
AnnaBridge 156:ff21514d8981 743
AnnaBridge 156:ff21514d8981 744 /** @defgroup CRYP_DMAOUT DMA Output phase management enable state
AnnaBridge 156:ff21514d8981 745 * @{
AnnaBridge 156:ff21514d8981 746 */
AnnaBridge 156:ff21514d8981 747 #define CRYP_DMAOUT_DISABLE 0x00000000U /*!< Disable DMA Output phase management */
AnnaBridge 156:ff21514d8981 748 #define CRYP_DMAOUT_ENABLE AES_CR_DMAOUTEN /*!< Enable DMA Output phase management */
AnnaBridge 156:ff21514d8981 749 /**
AnnaBridge 156:ff21514d8981 750 * @}
AnnaBridge 156:ff21514d8981 751 */
AnnaBridge 156:ff21514d8981 752
AnnaBridge 156:ff21514d8981 753
AnnaBridge 156:ff21514d8981 754 /** @defgroup CRYP_GCM_CMAC_Phase GCM/GMAC and CMAC processing phase selection
AnnaBridge 156:ff21514d8981 755 * @{
AnnaBridge 156:ff21514d8981 756 */
AnnaBridge 156:ff21514d8981 757 #define CRYP_GCM_INIT_PHASE 0x00000000U /*!< GCM/GMAC (or CCM) init phase */
AnnaBridge 156:ff21514d8981 758 #define CRYP_GCMCMAC_HEADER_PHASE AES_CR_GCMPH_0 /*!< GCM/GMAC or (CCM/)CMAC header phase */
AnnaBridge 156:ff21514d8981 759 #define CRYP_GCM_PAYLOAD_PHASE AES_CR_GCMPH_1 /*!< GCM(/CCM) payload phase */
AnnaBridge 156:ff21514d8981 760 #define CRYP_GCMCMAC_FINAL_PHASE AES_CR_GCMPH /*!< GCM/GMAC or (CCM/)CMAC final phase */
AnnaBridge 156:ff21514d8981 761 /* Definitions duplication for code readibility's sake:
AnnaBridge 156:ff21514d8981 762 supported or not supported chain modes are not specified for each phase */
AnnaBridge 156:ff21514d8981 763 #define CRYP_INIT_PHASE 0x00000000U /*!< Init phase */
AnnaBridge 156:ff21514d8981 764 #define CRYP_HEADER_PHASE AES_CR_GCMPH_0 /*!< Header phase */
AnnaBridge 156:ff21514d8981 765 #define CRYP_PAYLOAD_PHASE AES_CR_GCMPH_1 /*!< Payload phase */
AnnaBridge 156:ff21514d8981 766 #define CRYP_FINAL_PHASE AES_CR_GCMPH /*!< Final phase */
AnnaBridge 156:ff21514d8981 767 /**
AnnaBridge 156:ff21514d8981 768 * @}
AnnaBridge 156:ff21514d8981 769 */
AnnaBridge 156:ff21514d8981 770
AnnaBridge 156:ff21514d8981 771 /** @defgroup CRYP_Flags AES status flags
AnnaBridge 156:ff21514d8981 772 * @{
AnnaBridge 156:ff21514d8981 773 */
AnnaBridge 156:ff21514d8981 774
AnnaBridge 156:ff21514d8981 775 #define CRYP_FLAG_BUSY AES_SR_BUSY /*!< GCM process suspension forbidden */
AnnaBridge 156:ff21514d8981 776 #define CRYP_FLAG_WRERR AES_SR_WRERR /*!< Write Error */
AnnaBridge 156:ff21514d8981 777 #define CRYP_FLAG_RDERR AES_SR_RDERR /*!< Read error */
AnnaBridge 156:ff21514d8981 778 #define CRYP_FLAG_CCF AES_SR_CCF /*!< Computation completed */
AnnaBridge 156:ff21514d8981 779 /**
AnnaBridge 156:ff21514d8981 780 * @}
AnnaBridge 156:ff21514d8981 781 */
AnnaBridge 156:ff21514d8981 782
AnnaBridge 156:ff21514d8981 783 /** @defgroup CRYP_Clear_Flags AES clearing flags
AnnaBridge 156:ff21514d8981 784 * @{
AnnaBridge 156:ff21514d8981 785 */
AnnaBridge 156:ff21514d8981 786
AnnaBridge 156:ff21514d8981 787 #define CRYP_CCF_CLEAR AES_CR_CCFC /*!< Computation Complete Flag Clear */
AnnaBridge 156:ff21514d8981 788 #define CRYP_ERR_CLEAR AES_CR_ERRC /*!< Error Flag Clear */
AnnaBridge 156:ff21514d8981 789 /**
AnnaBridge 156:ff21514d8981 790 * @}
AnnaBridge 156:ff21514d8981 791 */
AnnaBridge 156:ff21514d8981 792
AnnaBridge 156:ff21514d8981 793 /** @defgroup AES_Interrupts_Enable AES Interrupts Enable bits
AnnaBridge 156:ff21514d8981 794 * @{
AnnaBridge 156:ff21514d8981 795 */
AnnaBridge 156:ff21514d8981 796 #define CRYP_IT_CCFIE AES_CR_CCFIE /*!< Computation Complete interrupt enable */
AnnaBridge 156:ff21514d8981 797 #define CRYP_IT_ERRIE AES_CR_ERRIE /*!< Error interrupt enable */
AnnaBridge 156:ff21514d8981 798 /**
AnnaBridge 156:ff21514d8981 799 * @}
AnnaBridge 156:ff21514d8981 800 */
AnnaBridge 156:ff21514d8981 801
AnnaBridge 156:ff21514d8981 802 /** @defgroup CRYP_Interrupts_Flags AES Interrupts flags
AnnaBridge 156:ff21514d8981 803 * @{
AnnaBridge 156:ff21514d8981 804 */
AnnaBridge 156:ff21514d8981 805 #define CRYP_IT_WRERR AES_SR_WRERR /*!< Write Error */
AnnaBridge 156:ff21514d8981 806 #define CRYP_IT_RDERR AES_SR_RDERR /*!< Read Error */
AnnaBridge 156:ff21514d8981 807 #define CRYP_IT_CCF AES_SR_CCF /*!< Computation completed */
AnnaBridge 156:ff21514d8981 808 /**
AnnaBridge 156:ff21514d8981 809 * @}
AnnaBridge 156:ff21514d8981 810 */
AnnaBridge 156:ff21514d8981 811
AnnaBridge 156:ff21514d8981 812 /**
AnnaBridge 156:ff21514d8981 813 * @}
AnnaBridge 156:ff21514d8981 814 */
AnnaBridge 156:ff21514d8981 815
AnnaBridge 156:ff21514d8981 816 /* Exported macros -----------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 817 /** @defgroup CRYP_Exported_Macros CRYP Exported Macros
AnnaBridge 156:ff21514d8981 818 * @{
AnnaBridge 156:ff21514d8981 819 */
AnnaBridge 156:ff21514d8981 820
AnnaBridge 156:ff21514d8981 821 /** @brief Reset CRYP handle state.
AnnaBridge 163:e59c8e839560 822 * @param __HANDLE__ specifies the CRYP handle.
AnnaBridge 156:ff21514d8981 823 * @retval None
AnnaBridge 156:ff21514d8981 824 */
AnnaBridge 156:ff21514d8981 825 #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)
AnnaBridge 156:ff21514d8981 826
AnnaBridge 156:ff21514d8981 827 /**
AnnaBridge 156:ff21514d8981 828 * @brief Enable the CRYP AES peripheral.
AnnaBridge 156:ff21514d8981 829 * @retval None
AnnaBridge 156:ff21514d8981 830 */
AnnaBridge 156:ff21514d8981 831 #define __HAL_CRYP_ENABLE() (AES->CR |= AES_CR_EN)
AnnaBridge 156:ff21514d8981 832
AnnaBridge 156:ff21514d8981 833 /**
AnnaBridge 156:ff21514d8981 834 * @brief Disable the CRYP AES peripheral.
AnnaBridge 156:ff21514d8981 835 * @retval None
AnnaBridge 156:ff21514d8981 836 */
AnnaBridge 156:ff21514d8981 837 #define __HAL_CRYP_DISABLE() (AES->CR &= ~AES_CR_EN)
AnnaBridge 156:ff21514d8981 838
AnnaBridge 156:ff21514d8981 839 /**
AnnaBridge 156:ff21514d8981 840 * @brief Set the algorithm operating mode.
AnnaBridge 163:e59c8e839560 841 * @param __OPERATING_MODE__ specifies the operating mode
AnnaBridge 156:ff21514d8981 842 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 843 * @arg @ref CRYP_ALGOMODE_ENCRYPT encryption
AnnaBridge 156:ff21514d8981 844 * @arg @ref CRYP_ALGOMODE_KEYDERIVATION key derivation
AnnaBridge 156:ff21514d8981 845 * @arg @ref CRYP_ALGOMODE_DECRYPT decryption
AnnaBridge 156:ff21514d8981 846 * @arg @ref CRYP_ALGOMODE_KEYDERIVATION_DECRYPT key derivation and decryption
AnnaBridge 156:ff21514d8981 847 * @retval None
AnnaBridge 156:ff21514d8981 848 */
AnnaBridge 156:ff21514d8981 849 #define __HAL_CRYP_SET_OPERATINGMODE(__OPERATING_MODE__) MODIFY_REG(AES->CR, AES_CR_MODE, (__OPERATING_MODE__))
AnnaBridge 156:ff21514d8981 850
AnnaBridge 156:ff21514d8981 851
AnnaBridge 156:ff21514d8981 852 /**
AnnaBridge 156:ff21514d8981 853 * @brief Set the algorithm chaining mode.
AnnaBridge 163:e59c8e839560 854 * @param __CHAINING_MODE__ specifies the chaining mode
AnnaBridge 156:ff21514d8981 855 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 856 * @arg @ref CRYP_CHAINMODE_AES_ECB Electronic CodeBook
AnnaBridge 156:ff21514d8981 857 * @arg @ref CRYP_CHAINMODE_AES_CBC Cipher Block Chaining
AnnaBridge 156:ff21514d8981 858 * @arg @ref CRYP_CHAINMODE_AES_CTR CounTeR mode
AnnaBridge 156:ff21514d8981 859 * @arg @ref CRYP_CHAINMODE_AES_GCM_GMAC Galois Counter Mode or Galois Message Authentication Code
AnnaBridge 156:ff21514d8981 860 * @arg @ref CRYP_CHAINMODE_AES_CMAC Cipher Message Authentication Code (or Counter with Cipher Mode when applicable)
AnnaBridge 156:ff21514d8981 861 * @retval None
AnnaBridge 156:ff21514d8981 862 */
AnnaBridge 156:ff21514d8981 863 #define __HAL_CRYP_SET_CHAININGMODE(__CHAINING_MODE__) MODIFY_REG(AES->CR, AES_CR_CHMOD, (__CHAINING_MODE__))
AnnaBridge 156:ff21514d8981 864
AnnaBridge 156:ff21514d8981 865
AnnaBridge 156:ff21514d8981 866
AnnaBridge 156:ff21514d8981 867 /** @brief Check whether the specified CRYP status flag is set or not.
AnnaBridge 163:e59c8e839560 868 * @param __FLAG__ specifies the flag to check.
AnnaBridge 156:ff21514d8981 869 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 870 * @arg @ref CRYP_FLAG_BUSY GCM process suspension forbidden
AnnaBridge 156:ff21514d8981 871 * @arg @ref CRYP_IT_WRERR Write Error
AnnaBridge 156:ff21514d8981 872 * @arg @ref CRYP_IT_RDERR Read Error
AnnaBridge 156:ff21514d8981 873 * @arg @ref CRYP_IT_CCF Computation Complete
AnnaBridge 156:ff21514d8981 874 * @retval The state of __FLAG__ (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 875 */
AnnaBridge 156:ff21514d8981 876 #define __HAL_CRYP_GET_FLAG(__FLAG__) ((AES->SR & (__FLAG__)) == (__FLAG__))
AnnaBridge 156:ff21514d8981 877
AnnaBridge 156:ff21514d8981 878
AnnaBridge 156:ff21514d8981 879 /** @brief Clear the CRYP pending status flag.
AnnaBridge 163:e59c8e839560 880 * @param __FLAG__ specifies the flag to clear.
AnnaBridge 156:ff21514d8981 881 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 882 * @arg @ref CRYP_ERR_CLEAR Read (RDERR) or Write Error (WRERR) Flag Clear
AnnaBridge 156:ff21514d8981 883 * @arg @ref CRYP_CCF_CLEAR Computation Complete Flag (CCF) Clear
AnnaBridge 156:ff21514d8981 884 * @retval None
AnnaBridge 156:ff21514d8981 885 */
AnnaBridge 156:ff21514d8981 886 #define __HAL_CRYP_CLEAR_FLAG(__FLAG__) SET_BIT(AES->CR, (__FLAG__))
AnnaBridge 156:ff21514d8981 887
AnnaBridge 156:ff21514d8981 888
AnnaBridge 156:ff21514d8981 889
AnnaBridge 156:ff21514d8981 890 /** @brief Check whether the specified CRYP interrupt source is enabled or not.
AnnaBridge 163:e59c8e839560 891 * @param __INTERRUPT__ CRYP interrupt source to check
AnnaBridge 156:ff21514d8981 892 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 893 * @arg @ref CRYP_IT_ERRIE Error interrupt (used for RDERR and WRERR)
AnnaBridge 156:ff21514d8981 894 * @arg @ref CRYP_IT_CCFIE Computation Complete interrupt
AnnaBridge 156:ff21514d8981 895 * @retval State of interruption (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 896 */
AnnaBridge 156:ff21514d8981 897 #define __HAL_CRYP_GET_IT_SOURCE(__INTERRUPT__) ((AES->CR & (__INTERRUPT__)) == (__INTERRUPT__))
AnnaBridge 156:ff21514d8981 898
AnnaBridge 156:ff21514d8981 899
AnnaBridge 156:ff21514d8981 900 /** @brief Check whether the specified CRYP interrupt is set or not.
AnnaBridge 163:e59c8e839560 901 * @param __INTERRUPT__ specifies the interrupt to check.
AnnaBridge 156:ff21514d8981 902 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 903 * @arg @ref CRYP_IT_WRERR Write Error
AnnaBridge 156:ff21514d8981 904 * @arg @ref CRYP_IT_RDERR Read Error
AnnaBridge 156:ff21514d8981 905 * @arg @ref CRYP_IT_CCF Computation Complete
AnnaBridge 156:ff21514d8981 906 * @retval The state of __INTERRUPT__ (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 907 */
AnnaBridge 156:ff21514d8981 908 #define __HAL_CRYP_GET_IT(__INTERRUPT__) ((AES->SR & (__INTERRUPT__)) == (__INTERRUPT__))
AnnaBridge 156:ff21514d8981 909
AnnaBridge 156:ff21514d8981 910
AnnaBridge 156:ff21514d8981 911
AnnaBridge 156:ff21514d8981 912 /** @brief Clear the CRYP pending interrupt.
AnnaBridge 163:e59c8e839560 913 * @param __INTERRUPT__ specifies the IT to clear.
AnnaBridge 156:ff21514d8981 914 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 915 * @arg @ref CRYP_ERR_CLEAR Read (RDERR) or Write Error (WRERR) Flag Clear
AnnaBridge 156:ff21514d8981 916 * @arg @ref CRYP_CCF_CLEAR Computation Complete Flag (CCF) Clear
AnnaBridge 156:ff21514d8981 917 * @retval None
AnnaBridge 156:ff21514d8981 918 */
AnnaBridge 156:ff21514d8981 919 #define __HAL_CRYP_CLEAR_IT(__INTERRUPT__) SET_BIT(AES->CR, (__INTERRUPT__))
AnnaBridge 156:ff21514d8981 920
AnnaBridge 156:ff21514d8981 921
AnnaBridge 156:ff21514d8981 922 /**
AnnaBridge 156:ff21514d8981 923 * @brief Enable the CRYP interrupt.
AnnaBridge 163:e59c8e839560 924 * @param __INTERRUPT__ CRYP Interrupt.
AnnaBridge 156:ff21514d8981 925 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 926 * @arg @ref CRYP_IT_ERRIE Error interrupt (used for RDERR and WRERR)
AnnaBridge 156:ff21514d8981 927 * @arg @ref CRYP_IT_CCFIE Computation Complete interrupt
AnnaBridge 156:ff21514d8981 928 * @retval None
AnnaBridge 156:ff21514d8981 929 */
AnnaBridge 156:ff21514d8981 930 #define __HAL_CRYP_ENABLE_IT(__INTERRUPT__) ((AES->CR) |= (__INTERRUPT__))
AnnaBridge 156:ff21514d8981 931
AnnaBridge 156:ff21514d8981 932
AnnaBridge 156:ff21514d8981 933 /**
AnnaBridge 156:ff21514d8981 934 * @brief Disable the CRYP interrupt.
AnnaBridge 163:e59c8e839560 935 * @param __INTERRUPT__ CRYP Interrupt.
AnnaBridge 156:ff21514d8981 936 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 937 * @arg @ref CRYP_IT_ERRIE Error interrupt (used for RDERR and WRERR)
AnnaBridge 156:ff21514d8981 938 * @arg @ref CRYP_IT_CCFIE Computation Complete interrupt
AnnaBridge 156:ff21514d8981 939 * @retval None
AnnaBridge 156:ff21514d8981 940 */
AnnaBridge 156:ff21514d8981 941 #define __HAL_CRYP_DISABLE_IT(__INTERRUPT__) ((AES->CR) &= ~(__INTERRUPT__))
AnnaBridge 156:ff21514d8981 942
AnnaBridge 156:ff21514d8981 943 /**
AnnaBridge 156:ff21514d8981 944 * @}
AnnaBridge 156:ff21514d8981 945 */
AnnaBridge 156:ff21514d8981 946
AnnaBridge 156:ff21514d8981 947 /* Private macros --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 948 /** @addtogroup CRYP_Private_Macros CRYP Private Macros
AnnaBridge 156:ff21514d8981 949 * @{
AnnaBridge 156:ff21514d8981 950 */
AnnaBridge 156:ff21514d8981 951
AnnaBridge 156:ff21514d8981 952 /**
AnnaBridge 156:ff21514d8981 953 * @brief Verify the key size length.
AnnaBridge 163:e59c8e839560 954 * @param __KEYSIZE__ Ciphering/deciphering algorithm key size.
AnnaBridge 156:ff21514d8981 955 * @retval SET (__KEYSIZE__ is a valid value) or RESET (__KEYSIZE__ is invalid)
AnnaBridge 156:ff21514d8981 956 */
AnnaBridge 156:ff21514d8981 957 #define IS_CRYP_KEYSIZE(__KEYSIZE__) (((__KEYSIZE__) == CRYP_KEYSIZE_128B) || \
AnnaBridge 156:ff21514d8981 958 ((__KEYSIZE__) == CRYP_KEYSIZE_256B))
AnnaBridge 156:ff21514d8981 959
AnnaBridge 156:ff21514d8981 960 /**
AnnaBridge 156:ff21514d8981 961 * @brief Verify the input data type.
AnnaBridge 163:e59c8e839560 962 * @param __DATATYPE__ Ciphering/deciphering algorithm input data type.
AnnaBridge 156:ff21514d8981 963 * @retval SET (__DATATYPE__ is valid) or RESET (__DATATYPE__ is invalid)
AnnaBridge 156:ff21514d8981 964 */
AnnaBridge 156:ff21514d8981 965 #define IS_CRYP_DATATYPE(__DATATYPE__) (((__DATATYPE__) == CRYP_DATATYPE_32B) || \
AnnaBridge 156:ff21514d8981 966 ((__DATATYPE__) == CRYP_DATATYPE_16B) || \
AnnaBridge 156:ff21514d8981 967 ((__DATATYPE__) == CRYP_DATATYPE_8B) || \
AnnaBridge 156:ff21514d8981 968 ((__DATATYPE__) == CRYP_DATATYPE_1B))
AnnaBridge 156:ff21514d8981 969
AnnaBridge 156:ff21514d8981 970 /**
AnnaBridge 156:ff21514d8981 971 * @brief Verify the CRYP AES IP running mode.
AnnaBridge 163:e59c8e839560 972 * @param __MODE__ CRYP AES IP running mode.
AnnaBridge 156:ff21514d8981 973 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
AnnaBridge 156:ff21514d8981 974 */
AnnaBridge 156:ff21514d8981 975 #define IS_CRYP_AES(__MODE__) (((__MODE__) == CRYP_AES_DISABLE) || \
AnnaBridge 156:ff21514d8981 976 ((__MODE__) == CRYP_AES_ENABLE))
AnnaBridge 156:ff21514d8981 977
AnnaBridge 156:ff21514d8981 978 /**
AnnaBridge 156:ff21514d8981 979 * @brief Verify the selected CRYP algorithm.
AnnaBridge 163:e59c8e839560 980 * @param __ALGOMODE__ Selected CRYP algorithm (ciphering, deciphering, key derivation or a combination of the latter).
AnnaBridge 156:ff21514d8981 981 * @retval SET (__ALGOMODE__ is valid) or RESET (__ALGOMODE__ is invalid)
AnnaBridge 156:ff21514d8981 982 */
AnnaBridge 156:ff21514d8981 983 #define IS_CRYP_ALGOMODE(__ALGOMODE__) (((__ALGOMODE__) == CRYP_ALGOMODE_ENCRYPT) || \
AnnaBridge 156:ff21514d8981 984 ((__ALGOMODE__) == CRYP_ALGOMODE_KEYDERIVATION) || \
AnnaBridge 156:ff21514d8981 985 ((__ALGOMODE__) == CRYP_ALGOMODE_DECRYPT) || \
AnnaBridge 156:ff21514d8981 986 ((__ALGOMODE__) == CRYP_ALGOMODE_TAG_GENERATION) || \
AnnaBridge 156:ff21514d8981 987 ((__ALGOMODE__) == CRYP_ALGOMODE_KEYDERIVATION_DECRYPT))
AnnaBridge 156:ff21514d8981 988
AnnaBridge 156:ff21514d8981 989 /**
AnnaBridge 156:ff21514d8981 990 * @brief Verify the selected CRYP chaining algorithm.
AnnaBridge 163:e59c8e839560 991 * @param __CHAINMODE__ Selected CRYP chaining algorithm.
AnnaBridge 156:ff21514d8981 992 * @retval SET (__CHAINMODE__ is valid) or RESET (__CHAINMODE__ is invalid)
AnnaBridge 156:ff21514d8981 993 */
AnnaBridge 156:ff21514d8981 994 #if defined(AES_CR_NPBLB)
AnnaBridge 156:ff21514d8981 995 #define IS_CRYP_CHAINMODE(__CHAINMODE__) (((__CHAINMODE__) == CRYP_CHAINMODE_AES_ECB) || \
AnnaBridge 156:ff21514d8981 996 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CBC) || \
AnnaBridge 156:ff21514d8981 997 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CTR) || \
AnnaBridge 156:ff21514d8981 998 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_GCM_GMAC) || \
AnnaBridge 156:ff21514d8981 999 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CCM_CMAC))
AnnaBridge 156:ff21514d8981 1000 #else
AnnaBridge 156:ff21514d8981 1001 #define IS_CRYP_CHAINMODE(__CHAINMODE__) (((__CHAINMODE__) == CRYP_CHAINMODE_AES_ECB) || \
AnnaBridge 156:ff21514d8981 1002 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CBC) || \
AnnaBridge 156:ff21514d8981 1003 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CTR) || \
AnnaBridge 156:ff21514d8981 1004 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_GCM_GMAC) || \
AnnaBridge 156:ff21514d8981 1005 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CMAC))
AnnaBridge 156:ff21514d8981 1006 #endif
AnnaBridge 156:ff21514d8981 1007
AnnaBridge 156:ff21514d8981 1008 /**
AnnaBridge 156:ff21514d8981 1009 * @brief Verify the deciphering key write option.
AnnaBridge 163:e59c8e839560 1010 * @param __WRITE__ deciphering key write option.
AnnaBridge 156:ff21514d8981 1011 * @retval SET (__WRITE__ is valid) or RESET (__WRITE__ is invalid)
AnnaBridge 156:ff21514d8981 1012 */
AnnaBridge 156:ff21514d8981 1013 #define IS_CRYP_WRITE(__WRITE__) (((__WRITE__) == CRYP_KEY_WRITE_ENABLE) || \
AnnaBridge 156:ff21514d8981 1014 ((__WRITE__) == CRYP_KEY_WRITE_DISABLE))
AnnaBridge 156:ff21514d8981 1015
AnnaBridge 156:ff21514d8981 1016 /**
AnnaBridge 156:ff21514d8981 1017 * @brief Verify the CRYP input data DMA mode.
AnnaBridge 163:e59c8e839560 1018 * @param __MODE__ CRYP input data DMA mode.
AnnaBridge 156:ff21514d8981 1019 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
AnnaBridge 156:ff21514d8981 1020 */
AnnaBridge 156:ff21514d8981 1021 #define IS_CRYP_DMAIN(__MODE__) (((__MODE__) == CRYP_DMAIN_DISABLE) || \
AnnaBridge 156:ff21514d8981 1022 ((__MODE__) == CRYP_DMAIN_ENABLE))
AnnaBridge 156:ff21514d8981 1023
AnnaBridge 156:ff21514d8981 1024 /**
AnnaBridge 156:ff21514d8981 1025 * @brief Verify the CRYP output data DMA mode.
AnnaBridge 163:e59c8e839560 1026 * @param __MODE__ CRYP output data DMA mode.
AnnaBridge 156:ff21514d8981 1027 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
AnnaBridge 156:ff21514d8981 1028 */
AnnaBridge 156:ff21514d8981 1029 #define IS_CRYP_DMAOUT(__MODE__) (((__MODE__) == CRYP_DMAOUT_DISABLE) || \
AnnaBridge 156:ff21514d8981 1030 ((__MODE__) == CRYP_DMAOUT_ENABLE))
AnnaBridge 156:ff21514d8981 1031
AnnaBridge 156:ff21514d8981 1032 /**
AnnaBridge 156:ff21514d8981 1033 * @brief Verify the CRYP AES ciphering/deciphering/authentication algorithm phase.
AnnaBridge 163:e59c8e839560 1034 * @param __PHASE__ CRYP AES ciphering/deciphering/authentication algorithm phase.
AnnaBridge 156:ff21514d8981 1035 * @retval SET (__PHASE__ is valid) or RESET (__PHASE__ is invalid)
AnnaBridge 156:ff21514d8981 1036 */
AnnaBridge 156:ff21514d8981 1037 #define IS_CRYP_GCMCMAC_PHASE(__PHASE__) (((__PHASE__) == CRYP_GCM_INIT_PHASE) || \
AnnaBridge 156:ff21514d8981 1038 ((__PHASE__) == CRYP_GCMCMAC_HEADER_PHASE) || \
AnnaBridge 156:ff21514d8981 1039 ((__PHASE__) == CRYP_GCM_PAYLOAD_PHASE) || \
AnnaBridge 156:ff21514d8981 1040 ((__PHASE__) == CRYP_GCMCMAC_FINAL_PHASE))
AnnaBridge 156:ff21514d8981 1041
AnnaBridge 156:ff21514d8981 1042 /**
AnnaBridge 156:ff21514d8981 1043 * @}
AnnaBridge 156:ff21514d8981 1044 */
AnnaBridge 156:ff21514d8981 1045
AnnaBridge 156:ff21514d8981 1046 /* Include CRYP HAL Extended module */
AnnaBridge 156:ff21514d8981 1047 #include "stm32f4xx_hal_cryp_ex.h"
AnnaBridge 156:ff21514d8981 1048
AnnaBridge 156:ff21514d8981 1049 /* Exported functions --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 1050 /** @addtogroup CRYP_Exported_Functions CRYP Exported Functions
AnnaBridge 156:ff21514d8981 1051 * @{
AnnaBridge 156:ff21514d8981 1052 */
AnnaBridge 156:ff21514d8981 1053
AnnaBridge 156:ff21514d8981 1054 /** @addtogroup CRYP_Exported_Functions_Group1 Initialization and deinitialization functions
AnnaBridge 156:ff21514d8981 1055 * @{
AnnaBridge 156:ff21514d8981 1056 */
AnnaBridge 156:ff21514d8981 1057
AnnaBridge 156:ff21514d8981 1058 /* Initialization/de-initialization functions ********************************/
AnnaBridge 156:ff21514d8981 1059 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1060 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1061
AnnaBridge 156:ff21514d8981 1062 /* MSP initialization/de-initialization functions ****************************/
AnnaBridge 156:ff21514d8981 1063 void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1064 void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1065
AnnaBridge 156:ff21514d8981 1066 /**
AnnaBridge 156:ff21514d8981 1067 * @}
AnnaBridge 156:ff21514d8981 1068 */
AnnaBridge 156:ff21514d8981 1069
AnnaBridge 156:ff21514d8981 1070 /** @addtogroup CRYP_Exported_Functions_Group2 AES processing functions
AnnaBridge 156:ff21514d8981 1071 * @{
AnnaBridge 156:ff21514d8981 1072 */
AnnaBridge 156:ff21514d8981 1073
AnnaBridge 156:ff21514d8981 1074 /* AES encryption/decryption processing functions ****************************/
AnnaBridge 156:ff21514d8981 1075
AnnaBridge 156:ff21514d8981 1076 /* AES encryption/decryption using polling ***********************************/
AnnaBridge 156:ff21514d8981 1077 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 1078 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 1079 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 1080 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 1081 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 1082 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 1083
AnnaBridge 156:ff21514d8981 1084 /* AES encryption/decryption using interrupt *********************************/
AnnaBridge 156:ff21514d8981 1085 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 1086 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 1087 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 1088 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 1089 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 1090 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 1091
AnnaBridge 156:ff21514d8981 1092 /* AES encryption/decryption using DMA ***************************************/
AnnaBridge 156:ff21514d8981 1093 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 1094 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 1095 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 1096 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 1097 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
AnnaBridge 156:ff21514d8981 1098 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
AnnaBridge 156:ff21514d8981 1099
AnnaBridge 156:ff21514d8981 1100 /**
AnnaBridge 156:ff21514d8981 1101 * @}
AnnaBridge 156:ff21514d8981 1102 */
AnnaBridge 156:ff21514d8981 1103
AnnaBridge 156:ff21514d8981 1104 /** @addtogroup CRYP_Exported_Functions_Group3 Callback functions
AnnaBridge 156:ff21514d8981 1105 * @{
AnnaBridge 156:ff21514d8981 1106 */
AnnaBridge 156:ff21514d8981 1107 /* CallBack functions ********************************************************/
AnnaBridge 156:ff21514d8981 1108 void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1109 void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1110 void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1111
AnnaBridge 156:ff21514d8981 1112 /**
AnnaBridge 156:ff21514d8981 1113 * @}
AnnaBridge 156:ff21514d8981 1114 */
AnnaBridge 156:ff21514d8981 1115
AnnaBridge 156:ff21514d8981 1116 /** @addtogroup CRYP_Exported_Functions_Group4 CRYP IRQ handler
AnnaBridge 156:ff21514d8981 1117 * @{
AnnaBridge 156:ff21514d8981 1118 */
AnnaBridge 156:ff21514d8981 1119
AnnaBridge 156:ff21514d8981 1120 /* AES interrupt handling function *******************************************/
AnnaBridge 156:ff21514d8981 1121 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1122
AnnaBridge 156:ff21514d8981 1123 /**
AnnaBridge 156:ff21514d8981 1124 * @}
AnnaBridge 156:ff21514d8981 1125 */
AnnaBridge 156:ff21514d8981 1126
AnnaBridge 156:ff21514d8981 1127 /** @addtogroup CRYP_Exported_Functions_Group5 Peripheral State functions
AnnaBridge 156:ff21514d8981 1128 * @{
AnnaBridge 156:ff21514d8981 1129 */
AnnaBridge 156:ff21514d8981 1130
AnnaBridge 156:ff21514d8981 1131 /* Peripheral State functions ************************************************/
AnnaBridge 156:ff21514d8981 1132 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1133 uint32_t HAL_CRYP_GetError(CRYP_HandleTypeDef *hcryp);
AnnaBridge 156:ff21514d8981 1134
AnnaBridge 156:ff21514d8981 1135 /**
AnnaBridge 156:ff21514d8981 1136 * @}
AnnaBridge 156:ff21514d8981 1137 */
AnnaBridge 156:ff21514d8981 1138
AnnaBridge 156:ff21514d8981 1139 /**
AnnaBridge 156:ff21514d8981 1140 * @}
AnnaBridge 156:ff21514d8981 1141 */
AnnaBridge 156:ff21514d8981 1142
AnnaBridge 156:ff21514d8981 1143
AnnaBridge 156:ff21514d8981 1144 #endif /* AES */
AnnaBridge 156:ff21514d8981 1145
AnnaBridge 156:ff21514d8981 1146 /**
AnnaBridge 156:ff21514d8981 1147 * @}
AnnaBridge 156:ff21514d8981 1148 */
AnnaBridge 156:ff21514d8981 1149
AnnaBridge 156:ff21514d8981 1150 /**
AnnaBridge 156:ff21514d8981 1151 * @}
AnnaBridge 156:ff21514d8981 1152 */
AnnaBridge 156:ff21514d8981 1153
AnnaBridge 156:ff21514d8981 1154 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 1155 }
AnnaBridge 156:ff21514d8981 1156 #endif
AnnaBridge 156:ff21514d8981 1157
AnnaBridge 156:ff21514d8981 1158 #endif /* __STM32F4xx_HAL_CRYP_H */
AnnaBridge 156:ff21514d8981 1159
AnnaBridge 156:ff21514d8981 1160 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/