inport from local

Dependents:   Hobbyking_Cheetah_0511

Committer:
NYX
Date:
Mon Mar 16 06:35:48 2020 +0000
Revision:
0:85b3fd62ea1a
reinport to mbed;

Who changed what in which revision?

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