Senior Design: Sound Monitor / STM32L4xx_HAL_Driver
Committer:
EricLew
Date:
Mon Nov 02 19:37:23 2015 +0000
Revision:
0:80ee8f3b695e
Errors are with definitions of LCD and QSPI functions. I believe all .h and .c files are  uploaded, but there may need to be certain functions called.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EricLew 0:80ee8f3b695e 1 /**
EricLew 0:80ee8f3b695e 2 ******************************************************************************
EricLew 0:80ee8f3b695e 3 * @file stm32l4xx_hal_cryp.h
EricLew 0:80ee8f3b695e 4 * @author MCD Application Team
EricLew 0:80ee8f3b695e 5 * @version V1.1.0
EricLew 0:80ee8f3b695e 6 * @date 16-September-2015
EricLew 0:80ee8f3b695e 7 * @brief Header file of CRYP HAL module.
EricLew 0:80ee8f3b695e 8 ******************************************************************************
EricLew 0:80ee8f3b695e 9 * @attention
EricLew 0:80ee8f3b695e 10 *
EricLew 0:80ee8f3b695e 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
EricLew 0:80ee8f3b695e 12 *
EricLew 0:80ee8f3b695e 13 * Redistribution and use in source and binary forms, with or without modification,
EricLew 0:80ee8f3b695e 14 * are permitted provided that the following conditions are met:
EricLew 0:80ee8f3b695e 15 * 1. Redistributions of source code must retain the above copyright notice,
EricLew 0:80ee8f3b695e 16 * this list of conditions and the following disclaimer.
EricLew 0:80ee8f3b695e 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
EricLew 0:80ee8f3b695e 18 * this list of conditions and the following disclaimer in the documentation
EricLew 0:80ee8f3b695e 19 * and/or other materials provided with the distribution.
EricLew 0:80ee8f3b695e 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
EricLew 0:80ee8f3b695e 21 * may be used to endorse or promote products derived from this software
EricLew 0:80ee8f3b695e 22 * without specific prior written permission.
EricLew 0:80ee8f3b695e 23 *
EricLew 0:80ee8f3b695e 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
EricLew 0:80ee8f3b695e 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
EricLew 0:80ee8f3b695e 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
EricLew 0:80ee8f3b695e 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
EricLew 0:80ee8f3b695e 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
EricLew 0:80ee8f3b695e 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
EricLew 0:80ee8f3b695e 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
EricLew 0:80ee8f3b695e 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
EricLew 0:80ee8f3b695e 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
EricLew 0:80ee8f3b695e 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
EricLew 0:80ee8f3b695e 34 *
EricLew 0:80ee8f3b695e 35 ******************************************************************************
EricLew 0:80ee8f3b695e 36 */
EricLew 0:80ee8f3b695e 37
EricLew 0:80ee8f3b695e 38 /* Define to prevent recursive inclusion -------------------------------------*/
EricLew 0:80ee8f3b695e 39 #ifndef __STM32L4xx_HAL_CRYP_H
EricLew 0:80ee8f3b695e 40 #define __STM32L4xx_HAL_CRYP_H
EricLew 0:80ee8f3b695e 41
EricLew 0:80ee8f3b695e 42 #ifdef __cplusplus
EricLew 0:80ee8f3b695e 43 extern "C" {
EricLew 0:80ee8f3b695e 44 #endif
EricLew 0:80ee8f3b695e 45
EricLew 0:80ee8f3b695e 46 #if defined(STM32L485xx) || defined(STM32L486xx)
EricLew 0:80ee8f3b695e 47
EricLew 0:80ee8f3b695e 48 /* Includes ------------------------------------------------------------------*/
EricLew 0:80ee8f3b695e 49 #include "stm32l4xx_hal_def.h"
EricLew 0:80ee8f3b695e 50
EricLew 0:80ee8f3b695e 51 /** @addtogroup STM32L4xx_HAL_Driver
EricLew 0:80ee8f3b695e 52 * @{
EricLew 0:80ee8f3b695e 53 */
EricLew 0:80ee8f3b695e 54
EricLew 0:80ee8f3b695e 55 /** @addtogroup CRYP
EricLew 0:80ee8f3b695e 56 * @{
EricLew 0:80ee8f3b695e 57 */
EricLew 0:80ee8f3b695e 58
EricLew 0:80ee8f3b695e 59 /* Exported types ------------------------------------------------------------*/
EricLew 0:80ee8f3b695e 60 /** @defgroup CRYP_Exported_Types CRYP Exported Types
EricLew 0:80ee8f3b695e 61 * @{
EricLew 0:80ee8f3b695e 62 */
EricLew 0:80ee8f3b695e 63
EricLew 0:80ee8f3b695e 64 /**
EricLew 0:80ee8f3b695e 65 * @brief CRYP Configuration Structure definition
EricLew 0:80ee8f3b695e 66 */
EricLew 0:80ee8f3b695e 67 typedef struct
EricLew 0:80ee8f3b695e 68 {
EricLew 0:80ee8f3b695e 69 uint32_t DataType; /*!< 32-bit data, 16-bit data, 8-bit data or 1-bit string.
EricLew 0:80ee8f3b695e 70 This parameter can be a value of @ref CRYP_Data_Type */
EricLew 0:80ee8f3b695e 71
EricLew 0:80ee8f3b695e 72 uint32_t KeySize; /*!< 128 or 256-bit key length.
EricLew 0:80ee8f3b695e 73 This parameter can be a value of @ref CRYP_Key_Size */
EricLew 0:80ee8f3b695e 74
EricLew 0:80ee8f3b695e 75 uint32_t OperatingMode; /*!< AES operating mode.
EricLew 0:80ee8f3b695e 76 This parameter can be a value of @ref CRYP_AES_OperatingMode */
EricLew 0:80ee8f3b695e 77
EricLew 0:80ee8f3b695e 78 uint32_t ChainingMode; /*!< AES chaining mode.
EricLew 0:80ee8f3b695e 79 This parameter can be a value of @ref CRYP_AES_ChainingMode */
EricLew 0:80ee8f3b695e 80
EricLew 0:80ee8f3b695e 81 uint32_t KeyWriteFlag; /*!< Allows to bypass or not key write-up before decryption.
EricLew 0:80ee8f3b695e 82 This parameter can be a value of @ref CRYP_Key_Write */
EricLew 0:80ee8f3b695e 83
EricLew 0:80ee8f3b695e 84 uint32_t GCMCMACPhase; /*!< Indicates the processing phase of the Galois Counter Mode (GCM),
EricLew 0:80ee8f3b695e 85 Galois Message Authentication Code (GMAC) or Cipher Message
EricLew 0:80ee8f3b695e 86 Authentication Code (CMAC) mode.
EricLew 0:80ee8f3b695e 87 This parameter can be a value of @ref CRYP_GCM_CMAC_Phase */
EricLew 0:80ee8f3b695e 88
EricLew 0:80ee8f3b695e 89 uint8_t* pKey; /*!< Encryption/Decryption Key */
EricLew 0:80ee8f3b695e 90
EricLew 0:80ee8f3b695e 91 uint8_t* pInitVect; /*!< Initialization Vector used for CTR, CBC, GCM/GMAC and CMAC modes */
EricLew 0:80ee8f3b695e 92
EricLew 0:80ee8f3b695e 93 uint8_t* Header; /*!< Header used in GCM/GMAC and CMAC modes */
EricLew 0:80ee8f3b695e 94
EricLew 0:80ee8f3b695e 95 uint64_t HeaderSize; /*!< Header size in bytes */
EricLew 0:80ee8f3b695e 96
EricLew 0:80ee8f3b695e 97 }CRYP_InitTypeDef;
EricLew 0:80ee8f3b695e 98
EricLew 0:80ee8f3b695e 99 /**
EricLew 0:80ee8f3b695e 100 * @brief HAL CRYP State structures definition
EricLew 0:80ee8f3b695e 101 */
EricLew 0:80ee8f3b695e 102 typedef enum
EricLew 0:80ee8f3b695e 103 {
EricLew 0:80ee8f3b695e 104 HAL_CRYP_STATE_RESET = 0x00, /*!< CRYP not yet initialized or disabled */
EricLew 0:80ee8f3b695e 105 HAL_CRYP_STATE_READY = 0x01, /*!< CRYP initialized and ready for use */
EricLew 0:80ee8f3b695e 106 HAL_CRYP_STATE_BUSY = 0x02, /*!< CRYP internal processing is ongoing */
EricLew 0:80ee8f3b695e 107 HAL_CRYP_STATE_TIMEOUT = 0x03, /*!< CRYP timeout state */
EricLew 0:80ee8f3b695e 108 HAL_CRYP_STATE_ERROR = 0x04, /*!< CRYP error state */
EricLew 0:80ee8f3b695e 109 HAL_CRYP_STATE_SUSPENDED = 0x05 /*!< CRYP suspended */
EricLew 0:80ee8f3b695e 110 }HAL_CRYP_STATETypeDef;
EricLew 0:80ee8f3b695e 111
EricLew 0:80ee8f3b695e 112 /**
EricLew 0:80ee8f3b695e 113 * @brief HAL CRYP phase structures definition
EricLew 0:80ee8f3b695e 114 */
EricLew 0:80ee8f3b695e 115 typedef enum
EricLew 0:80ee8f3b695e 116 {
EricLew 0:80ee8f3b695e 117 HAL_CRYP_PHASE_READY = 0x01, /*!< CRYP peripheral is ready for initialization. */
EricLew 0:80ee8f3b695e 118 HAL_CRYP_PHASE_PROCESS = 0x02, /*!< CRYP peripheral is in processing phase */
EricLew 0:80ee8f3b695e 119 HAL_CRYP_PHASE_START = 0x03, /*!< CRYP peripheral has been initialized but GCM/GMAC/CMAC
EricLew 0:80ee8f3b695e 120 initialization phase has not started */
EricLew 0:80ee8f3b695e 121 HAL_CRYP_PHASE_INIT_OVER = 0x04, /*!< GCM/GMAC/CMAC init phase has been carried out */
EricLew 0:80ee8f3b695e 122 HAL_CRYP_PHASE_HEADER_OVER = 0x05, /*!< GCM/GMAC/CMAC header phase has been carried out */
EricLew 0:80ee8f3b695e 123 HAL_CRYP_PHASE_PAYLOAD_OVER = 0x06, /*!< GCM/GMAC/CMAC payload phase has been carried out */
EricLew 0:80ee8f3b695e 124 HAL_CRYP_PHASE_FINAL_OVER = 0x07, /*!< GCM/GMAC/CMAC final phase has been carried out */
EricLew 0:80ee8f3b695e 125 HAL_CRYP_PHASE_HEADER_SUSPENDED = 0x08, /*!< GCM/GMAC/CMAC header phase has been suspended */
EricLew 0:80ee8f3b695e 126 HAL_CRYP_PHASE_PAYLOAD_SUSPENDED = 0x09, /*!< GCM/GMAC payload phase has been suspended */
EricLew 0:80ee8f3b695e 127 HAL_CRYP_PHASE_NOT_USED = 0x0a /*!< Phase is irrelevant to the current chaining mode */
EricLew 0:80ee8f3b695e 128 }HAL_PhaseTypeDef;
EricLew 0:80ee8f3b695e 129
EricLew 0:80ee8f3b695e 130 /**
EricLew 0:80ee8f3b695e 131 * @brief HAL CRYP mode suspend definitions
EricLew 0:80ee8f3b695e 132 */
EricLew 0:80ee8f3b695e 133 typedef enum
EricLew 0:80ee8f3b695e 134 {
EricLew 0:80ee8f3b695e 135 HAL_CRYP_SUSPEND_NONE = 0x00, /*!< CRYP peripheral suspension not requested */
EricLew 0:80ee8f3b695e 136 HAL_CRYP_SUSPEND = 0x01 /*!< CRYP peripheral suspension requested */
EricLew 0:80ee8f3b695e 137 }HAL_SuspendTypeDef;
EricLew 0:80ee8f3b695e 138
EricLew 0:80ee8f3b695e 139
EricLew 0:80ee8f3b695e 140 /**
EricLew 0:80ee8f3b695e 141 * @brief HAL CRYP Error Codes definition
EricLew 0:80ee8f3b695e 142 */
EricLew 0:80ee8f3b695e 143 #define HAL_CRYP_ERROR_NONE ((uint32_t)0x00000000) /*!< No error */
EricLew 0:80ee8f3b695e 144 #define HAL_CRYP_WRITE_ERROR ((uint32_t)0x00000001) /*!< Write error */
EricLew 0:80ee8f3b695e 145 #define HAL_CRYP_READ_ERROR ((uint32_t)0x00000002) /*!< Read error */
EricLew 0:80ee8f3b695e 146 #define HAL_CRYP_DMA_ERROR ((uint32_t)0x00000004) /*!< DMA error */
EricLew 0:80ee8f3b695e 147
EricLew 0:80ee8f3b695e 148
EricLew 0:80ee8f3b695e 149 /**
EricLew 0:80ee8f3b695e 150 * @brief CRYP handle Structure definition
EricLew 0:80ee8f3b695e 151 */
EricLew 0:80ee8f3b695e 152 typedef struct
EricLew 0:80ee8f3b695e 153 {
EricLew 0:80ee8f3b695e 154 AES_TypeDef *Instance; /*!< Register base address */
EricLew 0:80ee8f3b695e 155
EricLew 0:80ee8f3b695e 156 CRYP_InitTypeDef Init; /*!< CRYP initialization parameters */
EricLew 0:80ee8f3b695e 157
EricLew 0:80ee8f3b695e 158 uint8_t *pCrypInBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) input buffer */
EricLew 0:80ee8f3b695e 159
EricLew 0:80ee8f3b695e 160 uint8_t *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) output buffer */
EricLew 0:80ee8f3b695e 161
EricLew 0:80ee8f3b695e 162 __IO uint16_t CrypInCount; /*!< Input data size in bytes or, after suspension, the remaining
EricLew 0:80ee8f3b695e 163 number of bytes to process */
EricLew 0:80ee8f3b695e 164
EricLew 0:80ee8f3b695e 165 __IO uint16_t CrypOutCount; /*!< Output data size in bytes */
EricLew 0:80ee8f3b695e 166
EricLew 0:80ee8f3b695e 167 HAL_PhaseTypeDef Phase; /*!< CRYP peripheral processing phase for GCM, GMAC or CMAC modes.
EricLew 0:80ee8f3b695e 168 Indicates the last phase carried out to ease
EricLew 0:80ee8f3b695e 169 phase transitions */
EricLew 0:80ee8f3b695e 170
EricLew 0:80ee8f3b695e 171 DMA_HandleTypeDef *hdmain; /*!< CRYP peripheral Input DMA handle parameters */
EricLew 0:80ee8f3b695e 172
EricLew 0:80ee8f3b695e 173 DMA_HandleTypeDef *hdmaout; /*!< CRYP peripheral Output DMA handle parameters */
EricLew 0:80ee8f3b695e 174
EricLew 0:80ee8f3b695e 175 HAL_LockTypeDef Lock; /*!< CRYP locking object */
EricLew 0:80ee8f3b695e 176
EricLew 0:80ee8f3b695e 177 __IO HAL_CRYP_STATETypeDef State; /*!< CRYP peripheral state */
EricLew 0:80ee8f3b695e 178
EricLew 0:80ee8f3b695e 179 __IO uint32_t ErrorCode; /*!< CRYP peripheral error code */
EricLew 0:80ee8f3b695e 180
EricLew 0:80ee8f3b695e 181 HAL_SuspendTypeDef SuspendRequest; /*!< CRYP peripheral suspension request flag */
EricLew 0:80ee8f3b695e 182 }CRYP_HandleTypeDef;
EricLew 0:80ee8f3b695e 183
EricLew 0:80ee8f3b695e 184 /**
EricLew 0:80ee8f3b695e 185 * @}
EricLew 0:80ee8f3b695e 186 */
EricLew 0:80ee8f3b695e 187
EricLew 0:80ee8f3b695e 188
EricLew 0:80ee8f3b695e 189 /* Exported constants --------------------------------------------------------*/
EricLew 0:80ee8f3b695e 190 /** @defgroup CRYP_Exported_Constants CRYP Exported Constants
EricLew 0:80ee8f3b695e 191 * @{
EricLew 0:80ee8f3b695e 192 */
EricLew 0:80ee8f3b695e 193
EricLew 0:80ee8f3b695e 194 /** @defgroup CRYP_Key_Size Key size selection
EricLew 0:80ee8f3b695e 195 * @{
EricLew 0:80ee8f3b695e 196 */
EricLew 0:80ee8f3b695e 197 #define CRYP_KEYSIZE_128B ((uint32_t)0x00000000) /*!< 128-bit long key */
EricLew 0:80ee8f3b695e 198 #define CRYP_KEYSIZE_256B AES_CR_KEYSIZE /*!< 256-bit long key */
EricLew 0:80ee8f3b695e 199 /**
EricLew 0:80ee8f3b695e 200 * @}
EricLew 0:80ee8f3b695e 201 */
EricLew 0:80ee8f3b695e 202
EricLew 0:80ee8f3b695e 203 /** @defgroup CRYP_Data_Type AES Data Type selection
EricLew 0:80ee8f3b695e 204 * @{
EricLew 0:80ee8f3b695e 205 */
EricLew 0:80ee8f3b695e 206 #define CRYP_DATATYPE_32B ((uint32_t)0x00000000) /*!< 32-bit data type (no swapping) */
EricLew 0:80ee8f3b695e 207 #define CRYP_DATATYPE_16B AES_CR_DATATYPE_0 /*!< 16-bit data type (half-word swapping) */
EricLew 0:80ee8f3b695e 208 #define CRYP_DATATYPE_8B AES_CR_DATATYPE_1 /*!< 8-bit data type (byte swapping) */
EricLew 0:80ee8f3b695e 209 #define CRYP_DATATYPE_1B AES_CR_DATATYPE /*!< 1-bit data type (bit swapping) */
EricLew 0:80ee8f3b695e 210 /**
EricLew 0:80ee8f3b695e 211 * @}
EricLew 0:80ee8f3b695e 212 */
EricLew 0:80ee8f3b695e 213
EricLew 0:80ee8f3b695e 214 /** @defgroup CRYP_AES_State AES Enable state
EricLew 0:80ee8f3b695e 215 * @{
EricLew 0:80ee8f3b695e 216 */
EricLew 0:80ee8f3b695e 217 #define CRYP_AES_DISABLE ((uint32_t)0x00000000) /*!< Disable AES */
EricLew 0:80ee8f3b695e 218 #define CRYP_AES_ENABLE AES_CR_EN /*!< Enable AES */
EricLew 0:80ee8f3b695e 219 /**
EricLew 0:80ee8f3b695e 220 * @}
EricLew 0:80ee8f3b695e 221 */
EricLew 0:80ee8f3b695e 222
EricLew 0:80ee8f3b695e 223 /** @defgroup CRYP_AES_OperatingMode AES operating mode
EricLew 0:80ee8f3b695e 224 * @{
EricLew 0:80ee8f3b695e 225 */
EricLew 0:80ee8f3b695e 226 #define CRYP_ALGOMODE_ENCRYPT ((uint32_t)0x00000000) /*!< Encryption mode */
EricLew 0:80ee8f3b695e 227 #define CRYP_ALGOMODE_KEYDERIVATION AES_CR_MODE_0 /*!< Key derivation mode */
EricLew 0:80ee8f3b695e 228 #define CRYP_ALGOMODE_DECRYPT AES_CR_MODE_1 /*!< Decryption */
EricLew 0:80ee8f3b695e 229 #define CRYP_ALGOMODE_KEYDERIVATION_DECRYPT AES_CR_MODE /*!< Key derivation and decryption */
EricLew 0:80ee8f3b695e 230 #define CRYP_ALGOMODE_TAG_GENERATION ((uint32_t)0x00000000) /*!< GMAC or CMAC authentication tag generation */
EricLew 0:80ee8f3b695e 231 /**
EricLew 0:80ee8f3b695e 232 * @}
EricLew 0:80ee8f3b695e 233 */
EricLew 0:80ee8f3b695e 234
EricLew 0:80ee8f3b695e 235 /** @defgroup CRYP_AES_ChainingMode AES chaining mode
EricLew 0:80ee8f3b695e 236 * @{
EricLew 0:80ee8f3b695e 237 */
EricLew 0:80ee8f3b695e 238 #define CRYP_CHAINMODE_AES_ECB ((uint32_t)0x00000000) /*!< Electronic codebook chaining algorithm */
EricLew 0:80ee8f3b695e 239 #define CRYP_CHAINMODE_AES_CBC AES_CR_CHMOD_0 /*!< Cipher block chaining algorithm */
EricLew 0:80ee8f3b695e 240 #define CRYP_CHAINMODE_AES_CTR AES_CR_CHMOD_1 /*!< Counter mode chaining algorithm */
EricLew 0:80ee8f3b695e 241 #define CRYP_CHAINMODE_AES_GCM_GMAC (AES_CR_CHMOD_0 | AES_CR_CHMOD_1) /*!< Galois counter mode - Galois message authentication code */
EricLew 0:80ee8f3b695e 242 #define CRYP_CHAINMODE_AES_CMAC AES_CR_CHMOD_2 /*!< Cipher message authentication code */
EricLew 0:80ee8f3b695e 243 /**
EricLew 0:80ee8f3b695e 244 * @}
EricLew 0:80ee8f3b695e 245 */
EricLew 0:80ee8f3b695e 246
EricLew 0:80ee8f3b695e 247 /** @defgroup CRYP_Key_Write AES decryption key write-up flag
EricLew 0:80ee8f3b695e 248 * @{
EricLew 0:80ee8f3b695e 249 */
EricLew 0:80ee8f3b695e 250 #define CRYP_KEY_WRITE_ENABLE ((uint32_t)0x00000000) /*!< Enable decryption key writing */
EricLew 0:80ee8f3b695e 251 #define CRYP_KEY_WRITE_DISABLE ((uint32_t)0x00000001) /*!< Disable decryption key writing */
EricLew 0:80ee8f3b695e 252 /**
EricLew 0:80ee8f3b695e 253 * @}
EricLew 0:80ee8f3b695e 254 */
EricLew 0:80ee8f3b695e 255
EricLew 0:80ee8f3b695e 256 /** @defgroup CRYP_DMAIN DMA Input phase management enable state
EricLew 0:80ee8f3b695e 257 * @{
EricLew 0:80ee8f3b695e 258 */
EricLew 0:80ee8f3b695e 259 #define CRYP_DMAIN_DISABLE ((uint32_t)0x00000000) /*!< Disable DMA Input phase management */
EricLew 0:80ee8f3b695e 260 #define CRYP_DMAIN_ENABLE AES_CR_DMAINEN /*!< Enable DMA Input phase management */
EricLew 0:80ee8f3b695e 261 /**
EricLew 0:80ee8f3b695e 262 * @}
EricLew 0:80ee8f3b695e 263 */
EricLew 0:80ee8f3b695e 264
EricLew 0:80ee8f3b695e 265 /** @defgroup CRYP_DMAOUT DMA Output phase management enable state
EricLew 0:80ee8f3b695e 266 * @{
EricLew 0:80ee8f3b695e 267 */
EricLew 0:80ee8f3b695e 268 #define CRYP_DMAOUT_DISABLE ((uint32_t)0x00000000) /*!< Disable DMA Output phase management */
EricLew 0:80ee8f3b695e 269 #define CRYP_DMAOUT_ENABLE AES_CR_DMAOUTEN /*!< Enable DMA Output phase management */
EricLew 0:80ee8f3b695e 270 /**
EricLew 0:80ee8f3b695e 271 * @}
EricLew 0:80ee8f3b695e 272 */
EricLew 0:80ee8f3b695e 273
EricLew 0:80ee8f3b695e 274
EricLew 0:80ee8f3b695e 275 /** @defgroup CRYP_GCM_CMAC_Phase GCM/GMAC and CMAC processing phase selection
EricLew 0:80ee8f3b695e 276 * @{
EricLew 0:80ee8f3b695e 277 */
EricLew 0:80ee8f3b695e 278 #define CRYP_GCM_INIT_PHASE ((uint32_t)0x00000000) /*!< GCM/GMAC init phase */
EricLew 0:80ee8f3b695e 279 #define CRYP_GCMCMAC_HEADER_PHASE AES_CR_GCMPH_0 /*!< GCM/GMAC or CMAC header phase */
EricLew 0:80ee8f3b695e 280 #define CRYP_GCM_PAYLOAD_PHASE AES_CR_GCMPH_1 /*!< GCM payload phaset */
EricLew 0:80ee8f3b695e 281 #define CRYP_GCMCMAC_FINAL_PHASE AES_CR_GCMPH /*!< GCM/GMAC or CMAC final phase */
EricLew 0:80ee8f3b695e 282 /**
EricLew 0:80ee8f3b695e 283 * @}
EricLew 0:80ee8f3b695e 284 */
EricLew 0:80ee8f3b695e 285
EricLew 0:80ee8f3b695e 286 /** @defgroup CRYP_Flags AES status flags
EricLew 0:80ee8f3b695e 287 * @{
EricLew 0:80ee8f3b695e 288 */
EricLew 0:80ee8f3b695e 289
EricLew 0:80ee8f3b695e 290 #define CRYP_FLAG_BUSY AES_SR_BUSY /*!< GCM process suspension forbidden */
EricLew 0:80ee8f3b695e 291 #define CRYP_FLAG_WRERR AES_SR_WRERR /*!< Write Error */
EricLew 0:80ee8f3b695e 292 #define CRYP_FLAG_RDERR AES_SR_RDERR /*!< Read error */
EricLew 0:80ee8f3b695e 293 #define CRYP_FLAG_CCF AES_SR_CCF /*!< Computation completed */
EricLew 0:80ee8f3b695e 294 /**
EricLew 0:80ee8f3b695e 295 * @}
EricLew 0:80ee8f3b695e 296 */
EricLew 0:80ee8f3b695e 297
EricLew 0:80ee8f3b695e 298 /** @defgroup CRYP_Clear_Flags AES clearing flags
EricLew 0:80ee8f3b695e 299 * @{
EricLew 0:80ee8f3b695e 300 */
EricLew 0:80ee8f3b695e 301
EricLew 0:80ee8f3b695e 302 #define CRYP_CCF_CLEAR AES_CR_CCFC /*!< Computation Complete Flag Clear */
EricLew 0:80ee8f3b695e 303 #define CRYP_ERR_CLEAR AES_CR_ERRC /*!< Error Flag Clear */
EricLew 0:80ee8f3b695e 304 /**
EricLew 0:80ee8f3b695e 305 * @}
EricLew 0:80ee8f3b695e 306 */
EricLew 0:80ee8f3b695e 307
EricLew 0:80ee8f3b695e 308 /** @defgroup AES_Interrupts_Enable AES Interrupts Enable bits
EricLew 0:80ee8f3b695e 309 * @{
EricLew 0:80ee8f3b695e 310 */
EricLew 0:80ee8f3b695e 311 #define CRYP_IT_CCFIE AES_CR_CCFIE /*!< Computation Complete interrupt enable */
EricLew 0:80ee8f3b695e 312 #define CRYP_IT_ERRIE AES_CR_ERRIE /*!< Error interrupt enable */
EricLew 0:80ee8f3b695e 313 /**
EricLew 0:80ee8f3b695e 314 * @}
EricLew 0:80ee8f3b695e 315 */
EricLew 0:80ee8f3b695e 316
EricLew 0:80ee8f3b695e 317 /** @defgroup CRYP_Interrupts_Flags AES Interrupts flags
EricLew 0:80ee8f3b695e 318 * @{
EricLew 0:80ee8f3b695e 319 */
EricLew 0:80ee8f3b695e 320 #define CRYP_IT_WRERR AES_SR_WRERR /*!< Write Error */
EricLew 0:80ee8f3b695e 321 #define CRYP_IT_RDERR AES_SR_RDERR /*!< Read Error */
EricLew 0:80ee8f3b695e 322 #define CRYP_IT_CCF AES_SR_CCF /*!< Computation completed */
EricLew 0:80ee8f3b695e 323 /**
EricLew 0:80ee8f3b695e 324 * @}
EricLew 0:80ee8f3b695e 325 */
EricLew 0:80ee8f3b695e 326
EricLew 0:80ee8f3b695e 327 /**
EricLew 0:80ee8f3b695e 328 * @}
EricLew 0:80ee8f3b695e 329 */
EricLew 0:80ee8f3b695e 330
EricLew 0:80ee8f3b695e 331 /* Exported macros -----------------------------------------------------------*/
EricLew 0:80ee8f3b695e 332 /** @defgroup CRYP_Exported_Macros CRYP Exported Macros
EricLew 0:80ee8f3b695e 333 * @{
EricLew 0:80ee8f3b695e 334 */
EricLew 0:80ee8f3b695e 335
EricLew 0:80ee8f3b695e 336 /** @brief Reset CRYP handle state.
EricLew 0:80ee8f3b695e 337 * @param __HANDLE__: specifies the CRYP handle.
EricLew 0:80ee8f3b695e 338 * @retval None
EricLew 0:80ee8f3b695e 339 */
EricLew 0:80ee8f3b695e 340 #define __HAL_CRYP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRYP_STATE_RESET)
EricLew 0:80ee8f3b695e 341
EricLew 0:80ee8f3b695e 342 /**
EricLew 0:80ee8f3b695e 343 * @brief Enable the CRYP AES peripheral.
EricLew 0:80ee8f3b695e 344 * @retval None
EricLew 0:80ee8f3b695e 345 */
EricLew 0:80ee8f3b695e 346 #define __HAL_CRYP_ENABLE() (AES->CR |= AES_CR_EN)
EricLew 0:80ee8f3b695e 347
EricLew 0:80ee8f3b695e 348 /**
EricLew 0:80ee8f3b695e 349 * @brief Disable the CRYP AES peripheral.
EricLew 0:80ee8f3b695e 350 * @retval None
EricLew 0:80ee8f3b695e 351 */
EricLew 0:80ee8f3b695e 352 #define __HAL_CRYP_DISABLE() (AES->CR &= ~AES_CR_EN)
EricLew 0:80ee8f3b695e 353
EricLew 0:80ee8f3b695e 354 /**
EricLew 0:80ee8f3b695e 355 * @brief Set the algorithm operating mode.
EricLew 0:80ee8f3b695e 356 * @param __OPERATING_MODE__: specifies the operating mode
EricLew 0:80ee8f3b695e 357 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 358 * @arg CRYP_ALGOMODE_ENCRYPT: encryption
EricLew 0:80ee8f3b695e 359 * @arg CRYP_ALGOMODE_KEYDERIVATION: key derivation
EricLew 0:80ee8f3b695e 360 * @arg CRYP_ALGOMODE_DECRYPT: decryption
EricLew 0:80ee8f3b695e 361 * @arg CRYP_ALGOMODE_KEYDERIVATION_DECRYPT: key derivation and decryption
EricLew 0:80ee8f3b695e 362 * @retval None
EricLew 0:80ee8f3b695e 363 */
EricLew 0:80ee8f3b695e 364 #define __HAL_CRYP_SET_OPERATINGMODE(__OPERATING_MODE__) MODIFY_REG(AES->CR, AES_CR_MODE, (__OPERATING_MODE__))
EricLew 0:80ee8f3b695e 365
EricLew 0:80ee8f3b695e 366
EricLew 0:80ee8f3b695e 367 /**
EricLew 0:80ee8f3b695e 368 * @brief Set the algorithm chaining mode.
EricLew 0:80ee8f3b695e 369 * @param __CHAINING_MODE__: specifies the chaining mode
EricLew 0:80ee8f3b695e 370 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 371 * @arg CRYP_CHAINMODE_AES_ECB: Electronic CodeBook
EricLew 0:80ee8f3b695e 372 * @arg CRYP_CHAINMODE_AES_CBC: Cipher Block Chaining
EricLew 0:80ee8f3b695e 373 * @arg CRYP_CHAINMODE_AES_CTR: CounTeR mode
EricLew 0:80ee8f3b695e 374 * @arg CRYP_CHAINMODE_AES_GCM_GMAC: Galois Counter Mode or Galois Message Authentication Code
EricLew 0:80ee8f3b695e 375 * @arg CRYP_CHAINMODE_AES_CMAC: Cipher Message Authentication Code
EricLew 0:80ee8f3b695e 376 * @retval None
EricLew 0:80ee8f3b695e 377 */
EricLew 0:80ee8f3b695e 378 #define __HAL_CRYP_SET_CHAININGMODE(__CHAINING_MODE__) MODIFY_REG(AES->CR, AES_CR_CHMOD, (__CHAINING_MODE__))
EricLew 0:80ee8f3b695e 379
EricLew 0:80ee8f3b695e 380
EricLew 0:80ee8f3b695e 381
EricLew 0:80ee8f3b695e 382 /** @brief Check whether the specified CRYP status flag is set or not.
EricLew 0:80ee8f3b695e 383 * @param __FLAG__: specifies the flag to check.
EricLew 0:80ee8f3b695e 384 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 385 * @arg CRYP_FLAG_BUSY: GCM process suspension forbidden
EricLew 0:80ee8f3b695e 386 * @arg CRYP_IT_WRERR: Write Error
EricLew 0:80ee8f3b695e 387 * @arg CRYP_IT_RDERR: Read Error
EricLew 0:80ee8f3b695e 388 * @arg CRYP_IT_CCF: Computation Complete
EricLew 0:80ee8f3b695e 389 * @retval The state of __FLAG__ (TRUE or FALSE).
EricLew 0:80ee8f3b695e 390 */
EricLew 0:80ee8f3b695e 391 #define __HAL_CRYP_GET_FLAG(__FLAG__) ((AES->SR & (__FLAG__)) == (__FLAG__))
EricLew 0:80ee8f3b695e 392
EricLew 0:80ee8f3b695e 393
EricLew 0:80ee8f3b695e 394 /** @brief Clear the CRYP pending status flag.
EricLew 0:80ee8f3b695e 395 * @param __FLAG__: specifies the flag to clear.
EricLew 0:80ee8f3b695e 396 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 397 * @arg CRYP_ERR_CLEAR: Read (RDERR) or Write Error (WRERR) Flag Clear
EricLew 0:80ee8f3b695e 398 * @arg CRYP_CCF_CLEAR: Computation Complete Flag (CCF) Clear
EricLew 0:80ee8f3b695e 399 * @retval None
EricLew 0:80ee8f3b695e 400 */
EricLew 0:80ee8f3b695e 401 #define __HAL_CRYP_CLEAR_FLAG(__FLAG__) SET_BIT(AES->CR, (__FLAG__))
EricLew 0:80ee8f3b695e 402
EricLew 0:80ee8f3b695e 403
EricLew 0:80ee8f3b695e 404
EricLew 0:80ee8f3b695e 405 /** @brief Check whether the specified CRYP interrupt source is enabled or not.
EricLew 0:80ee8f3b695e 406 * @param __INTERRUPT__: CRYP interrupt source to check
EricLew 0:80ee8f3b695e 407 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 408 * @arg CRYP_IT_ERRIE: Error interrupt (used for RDERR and WRERR)
EricLew 0:80ee8f3b695e 409 * @arg CRYP_IT_CCFIE: Computation Complete interrupt
EricLew 0:80ee8f3b695e 410 * @retval State of interruption (TRUE or FALSE).
EricLew 0:80ee8f3b695e 411 */
EricLew 0:80ee8f3b695e 412 #define __HAL_CRYP_GET_IT_SOURCE(__INTERRUPT__) ((AES->CR & (__INTERRUPT__)) == (__INTERRUPT__))
EricLew 0:80ee8f3b695e 413
EricLew 0:80ee8f3b695e 414
EricLew 0:80ee8f3b695e 415 /** @brief Check whether the specified CRYP interrupt is set or not.
EricLew 0:80ee8f3b695e 416 * @param __INTERRUPT__: specifies the interrupt to check.
EricLew 0:80ee8f3b695e 417 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 418 * @arg CRYP_IT_WRERR: Write Error
EricLew 0:80ee8f3b695e 419 * @arg CRYP_IT_RDERR: Read Error
EricLew 0:80ee8f3b695e 420 * @arg CRYP_IT_CCF: Computation Complete
EricLew 0:80ee8f3b695e 421 * @retval The state of __INTERRUPT__ (TRUE or FALSE).
EricLew 0:80ee8f3b695e 422 */
EricLew 0:80ee8f3b695e 423 #define __HAL_CRYP_GET_IT(__INTERRUPT__) ((AES->SR & (__INTERRUPT__)) == (__INTERRUPT__))
EricLew 0:80ee8f3b695e 424
EricLew 0:80ee8f3b695e 425
EricLew 0:80ee8f3b695e 426
EricLew 0:80ee8f3b695e 427 /** @brief Clear the CRYP pending interrupt.
EricLew 0:80ee8f3b695e 428 * @param __INTERRUPT__: specifies the IT to clear.
EricLew 0:80ee8f3b695e 429 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 430 * @arg CRYP_ERR_CLEAR: Read (RDERR) or Write Error (WRERR) Flag Clear
EricLew 0:80ee8f3b695e 431 * @arg CRYP_CCF_CLEAR: Computation Complete Flag (CCF) Clear
EricLew 0:80ee8f3b695e 432 * @retval None
EricLew 0:80ee8f3b695e 433 */
EricLew 0:80ee8f3b695e 434 #define __HAL_CRYP_CLEAR_IT(__INTERRUPT__) SET_BIT(AES->CR, (__INTERRUPT__))
EricLew 0:80ee8f3b695e 435
EricLew 0:80ee8f3b695e 436
EricLew 0:80ee8f3b695e 437 /**
EricLew 0:80ee8f3b695e 438 * @brief Enable the CRYP interrupt.
EricLew 0:80ee8f3b695e 439 * @param __INTERRUPT__: CRYP Interrupt.
EricLew 0:80ee8f3b695e 440 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 441 * @arg CRYP_IT_ERRIE: Error interrupt (used for RDERR and WRERR)
EricLew 0:80ee8f3b695e 442 * @arg CRYP_IT_CCFIE: Computation Complete interrupt
EricLew 0:80ee8f3b695e 443 * @retval None
EricLew 0:80ee8f3b695e 444 */
EricLew 0:80ee8f3b695e 445 #define __HAL_CRYP_ENABLE_IT(__INTERRUPT__) ((AES->CR) |= (__INTERRUPT__))
EricLew 0:80ee8f3b695e 446
EricLew 0:80ee8f3b695e 447
EricLew 0:80ee8f3b695e 448 /**
EricLew 0:80ee8f3b695e 449 * @brief Disable the CRYP interrupt.
EricLew 0:80ee8f3b695e 450 * @param __INTERRUPT__: CRYP Interrupt.
EricLew 0:80ee8f3b695e 451 * This parameter can be one of the following values:
EricLew 0:80ee8f3b695e 452 * @arg CRYP_IT_ERRIE: Error interrupt (used for RDERR and WRERR)
EricLew 0:80ee8f3b695e 453 * @arg CRYP_IT_CCFIE: Computation Complete interrupt
EricLew 0:80ee8f3b695e 454 * @retval None
EricLew 0:80ee8f3b695e 455 */
EricLew 0:80ee8f3b695e 456 #define __HAL_CRYP_DISABLE_IT(__INTERRUPT__) ((AES->CR) &= ~(__INTERRUPT__))
EricLew 0:80ee8f3b695e 457
EricLew 0:80ee8f3b695e 458 /**
EricLew 0:80ee8f3b695e 459 * @}
EricLew 0:80ee8f3b695e 460 */
EricLew 0:80ee8f3b695e 461
EricLew 0:80ee8f3b695e 462 /* Private macros --------------------------------------------------------*/
EricLew 0:80ee8f3b695e 463 /** @addtogroup CRYP_Private_Macros CRYP Private Macros
EricLew 0:80ee8f3b695e 464 * @{
EricLew 0:80ee8f3b695e 465 */
EricLew 0:80ee8f3b695e 466
EricLew 0:80ee8f3b695e 467 /**
EricLew 0:80ee8f3b695e 468 * @brief Verify the key size length.
EricLew 0:80ee8f3b695e 469 * @param __KEYSIZE__: Ciphering/deciphering algorithm key size.
EricLew 0:80ee8f3b695e 470 * @retval SET (__KEYSIZE__ is a valid value) or RESET (__KEYSIZE__ is invalid)
EricLew 0:80ee8f3b695e 471 */
EricLew 0:80ee8f3b695e 472 #define IS_CRYP_KEYSIZE(__KEYSIZE__) (((__KEYSIZE__) == CRYP_KEYSIZE_128B) || \
EricLew 0:80ee8f3b695e 473 ((__KEYSIZE__) == CRYP_KEYSIZE_256B))
EricLew 0:80ee8f3b695e 474
EricLew 0:80ee8f3b695e 475 /**
EricLew 0:80ee8f3b695e 476 * @brief Verify the input data type.
EricLew 0:80ee8f3b695e 477 * @param __DATATYPE__: Ciphering/deciphering algorithm input data type.
EricLew 0:80ee8f3b695e 478 * @retval SET (__DATATYPE__ is valid) or RESET (__DATATYPE__ is invalid)
EricLew 0:80ee8f3b695e 479 */
EricLew 0:80ee8f3b695e 480 #define IS_CRYP_DATATYPE(__DATATYPE__) (((__DATATYPE__) == CRYP_DATATYPE_32B) || \
EricLew 0:80ee8f3b695e 481 ((__DATATYPE__) == CRYP_DATATYPE_16B) || \
EricLew 0:80ee8f3b695e 482 ((__DATATYPE__) == CRYP_DATATYPE_8B) || \
EricLew 0:80ee8f3b695e 483 ((__DATATYPE__) == CRYP_DATATYPE_1B))
EricLew 0:80ee8f3b695e 484
EricLew 0:80ee8f3b695e 485 /**
EricLew 0:80ee8f3b695e 486 * @brief Verify the CRYP AES IP running mode.
EricLew 0:80ee8f3b695e 487 * @param __MODE__: CRYP AES IP running mode.
EricLew 0:80ee8f3b695e 488 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
EricLew 0:80ee8f3b695e 489 */
EricLew 0:80ee8f3b695e 490 #define IS_CRYP_AES(__MODE__) (((__MODE__) == CRYP_AES_DISABLE) || \
EricLew 0:80ee8f3b695e 491 ((__MODE__) == CRYP_AES_ENABLE))
EricLew 0:80ee8f3b695e 492
EricLew 0:80ee8f3b695e 493 /**
EricLew 0:80ee8f3b695e 494 * @brief Verify the selected CRYP algorithm.
EricLew 0:80ee8f3b695e 495 * @param __ALGOMODE__: Selected CRYP algorithm (ciphering, deciphering, key derivation or a combination of the latter).
EricLew 0:80ee8f3b695e 496 * @retval SET (__ALGOMODE__ is valid) or RESET (__ALGOMODE__ is invalid)
EricLew 0:80ee8f3b695e 497 */
EricLew 0:80ee8f3b695e 498 #define IS_CRYP_ALGOMODE(__ALGOMODE__) (((__ALGOMODE__) == CRYP_ALGOMODE_ENCRYPT) || \
EricLew 0:80ee8f3b695e 499 ((__ALGOMODE__) == CRYP_ALGOMODE_KEYDERIVATION) || \
EricLew 0:80ee8f3b695e 500 ((__ALGOMODE__) == CRYP_ALGOMODE_DECRYPT) || \
EricLew 0:80ee8f3b695e 501 ((__ALGOMODE__) == CRYP_ALGOMODE_TAG_GENERATION) || \
EricLew 0:80ee8f3b695e 502 ((__ALGOMODE__) == CRYP_ALGOMODE_KEYDERIVATION_DECRYPT))
EricLew 0:80ee8f3b695e 503
EricLew 0:80ee8f3b695e 504 /**
EricLew 0:80ee8f3b695e 505 * @brief Verify the selected CRYP chaining algorithm.
EricLew 0:80ee8f3b695e 506 * @param __CHAINMODE__: Selected CRYP chaining algorithm.
EricLew 0:80ee8f3b695e 507 * @retval SET (__CHAINMODE__ is valid) or RESET (__CHAINMODE__ is invalid)
EricLew 0:80ee8f3b695e 508 */
EricLew 0:80ee8f3b695e 509 #define IS_CRYP_CHAINMODE(__CHAINMODE__) (((__CHAINMODE__) == CRYP_CHAINMODE_AES_ECB) || \
EricLew 0:80ee8f3b695e 510 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CBC) || \
EricLew 0:80ee8f3b695e 511 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CTR) || \
EricLew 0:80ee8f3b695e 512 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_GCM_GMAC) || \
EricLew 0:80ee8f3b695e 513 ((__CHAINMODE__) == CRYP_CHAINMODE_AES_CMAC))
EricLew 0:80ee8f3b695e 514
EricLew 0:80ee8f3b695e 515 /**
EricLew 0:80ee8f3b695e 516 * @brief Verify the deciphering key write option.
EricLew 0:80ee8f3b695e 517 * @param __WRITE__: deciphering key write option.
EricLew 0:80ee8f3b695e 518 * @retval SET (__WRITE__ is valid) or RESET (__WRITE__ is invalid)
EricLew 0:80ee8f3b695e 519 */
EricLew 0:80ee8f3b695e 520 #define IS_CRYP_WRITE(__WRITE__) (((__WRITE__) == CRYP_KEY_WRITE_ENABLE) || \
EricLew 0:80ee8f3b695e 521 ((__WRITE__) == CRYP_KEY_WRITE_DISABLE))
EricLew 0:80ee8f3b695e 522
EricLew 0:80ee8f3b695e 523 /**
EricLew 0:80ee8f3b695e 524 * @brief Verify the CRYP input data DMA mode.
EricLew 0:80ee8f3b695e 525 * @param __MODE__: CRYP input data DMA mode.
EricLew 0:80ee8f3b695e 526 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
EricLew 0:80ee8f3b695e 527 */
EricLew 0:80ee8f3b695e 528 #define IS_CRYP_DMAIN(__MODE__) (((__MODE__) == CRYP_DMAIN_DISABLE) || \
EricLew 0:80ee8f3b695e 529 ((__MODE__) == CRYP_DMAIN_ENABLE))
EricLew 0:80ee8f3b695e 530
EricLew 0:80ee8f3b695e 531 /**
EricLew 0:80ee8f3b695e 532 * @brief Verify the CRYP output data DMA mode.
EricLew 0:80ee8f3b695e 533 * @param __MODE__: CRYP output data DMA mode.
EricLew 0:80ee8f3b695e 534 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
EricLew 0:80ee8f3b695e 535 */
EricLew 0:80ee8f3b695e 536 #define IS_CRYP_DMAOUT(__MODE__) (((__MODE__) == CRYP_DMAOUT_DISABLE) || \
EricLew 0:80ee8f3b695e 537 ((__MODE__) == CRYP_DMAOUT_ENABLE))
EricLew 0:80ee8f3b695e 538
EricLew 0:80ee8f3b695e 539 /**
EricLew 0:80ee8f3b695e 540 * @brief Verify the CRYP AES ciphering/deciphering/authentication algorithm phase.
EricLew 0:80ee8f3b695e 541 * @param __PHASE__: CRYP AES ciphering/deciphering/authentication algorithm phase.
EricLew 0:80ee8f3b695e 542 * @retval SET (__PHASE__ is valid) or RESET (__PHASE__ is invalid)
EricLew 0:80ee8f3b695e 543 */
EricLew 0:80ee8f3b695e 544 #define IS_CRYP_GCMCMAC_PHASE(__PHASE__) (((__PHASE__) == CRYP_GCM_INIT_PHASE) || \
EricLew 0:80ee8f3b695e 545 ((__PHASE__) == CRYP_GCMCMAC_HEADER_PHASE) || \
EricLew 0:80ee8f3b695e 546 ((__PHASE__) == CRYP_GCM_PAYLOAD_PHASE) || \
EricLew 0:80ee8f3b695e 547 ((__PHASE__) == CRYP_GCMCMAC_FINAL_PHASE))
EricLew 0:80ee8f3b695e 548
EricLew 0:80ee8f3b695e 549 /**
EricLew 0:80ee8f3b695e 550 * @}
EricLew 0:80ee8f3b695e 551 */
EricLew 0:80ee8f3b695e 552
EricLew 0:80ee8f3b695e 553 /* Include CRYP HAL Extended module */
EricLew 0:80ee8f3b695e 554 #include "stm32l4xx_hal_cryp_ex.h"
EricLew 0:80ee8f3b695e 555
EricLew 0:80ee8f3b695e 556 /* Exported functions --------------------------------------------------------*/
EricLew 0:80ee8f3b695e 557 /** @addtogroup CRYP_Exported_Functions CRYP Exported Functions
EricLew 0:80ee8f3b695e 558 * @{
EricLew 0:80ee8f3b695e 559 */
EricLew 0:80ee8f3b695e 560
EricLew 0:80ee8f3b695e 561 /** @addtogroup CRYP_Group1 Initialization and deinitialization functions
EricLew 0:80ee8f3b695e 562 * @{
EricLew 0:80ee8f3b695e 563 */
EricLew 0:80ee8f3b695e 564
EricLew 0:80ee8f3b695e 565 /* Initialization/de-initialization functions ********************************/
EricLew 0:80ee8f3b695e 566 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 567 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 568
EricLew 0:80ee8f3b695e 569 /* MSP initialization/de-initialization functions ****************************/
EricLew 0:80ee8f3b695e 570 void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 571 void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 572
EricLew 0:80ee8f3b695e 573 /**
EricLew 0:80ee8f3b695e 574 * @}
EricLew 0:80ee8f3b695e 575 */
EricLew 0:80ee8f3b695e 576
EricLew 0:80ee8f3b695e 577 /** @addtogroup CRYP_Group2 AES processing functions
EricLew 0:80ee8f3b695e 578 * @{
EricLew 0:80ee8f3b695e 579 */
EricLew 0:80ee8f3b695e 580
EricLew 0:80ee8f3b695e 581 /* AES encryption/decryption processing functions ****************************/
EricLew 0:80ee8f3b695e 582
EricLew 0:80ee8f3b695e 583 /* AES encryption/decryption using polling ***********************************/
EricLew 0:80ee8f3b695e 584 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
EricLew 0:80ee8f3b695e 585 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
EricLew 0:80ee8f3b695e 586 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
EricLew 0:80ee8f3b695e 587 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
EricLew 0:80ee8f3b695e 588 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout);
EricLew 0:80ee8f3b695e 589 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout);
EricLew 0:80ee8f3b695e 590
EricLew 0:80ee8f3b695e 591 /* AES encryption/decryption using interrupt *********************************/
EricLew 0:80ee8f3b695e 592 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
EricLew 0:80ee8f3b695e 593 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
EricLew 0:80ee8f3b695e 594 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
EricLew 0:80ee8f3b695e 595 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
EricLew 0:80ee8f3b695e 596 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
EricLew 0:80ee8f3b695e 597 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
EricLew 0:80ee8f3b695e 598
EricLew 0:80ee8f3b695e 599 /* AES encryption/decryption using DMA ***************************************/
EricLew 0:80ee8f3b695e 600 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
EricLew 0:80ee8f3b695e 601 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
EricLew 0:80ee8f3b695e 602 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
EricLew 0:80ee8f3b695e 603 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
EricLew 0:80ee8f3b695e 604 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData);
EricLew 0:80ee8f3b695e 605 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData);
EricLew 0:80ee8f3b695e 606
EricLew 0:80ee8f3b695e 607 /**
EricLew 0:80ee8f3b695e 608 * @}
EricLew 0:80ee8f3b695e 609 */
EricLew 0:80ee8f3b695e 610
EricLew 0:80ee8f3b695e 611 /** @addtogroup CRYP_Group3 Callback functions
EricLew 0:80ee8f3b695e 612 * @{
EricLew 0:80ee8f3b695e 613 */
EricLew 0:80ee8f3b695e 614 /* CallBack functions ********************************************************/
EricLew 0:80ee8f3b695e 615 void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 616 void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 617 void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 618
EricLew 0:80ee8f3b695e 619 /**
EricLew 0:80ee8f3b695e 620 * @}
EricLew 0:80ee8f3b695e 621 */
EricLew 0:80ee8f3b695e 622
EricLew 0:80ee8f3b695e 623 /** @addtogroup CRYP_Group4 CRYP IRQ handler
EricLew 0:80ee8f3b695e 624 * @{
EricLew 0:80ee8f3b695e 625 */
EricLew 0:80ee8f3b695e 626
EricLew 0:80ee8f3b695e 627 /* AES interrupt handling function *******************************************/
EricLew 0:80ee8f3b695e 628 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 629
EricLew 0:80ee8f3b695e 630 /**
EricLew 0:80ee8f3b695e 631 * @}
EricLew 0:80ee8f3b695e 632 */
EricLew 0:80ee8f3b695e 633
EricLew 0:80ee8f3b695e 634 /** @addtogroup CRYP_Group5 Peripheral State functions
EricLew 0:80ee8f3b695e 635 * @{
EricLew 0:80ee8f3b695e 636 */
EricLew 0:80ee8f3b695e 637
EricLew 0:80ee8f3b695e 638 /* Peripheral State functions ************************************************/
EricLew 0:80ee8f3b695e 639 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 640 uint32_t HAL_CRYP_GetError(CRYP_HandleTypeDef *hcryp);
EricLew 0:80ee8f3b695e 641
EricLew 0:80ee8f3b695e 642 /**
EricLew 0:80ee8f3b695e 643 * @}
EricLew 0:80ee8f3b695e 644 */
EricLew 0:80ee8f3b695e 645
EricLew 0:80ee8f3b695e 646 /**
EricLew 0:80ee8f3b695e 647 * @}
EricLew 0:80ee8f3b695e 648 */
EricLew 0:80ee8f3b695e 649
EricLew 0:80ee8f3b695e 650 /**
EricLew 0:80ee8f3b695e 651 * @}
EricLew 0:80ee8f3b695e 652 */
EricLew 0:80ee8f3b695e 653
EricLew 0:80ee8f3b695e 654 /**
EricLew 0:80ee8f3b695e 655 * @}
EricLew 0:80ee8f3b695e 656 */
EricLew 0:80ee8f3b695e 657
EricLew 0:80ee8f3b695e 658 #endif /* defined(STM32L485xx) || defined(STM32L486xx) */
EricLew 0:80ee8f3b695e 659
EricLew 0:80ee8f3b695e 660 #ifdef __cplusplus
EricLew 0:80ee8f3b695e 661 }
EricLew 0:80ee8f3b695e 662 #endif
EricLew 0:80ee8f3b695e 663
EricLew 0:80ee8f3b695e 664 #endif /* __STM32L4xx_HAL_CRYP_H */
EricLew 0:80ee8f3b695e 665
EricLew 0:80ee8f3b695e 666 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
EricLew 0:80ee8f3b695e 667