fix LPC812 PWM

Dependents:   IR_LED_Send

Fork of mbed-dev by mbed official

Committer:
nameless129
Date:
Mon May 16 16:50:30 2016 +0000
Revision:
129:2e517c56bcfb
Parent:
0:9b334a45a8ff
PWM Fix:Duty 0%??H???????????????

Who changed what in which revision?

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