mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

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

Committer:
mbed_official
Date:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 610:813dcc80987e 1 /**
mbed_official 610:813dcc80987e 2 ******************************************************************************
mbed_official 610:813dcc80987e 3 * @file stm32l4xx_hal_cryp.c
mbed_official 610:813dcc80987e 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.0
mbed_official 610:813dcc80987e 6 * @date 26-June-2015
mbed_official 610:813dcc80987e 7 * @brief CRYP HAL module driver.
mbed_official 610:813dcc80987e 8 * This file provides firmware functions to manage the following
mbed_official 610:813dcc80987e 9 * functionalities of the Cryptography (CRYP) peripheral:
mbed_official 610:813dcc80987e 10 * + Initialization and de-initialization functions
mbed_official 610:813dcc80987e 11 * + Processing functions using polling mode
mbed_official 610:813dcc80987e 12 * + Processing functions using interrupt mode
mbed_official 610:813dcc80987e 13 * + Processing functions using DMA mode
mbed_official 610:813dcc80987e 14 * + Peripheral State functions
mbed_official 610:813dcc80987e 15 *
mbed_official 610:813dcc80987e 16 @verbatim
mbed_official 610:813dcc80987e 17 ==============================================================================
mbed_official 610:813dcc80987e 18 ##### How to use this driver #####
mbed_official 610:813dcc80987e 19 ==============================================================================
mbed_official 610:813dcc80987e 20 [..]
mbed_official 610:813dcc80987e 21 The CRYP HAL driver can be used as follows:
mbed_official 610:813dcc80987e 22
mbed_official 610:813dcc80987e 23 (#)Initialize the CRYP low level resources by implementing the HAL_CRYP_MspInit():
mbed_official 610:813dcc80987e 24 (++) Enable the CRYP interface clock using __HAL_RCC_AES_CLK_ENABLE()
mbed_official 610:813dcc80987e 25 (++) In case of using interrupts (e.g. HAL_CRYP_AES_IT())
mbed_official 610:813dcc80987e 26 (+++) Configure the CRYP interrupt priority using HAL_NVIC_SetPriority()
mbed_official 610:813dcc80987e 27 (+++) Enable the AES IRQ handler using HAL_NVIC_EnableIRQ()
mbed_official 610:813dcc80987e 28 (+++) In AES IRQ handler, call HAL_CRYP_IRQHandler()
mbed_official 610:813dcc80987e 29 (++) In case of using DMA to control data transfer (e.g. HAL_CRYPEx_AES_DMA())
mbed_official 610:813dcc80987e 30 (+++) Enable the DMA2 interface clock using
mbed_official 610:813dcc80987e 31 __HAL_RCC_DMA2_CLK_ENABLE()
mbed_official 610:813dcc80987e 32 (+++) Configure and enable two DMA channels one for managing data transfer from
mbed_official 610:813dcc80987e 33 memory to peripheral (input channel) and another channel for managing data
mbed_official 610:813dcc80987e 34 transfer from peripheral to memory (output channel)
mbed_official 610:813dcc80987e 35 (+++) Associate the initialized DMA handle to the CRYP DMA handle
mbed_official 610:813dcc80987e 36 using __HAL_LINKDMA()
mbed_official 610:813dcc80987e 37 (+++) Configure the priority and enable the NVIC for the transfer complete
mbed_official 610:813dcc80987e 38 interrupt on the two DMA channels. The output channel should have higher
mbed_official 610:813dcc80987e 39 priority than the input channel.
mbed_official 610:813dcc80987e 40 Resort to HAL_NVIC_SetPriority() and HAL_NVIC_EnableIRQ()
mbed_official 610:813dcc80987e 41
mbed_official 610:813dcc80987e 42 (#)Initialize the CRYP HAL using HAL_CRYP_Init(). This function configures:
mbed_official 610:813dcc80987e 43 (++) The data type: 1-bit, 8-bit, 16-bit and 32-bit
mbed_official 610:813dcc80987e 44 (++) The AES operating mode (encryption, key derivation and/or decryption)
mbed_official 610:813dcc80987e 45 (++) The AES chaining mode (ECB, CBC, CTR, GCM, GMAC, CMAC)
mbed_official 610:813dcc80987e 46 (++) The encryption/decryption key if so required
mbed_official 610:813dcc80987e 47 (++) The initialization vector or nonce if applicable (not used in ECB mode).
mbed_official 610:813dcc80987e 48
mbed_official 610:813dcc80987e 49 (#)Three processing (encryption/decryption) functions are available:
mbed_official 610:813dcc80987e 50 (++) Polling mode: encryption and decryption APIs are blocking functions
mbed_official 610:813dcc80987e 51 i.e. they process the data and wait till the processing is finished
mbed_official 610:813dcc80987e 52 (++) Interrupt mode: encryption and decryption APIs are not blocking functions
mbed_official 610:813dcc80987e 53 i.e. they process the data under interrupt
mbed_official 610:813dcc80987e 54 (++) DMA mode: encryption and decryption APIs are not blocking functions
mbed_official 610:813dcc80987e 55 i.e. the data transfer is ensured by DMA
mbed_official 610:813dcc80987e 56
mbed_official 610:813dcc80987e 57 (#)Call HAL_CRYP_DeInit() to deinitialize the CRYP peripheral.
mbed_official 610:813dcc80987e 58
mbed_official 610:813dcc80987e 59 @endverbatim
mbed_official 610:813dcc80987e 60 ******************************************************************************
mbed_official 610:813dcc80987e 61 * @attention
mbed_official 610:813dcc80987e 62 *
mbed_official 610:813dcc80987e 63 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 610:813dcc80987e 64 *
mbed_official 610:813dcc80987e 65 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 610:813dcc80987e 66 * are permitted provided that the following conditions are met:
mbed_official 610:813dcc80987e 67 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 610:813dcc80987e 68 * this list of conditions and the following disclaimer.
mbed_official 610:813dcc80987e 69 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 610:813dcc80987e 70 * this list of conditions and the following disclaimer in the documentation
mbed_official 610:813dcc80987e 71 * and/or other materials provided with the distribution.
mbed_official 610:813dcc80987e 72 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 610:813dcc80987e 73 * may be used to endorse or promote products derived from this software
mbed_official 610:813dcc80987e 74 * without specific prior written permission.
mbed_official 610:813dcc80987e 75 *
mbed_official 610:813dcc80987e 76 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 610:813dcc80987e 77 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 610:813dcc80987e 78 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 610:813dcc80987e 79 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 610:813dcc80987e 80 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 610:813dcc80987e 81 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 610:813dcc80987e 82 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 610:813dcc80987e 83 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 610:813dcc80987e 84 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 610:813dcc80987e 85 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 610:813dcc80987e 86 *
mbed_official 610:813dcc80987e 87 ******************************************************************************
mbed_official 610:813dcc80987e 88 */
mbed_official 610:813dcc80987e 89
mbed_official 610:813dcc80987e 90 /* Includes ------------------------------------------------------------------*/
mbed_official 610:813dcc80987e 91 #include "stm32l4xx_hal.h"
mbed_official 610:813dcc80987e 92
mbed_official 610:813dcc80987e 93 #ifdef HAL_CRYP_MODULE_ENABLED
mbed_official 610:813dcc80987e 94
mbed_official 610:813dcc80987e 95 #if defined(STM32L485xx) || defined(STM32L486xx)
mbed_official 610:813dcc80987e 96
mbed_official 610:813dcc80987e 97 /** @addtogroup STM32L4xx_HAL_Driver
mbed_official 610:813dcc80987e 98 * @{
mbed_official 610:813dcc80987e 99 */
mbed_official 610:813dcc80987e 100
mbed_official 610:813dcc80987e 101 /** @defgroup CRYP CRYP
mbed_official 610:813dcc80987e 102 * @brief CRYP HAL module driver.
mbed_official 610:813dcc80987e 103 * @{
mbed_official 610:813dcc80987e 104 */
mbed_official 610:813dcc80987e 105
mbed_official 610:813dcc80987e 106
mbed_official 610:813dcc80987e 107
mbed_official 610:813dcc80987e 108 /* Private typedef -----------------------------------------------------------*/
mbed_official 610:813dcc80987e 109 /* Private define ------------------------------------------------------------*/
mbed_official 610:813dcc80987e 110 /* Private macro -------------------------------------------------------------*/
mbed_official 610:813dcc80987e 111 /* Private variables ---------------------------------------------------------*/
mbed_official 610:813dcc80987e 112 /* Private functions --------------------------------------------------------*/
mbed_official 610:813dcc80987e 113
mbed_official 610:813dcc80987e 114 /** @defgroup CRYP_Private_Functions CRYP Private Functions
mbed_official 610:813dcc80987e 115 * @{
mbed_official 610:813dcc80987e 116 */
mbed_official 610:813dcc80987e 117
mbed_official 610:813dcc80987e 118 static HAL_StatusTypeDef CRYP_SetInitVector(CRYP_HandleTypeDef *hcryp);
mbed_official 610:813dcc80987e 119 static HAL_StatusTypeDef CRYP_SetKey(CRYP_HandleTypeDef *hcryp);
mbed_official 610:813dcc80987e 120 static HAL_StatusTypeDef CRYP_AES_IT(CRYP_HandleTypeDef *hcryp);
mbed_official 610:813dcc80987e 121
mbed_official 610:813dcc80987e 122 /**
mbed_official 610:813dcc80987e 123 * @}
mbed_official 610:813dcc80987e 124 */
mbed_official 610:813dcc80987e 125
mbed_official 610:813dcc80987e 126 /* Exported functions ---------------------------------------------------------*/
mbed_official 610:813dcc80987e 127
mbed_official 610:813dcc80987e 128 /** @defgroup CRYP_Exported_Functions CRYP Exported Functions
mbed_official 610:813dcc80987e 129 * @{
mbed_official 610:813dcc80987e 130 */
mbed_official 610:813dcc80987e 131
mbed_official 610:813dcc80987e 132 /** @defgroup CRYP_Group1 Initialization and deinitialization functions
mbed_official 610:813dcc80987e 133 * @brief Initialization and Configuration functions.
mbed_official 610:813dcc80987e 134 *
mbed_official 610:813dcc80987e 135 @verbatim
mbed_official 610:813dcc80987e 136 ==============================================================================
mbed_official 610:813dcc80987e 137 ##### Initialization and deinitialization functions #####
mbed_official 610:813dcc80987e 138 ==============================================================================
mbed_official 610:813dcc80987e 139 [..] This section provides functions allowing to:
mbed_official 610:813dcc80987e 140 (+) Initialize the CRYP according to the specified parameters
mbed_official 610:813dcc80987e 141 in the CRYP_InitTypeDef and creates the associated handle
mbed_official 610:813dcc80987e 142 (+) DeInitialize the CRYP peripheral
mbed_official 610:813dcc80987e 143 (+) Initialize the CRYP MSP (MCU Specific Package)
mbed_official 610:813dcc80987e 144 (+) DeInitialize the CRC MSP
mbed_official 610:813dcc80987e 145
mbed_official 610:813dcc80987e 146 @endverbatim
mbed_official 610:813dcc80987e 147 * @{
mbed_official 610:813dcc80987e 148 */
mbed_official 610:813dcc80987e 149
mbed_official 610:813dcc80987e 150 /**
mbed_official 610:813dcc80987e 151 * @brief Initialize the CRYP according to the specified
mbed_official 610:813dcc80987e 152 * parameters in the CRYP_InitTypeDef and initialize the associated handle.
mbed_official 610:813dcc80987e 153 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 154 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 155 * @retval HAL status
mbed_official 610:813dcc80987e 156 */
mbed_official 610:813dcc80987e 157 HAL_StatusTypeDef HAL_CRYP_Init(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 158 {
mbed_official 610:813dcc80987e 159 /* Check the CRYP handle allocation */
mbed_official 610:813dcc80987e 160 if(hcryp == NULL)
mbed_official 610:813dcc80987e 161 {
mbed_official 610:813dcc80987e 162 return HAL_ERROR;
mbed_official 610:813dcc80987e 163 }
mbed_official 610:813dcc80987e 164
mbed_official 610:813dcc80987e 165 /* Check the instance */
mbed_official 610:813dcc80987e 166 assert_param(IS_AES_ALL_INSTANCE(hcryp->Instance));
mbed_official 610:813dcc80987e 167
mbed_official 610:813dcc80987e 168 /* Check the parameters */
mbed_official 610:813dcc80987e 169 assert_param(IS_CRYP_KEYSIZE(hcryp->Init.KeySize));
mbed_official 610:813dcc80987e 170 assert_param(IS_CRYP_DATATYPE(hcryp->Init.DataType));
mbed_official 610:813dcc80987e 171 assert_param(IS_CRYP_ALGOMODE(hcryp->Init.OperatingMode));
mbed_official 610:813dcc80987e 172 /* ChainingMode parameter is irrelevant when mode is set to Key derivation */
mbed_official 610:813dcc80987e 173 if (hcryp->Init.OperatingMode != CRYP_ALGOMODE_KEYDERIVATION)
mbed_official 610:813dcc80987e 174 {
mbed_official 610:813dcc80987e 175 assert_param(IS_CRYP_CHAINMODE(hcryp->Init.ChainingMode));
mbed_official 610:813dcc80987e 176 }
mbed_official 610:813dcc80987e 177 assert_param(IS_CRYP_WRITE(hcryp->Init.KeyWriteFlag));
mbed_official 610:813dcc80987e 178
mbed_official 610:813dcc80987e 179 /*========================================================*/
mbed_official 610:813dcc80987e 180 /* Check the proper operating/chaining modes combinations */
mbed_official 610:813dcc80987e 181 /*========================================================*/
mbed_official 610:813dcc80987e 182 /* Check the proper chaining when the operating mode is key derivation and decryption */
mbed_official 610:813dcc80987e 183 if ((hcryp->Init.OperatingMode == CRYP_ALGOMODE_KEYDERIVATION_DECRYPT) &&\
mbed_official 610:813dcc80987e 184 ((hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_CTR) \
mbed_official 610:813dcc80987e 185 || (hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC) \
mbed_official 610:813dcc80987e 186 || (hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)))
mbed_official 610:813dcc80987e 187 {
mbed_official 610:813dcc80987e 188 return HAL_ERROR;
mbed_official 610:813dcc80987e 189 }
mbed_official 610:813dcc80987e 190 /* Check that key derivation is not set in CMAC mode */
mbed_official 610:813dcc80987e 191 if ((hcryp->Init.OperatingMode == CRYP_ALGOMODE_KEYDERIVATION)
mbed_official 610:813dcc80987e 192 && (hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC))
mbed_official 610:813dcc80987e 193 {
mbed_official 610:813dcc80987e 194 return HAL_ERROR;
mbed_official 610:813dcc80987e 195 }
mbed_official 610:813dcc80987e 196
mbed_official 610:813dcc80987e 197
mbed_official 610:813dcc80987e 198 /*================*/
mbed_official 610:813dcc80987e 199 /* Initialization */
mbed_official 610:813dcc80987e 200 /*================*/
mbed_official 610:813dcc80987e 201 /* Initialization start */
mbed_official 610:813dcc80987e 202 if(hcryp->State == HAL_CRYP_STATE_RESET)
mbed_official 610:813dcc80987e 203 {
mbed_official 610:813dcc80987e 204 /* Allocate lock resource and initialize it */
mbed_official 610:813dcc80987e 205 hcryp->Lock = HAL_UNLOCKED;
mbed_official 610:813dcc80987e 206
mbed_official 610:813dcc80987e 207 /* Init the low level hardware */
mbed_official 610:813dcc80987e 208 HAL_CRYP_MspInit(hcryp);
mbed_official 610:813dcc80987e 209 }
mbed_official 610:813dcc80987e 210
mbed_official 610:813dcc80987e 211 /* Change the CRYP state */
mbed_official 610:813dcc80987e 212 hcryp->State = HAL_CRYP_STATE_BUSY;
mbed_official 610:813dcc80987e 213
mbed_official 610:813dcc80987e 214 /* Disable the Peripheral */
mbed_official 610:813dcc80987e 215 __HAL_CRYP_DISABLE();
mbed_official 610:813dcc80987e 216
mbed_official 610:813dcc80987e 217 /*=============================================================*/
mbed_official 610:813dcc80987e 218 /* AES initialization common to all operating modes */
mbed_official 610:813dcc80987e 219 /*=============================================================*/
mbed_official 610:813dcc80987e 220 /* Set the Key size selection */
mbed_official 610:813dcc80987e 221 MODIFY_REG(hcryp->Instance->CR, AES_CR_KEYSIZE, hcryp->Init.KeySize);
mbed_official 610:813dcc80987e 222
mbed_official 610:813dcc80987e 223 /* Set the default CRYP phase when this parameter is not used.
mbed_official 610:813dcc80987e 224 Phase is updated below in case of GCM/GMAC/CMAC setting. */
mbed_official 610:813dcc80987e 225 hcryp->Phase = HAL_CRYP_PHASE_NOT_USED;
mbed_official 610:813dcc80987e 226
mbed_official 610:813dcc80987e 227
mbed_official 610:813dcc80987e 228
mbed_official 610:813dcc80987e 229 /*=============================================================*/
mbed_official 610:813dcc80987e 230 /* Carry on the initialization based on the AES operating mode */
mbed_official 610:813dcc80987e 231 /*=============================================================*/
mbed_official 610:813dcc80987e 232 /* Key derivation */
mbed_official 610:813dcc80987e 233 if (hcryp->Init.OperatingMode == CRYP_ALGOMODE_KEYDERIVATION)
mbed_official 610:813dcc80987e 234 {
mbed_official 610:813dcc80987e 235 MODIFY_REG(hcryp->Instance->CR, AES_CR_MODE, CRYP_ALGOMODE_KEYDERIVATION);
mbed_official 610:813dcc80987e 236
mbed_official 610:813dcc80987e 237 /* Configure the Key registers */
mbed_official 610:813dcc80987e 238 if (CRYP_SetKey(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 239 {
mbed_official 610:813dcc80987e 240 return HAL_ERROR;
mbed_official 610:813dcc80987e 241 }
mbed_official 610:813dcc80987e 242 }
mbed_official 610:813dcc80987e 243 else
mbed_official 610:813dcc80987e 244 /* Encryption / Decryption (with or without key derivation) / authentication */
mbed_official 610:813dcc80987e 245 {
mbed_official 610:813dcc80987e 246 /* Set data type, operating and chaining modes.
mbed_official 610:813dcc80987e 247 In case of GCM or GMAC, data type is forced to 0b00 */
mbed_official 610:813dcc80987e 248 if (hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
mbed_official 610:813dcc80987e 249 {
mbed_official 610:813dcc80987e 250 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE|AES_CR_MODE|AES_CR_CHMOD, hcryp->Init.OperatingMode|hcryp->Init.ChainingMode);
mbed_official 610:813dcc80987e 251 }
mbed_official 610:813dcc80987e 252 else
mbed_official 610:813dcc80987e 253 {
mbed_official 610:813dcc80987e 254 MODIFY_REG(hcryp->Instance->CR, AES_CR_DATATYPE|AES_CR_MODE|AES_CR_CHMOD, hcryp->Init.DataType|hcryp->Init.OperatingMode|hcryp->Init.ChainingMode);
mbed_official 610:813dcc80987e 255 }
mbed_official 610:813dcc80987e 256
mbed_official 610:813dcc80987e 257
mbed_official 610:813dcc80987e 258 /* Specify the encryption/decryption phase in case of Galois counter mode (GCM),
mbed_official 610:813dcc80987e 259 Galois message authentication code (GMAC) or cipher message authentication code (CMAC) */
mbed_official 610:813dcc80987e 260 if ((hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
mbed_official 610:813dcc80987e 261 || (hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC))
mbed_official 610:813dcc80987e 262 {
mbed_official 610:813dcc80987e 263 MODIFY_REG(hcryp->Instance->CR, AES_CR_GCMPH, hcryp->Init.GCMCMACPhase);
mbed_official 610:813dcc80987e 264 hcryp->Phase = HAL_CRYP_PHASE_START;
mbed_official 610:813dcc80987e 265 }
mbed_official 610:813dcc80987e 266
mbed_official 610:813dcc80987e 267
mbed_official 610:813dcc80987e 268 /* Configure the Key registers if no need to bypass this step */
mbed_official 610:813dcc80987e 269 if (hcryp->Init.KeyWriteFlag == CRYP_KEY_WRITE_ENABLE)
mbed_official 610:813dcc80987e 270 {
mbed_official 610:813dcc80987e 271 if (CRYP_SetKey(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 272 {
mbed_official 610:813dcc80987e 273 return HAL_ERROR;
mbed_official 610:813dcc80987e 274 }
mbed_official 610:813dcc80987e 275 }
mbed_official 610:813dcc80987e 276
mbed_official 610:813dcc80987e 277 /* If applicable, configure the Initialization Vector */
mbed_official 610:813dcc80987e 278 if (hcryp->Init.ChainingMode != CRYP_CHAINMODE_AES_ECB)
mbed_official 610:813dcc80987e 279 {
mbed_official 610:813dcc80987e 280 if (CRYP_SetInitVector(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 281 {
mbed_official 610:813dcc80987e 282 return HAL_ERROR;
mbed_official 610:813dcc80987e 283 }
mbed_official 610:813dcc80987e 284 }
mbed_official 610:813dcc80987e 285 }
mbed_official 610:813dcc80987e 286
mbed_official 610:813dcc80987e 287 /* Reset CrypInCount and CrypOutCount */
mbed_official 610:813dcc80987e 288 hcryp->CrypInCount = 0;
mbed_official 610:813dcc80987e 289 hcryp->CrypOutCount = 0;
mbed_official 610:813dcc80987e 290
mbed_official 610:813dcc80987e 291 /* Reset ErrorCode field */
mbed_official 610:813dcc80987e 292 hcryp->ErrorCode = HAL_CRYP_ERROR_NONE;
mbed_official 610:813dcc80987e 293
mbed_official 610:813dcc80987e 294 /* Reset Mode suspension request */
mbed_official 610:813dcc80987e 295 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE;
mbed_official 610:813dcc80987e 296
mbed_official 610:813dcc80987e 297 /* Change the CRYP state */
mbed_official 610:813dcc80987e 298 hcryp->State = HAL_CRYP_STATE_READY;
mbed_official 610:813dcc80987e 299
mbed_official 610:813dcc80987e 300 /* Enable the Peripheral */
mbed_official 610:813dcc80987e 301 __HAL_CRYP_ENABLE();
mbed_official 610:813dcc80987e 302
mbed_official 610:813dcc80987e 303 /* Return function status */
mbed_official 610:813dcc80987e 304 return HAL_OK;
mbed_official 610:813dcc80987e 305 }
mbed_official 610:813dcc80987e 306
mbed_official 610:813dcc80987e 307 /**
mbed_official 610:813dcc80987e 308 * @brief DeInitialize the CRYP peripheral.
mbed_official 610:813dcc80987e 309 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 310 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 311 * @retval HAL status
mbed_official 610:813dcc80987e 312 */
mbed_official 610:813dcc80987e 313 HAL_StatusTypeDef HAL_CRYP_DeInit(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 314 {
mbed_official 610:813dcc80987e 315 /* Check the CRYP handle allocation */
mbed_official 610:813dcc80987e 316 if(hcryp == NULL)
mbed_official 610:813dcc80987e 317 {
mbed_official 610:813dcc80987e 318 return HAL_ERROR;
mbed_official 610:813dcc80987e 319 }
mbed_official 610:813dcc80987e 320
mbed_official 610:813dcc80987e 321 /* Change the CRYP state */
mbed_official 610:813dcc80987e 322 hcryp->State = HAL_CRYP_STATE_BUSY;
mbed_official 610:813dcc80987e 323
mbed_official 610:813dcc80987e 324 /* Set the default CRYP phase */
mbed_official 610:813dcc80987e 325 hcryp->Phase = HAL_CRYP_PHASE_READY;
mbed_official 610:813dcc80987e 326
mbed_official 610:813dcc80987e 327 /* Reset CrypInCount and CrypOutCount */
mbed_official 610:813dcc80987e 328 hcryp->CrypInCount = 0;
mbed_official 610:813dcc80987e 329 hcryp->CrypOutCount = 0;
mbed_official 610:813dcc80987e 330
mbed_official 610:813dcc80987e 331 /* Disable the CRYP Peripheral Clock */
mbed_official 610:813dcc80987e 332 __HAL_CRYP_DISABLE();
mbed_official 610:813dcc80987e 333
mbed_official 610:813dcc80987e 334 /* DeInit the low level hardware: CLOCK, NVIC.*/
mbed_official 610:813dcc80987e 335 HAL_CRYP_MspDeInit(hcryp);
mbed_official 610:813dcc80987e 336
mbed_official 610:813dcc80987e 337 /* Change the CRYP state */
mbed_official 610:813dcc80987e 338 hcryp->State = HAL_CRYP_STATE_RESET;
mbed_official 610:813dcc80987e 339
mbed_official 610:813dcc80987e 340 /* Release Lock */
mbed_official 610:813dcc80987e 341 __HAL_UNLOCK(hcryp);
mbed_official 610:813dcc80987e 342
mbed_official 610:813dcc80987e 343 /* Return function status */
mbed_official 610:813dcc80987e 344 return HAL_OK;
mbed_official 610:813dcc80987e 345 }
mbed_official 610:813dcc80987e 346
mbed_official 610:813dcc80987e 347 /**
mbed_official 610:813dcc80987e 348 * @brief Initialize the CRYP MSP.
mbed_official 610:813dcc80987e 349 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 350 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 351 * @retval None
mbed_official 610:813dcc80987e 352 */
mbed_official 610:813dcc80987e 353 __weak void HAL_CRYP_MspInit(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 354 {
mbed_official 610:813dcc80987e 355 /* NOTE : This function should not be modified; when the callback is needed,
mbed_official 610:813dcc80987e 356 the HAL_CRYP_MspInit can be implemented in the user file
mbed_official 610:813dcc80987e 357 */
mbed_official 610:813dcc80987e 358 }
mbed_official 610:813dcc80987e 359
mbed_official 610:813dcc80987e 360 /**
mbed_official 610:813dcc80987e 361 * @brief DeInitialize CRYP MSP.
mbed_official 610:813dcc80987e 362 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 363 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 364 * @retval None
mbed_official 610:813dcc80987e 365 */
mbed_official 610:813dcc80987e 366 __weak void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 367 {
mbed_official 610:813dcc80987e 368 /* NOTE : This function should not be modified; when the callback is needed,
mbed_official 610:813dcc80987e 369 the HAL_CRYP_MspDeInit can be implemented in the user file
mbed_official 610:813dcc80987e 370 */
mbed_official 610:813dcc80987e 371 }
mbed_official 610:813dcc80987e 372
mbed_official 610:813dcc80987e 373 /**
mbed_official 610:813dcc80987e 374 * @}
mbed_official 610:813dcc80987e 375 */
mbed_official 610:813dcc80987e 376
mbed_official 610:813dcc80987e 377 /** @defgroup CRYP_Group2 AES processing functions
mbed_official 610:813dcc80987e 378 * @brief Processing functions.
mbed_official 610:813dcc80987e 379 *
mbed_official 610:813dcc80987e 380 @verbatim
mbed_official 610:813dcc80987e 381 ==============================================================================
mbed_official 610:813dcc80987e 382 ##### AES processing functions #####
mbed_official 610:813dcc80987e 383 ==============================================================================
mbed_official 610:813dcc80987e 384 [..] This section provides functions allowing to:
mbed_official 610:813dcc80987e 385 (+) Encrypt plaintext using AES algorithm in different chaining modes
mbed_official 610:813dcc80987e 386 (+) Decrypt cyphertext using AES algorithm in different chaining modes
mbed_official 610:813dcc80987e 387 [..] Three processing functions are available:
mbed_official 610:813dcc80987e 388 (+) Polling mode
mbed_official 610:813dcc80987e 389 (+) Interrupt mode
mbed_official 610:813dcc80987e 390 (+) DMA mode
mbed_official 610:813dcc80987e 391
mbed_official 610:813dcc80987e 392 @endverbatim
mbed_official 610:813dcc80987e 393 * @{
mbed_official 610:813dcc80987e 394 */
mbed_official 610:813dcc80987e 395
mbed_official 610:813dcc80987e 396
mbed_official 610:813dcc80987e 397 /**
mbed_official 610:813dcc80987e 398 * @brief Encrypt pPlainData in AES ECB encryption mode. The cypher data are available in pCypherData.
mbed_official 610:813dcc80987e 399 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 400 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 401 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 402 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 403 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 404 * @param Timeout: Specify Timeout value
mbed_official 610:813dcc80987e 405 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 406 * resort to generic HAL_CRYPEx_AES() API instead (usage recommended).
mbed_official 610:813dcc80987e 407 * @retval HAL status
mbed_official 610:813dcc80987e 408 */
mbed_official 610:813dcc80987e 409 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout)
mbed_official 610:813dcc80987e 410 {
mbed_official 610:813dcc80987e 411 /* Re-initialize AES IP with proper parameters */
mbed_official 610:813dcc80987e 412 if (HAL_CRYP_DeInit(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 413 {
mbed_official 610:813dcc80987e 414 return HAL_ERROR;
mbed_official 610:813dcc80987e 415 }
mbed_official 610:813dcc80987e 416 hcryp->Init.OperatingMode = CRYP_ALGOMODE_ENCRYPT;
mbed_official 610:813dcc80987e 417 hcryp->Init.ChainingMode = CRYP_CHAINMODE_AES_ECB;
mbed_official 610:813dcc80987e 418 hcryp->Init.KeyWriteFlag = CRYP_KEY_WRITE_ENABLE;
mbed_official 610:813dcc80987e 419 if (HAL_CRYP_Init(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 420 {
mbed_official 610:813dcc80987e 421 return HAL_ERROR;
mbed_official 610:813dcc80987e 422 }
mbed_official 610:813dcc80987e 423
mbed_official 610:813dcc80987e 424 return HAL_CRYPEx_AES(hcryp, pPlainData, Size, pCypherData, Timeout);
mbed_official 610:813dcc80987e 425 }
mbed_official 610:813dcc80987e 426
mbed_official 610:813dcc80987e 427
mbed_official 610:813dcc80987e 428 /**
mbed_official 610:813dcc80987e 429 * @brief Encrypt pPlainData in AES CBC encryption mode with key derivation. The cypher data are available in pCypherData.
mbed_official 610:813dcc80987e 430 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 431 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 432 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 433 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 434 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 435 * @param Timeout: Specify Timeout value
mbed_official 610:813dcc80987e 436 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 437 * resort to generic HAL_CRYPEx_AES() API instead (usage recommended).
mbed_official 610:813dcc80987e 438 * @retval HAL status
mbed_official 610:813dcc80987e 439 */
mbed_official 610:813dcc80987e 440 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout)
mbed_official 610:813dcc80987e 441 {
mbed_official 610:813dcc80987e 442 /* Re-initialize AES IP with proper parameters */
mbed_official 610:813dcc80987e 443 if (HAL_CRYP_DeInit(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 444 {
mbed_official 610:813dcc80987e 445 return HAL_ERROR;
mbed_official 610:813dcc80987e 446 }
mbed_official 610:813dcc80987e 447 hcryp->Init.OperatingMode = CRYP_ALGOMODE_ENCRYPT;
mbed_official 610:813dcc80987e 448 hcryp->Init.ChainingMode = CRYP_CHAINMODE_AES_CBC;
mbed_official 610:813dcc80987e 449 hcryp->Init.KeyWriteFlag = CRYP_KEY_WRITE_ENABLE;
mbed_official 610:813dcc80987e 450 if (HAL_CRYP_Init(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 451 {
mbed_official 610:813dcc80987e 452 return HAL_ERROR;
mbed_official 610:813dcc80987e 453 }
mbed_official 610:813dcc80987e 454
mbed_official 610:813dcc80987e 455 return HAL_CRYPEx_AES(hcryp, pPlainData, Size, pCypherData, Timeout);
mbed_official 610:813dcc80987e 456 }
mbed_official 610:813dcc80987e 457
mbed_official 610:813dcc80987e 458
mbed_official 610:813dcc80987e 459 /**
mbed_official 610:813dcc80987e 460 * @brief Encrypt pPlainData in AES CTR encryption mode. The cypher data are available in pCypherData
mbed_official 610:813dcc80987e 461 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 462 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 463 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 464 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 465 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 466 * @param Timeout: Specify Timeout value
mbed_official 610:813dcc80987e 467 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 468 * resort to generic HAL_CRYPEx_AES() API instead (usage recommended).
mbed_official 610:813dcc80987e 469 * @retval HAL status
mbed_official 610:813dcc80987e 470 */
mbed_official 610:813dcc80987e 471 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData, uint32_t Timeout)
mbed_official 610:813dcc80987e 472 {
mbed_official 610:813dcc80987e 473 /* Re-initialize AES IP with proper parameters */
mbed_official 610:813dcc80987e 474 if (HAL_CRYP_DeInit(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 475 {
mbed_official 610:813dcc80987e 476 return HAL_ERROR;
mbed_official 610:813dcc80987e 477 }
mbed_official 610:813dcc80987e 478 hcryp->Init.OperatingMode = CRYP_ALGOMODE_ENCRYPT;
mbed_official 610:813dcc80987e 479 hcryp->Init.ChainingMode = CRYP_CHAINMODE_AES_CTR;
mbed_official 610:813dcc80987e 480 hcryp->Init.KeyWriteFlag = CRYP_KEY_WRITE_ENABLE;
mbed_official 610:813dcc80987e 481 if (HAL_CRYP_Init(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 482 {
mbed_official 610:813dcc80987e 483 return HAL_ERROR;
mbed_official 610:813dcc80987e 484 }
mbed_official 610:813dcc80987e 485
mbed_official 610:813dcc80987e 486 return HAL_CRYPEx_AES(hcryp, pPlainData, Size, pCypherData, Timeout);
mbed_official 610:813dcc80987e 487 }
mbed_official 610:813dcc80987e 488
mbed_official 610:813dcc80987e 489 /**
mbed_official 610:813dcc80987e 490 * @brief Decrypt pCypherData in AES ECB decryption mode with key derivation,
mbed_official 610:813dcc80987e 491 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 492 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 493 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 494 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 495 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 496 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 497 * @param Timeout: Specify Timeout value
mbed_official 610:813dcc80987e 498 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 499 * resort to generic HAL_CRYPEx_AES() API instead (usage recommended).
mbed_official 610:813dcc80987e 500 * @retval HAL status
mbed_official 610:813dcc80987e 501 */
mbed_official 610:813dcc80987e 502 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout)
mbed_official 610:813dcc80987e 503 {
mbed_official 610:813dcc80987e 504 /* Re-initialize AES IP with proper parameters */
mbed_official 610:813dcc80987e 505 if (HAL_CRYP_DeInit(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 506 {
mbed_official 610:813dcc80987e 507 return HAL_ERROR;
mbed_official 610:813dcc80987e 508 }
mbed_official 610:813dcc80987e 509 hcryp->Init.OperatingMode = CRYP_ALGOMODE_KEYDERIVATION_DECRYPT;
mbed_official 610:813dcc80987e 510 hcryp->Init.ChainingMode = CRYP_CHAINMODE_AES_ECB;
mbed_official 610:813dcc80987e 511 hcryp->Init.KeyWriteFlag = CRYP_KEY_WRITE_ENABLE;
mbed_official 610:813dcc80987e 512 if (HAL_CRYP_Init(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 513 {
mbed_official 610:813dcc80987e 514 return HAL_ERROR;
mbed_official 610:813dcc80987e 515 }
mbed_official 610:813dcc80987e 516
mbed_official 610:813dcc80987e 517 return HAL_CRYPEx_AES(hcryp, pCypherData, Size, pPlainData, Timeout);
mbed_official 610:813dcc80987e 518 }
mbed_official 610:813dcc80987e 519
mbed_official 610:813dcc80987e 520 /**
mbed_official 610:813dcc80987e 521 * @brief Decrypt pCypherData in AES ECB decryption mode with key derivation,
mbed_official 610:813dcc80987e 522 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 523 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 524 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 525 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 526 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 527 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 528 * @param Timeout: Specify Timeout value
mbed_official 610:813dcc80987e 529 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 530 * resort to generic HAL_CRYPEx_AES() API instead (usage recommended).
mbed_official 610:813dcc80987e 531 * @retval HAL status
mbed_official 610:813dcc80987e 532 */
mbed_official 610:813dcc80987e 533 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout)
mbed_official 610:813dcc80987e 534 {
mbed_official 610:813dcc80987e 535 /* Re-initialize AES IP with proper parameters */
mbed_official 610:813dcc80987e 536 if (HAL_CRYP_DeInit(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 537 {
mbed_official 610:813dcc80987e 538 return HAL_ERROR;
mbed_official 610:813dcc80987e 539 }
mbed_official 610:813dcc80987e 540 hcryp->Init.OperatingMode = CRYP_ALGOMODE_KEYDERIVATION_DECRYPT;
mbed_official 610:813dcc80987e 541 hcryp->Init.ChainingMode = CRYP_CHAINMODE_AES_CBC;
mbed_official 610:813dcc80987e 542 hcryp->Init.KeyWriteFlag = CRYP_KEY_WRITE_ENABLE;
mbed_official 610:813dcc80987e 543 if (HAL_CRYP_Init(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 544 {
mbed_official 610:813dcc80987e 545 return HAL_ERROR;
mbed_official 610:813dcc80987e 546 }
mbed_official 610:813dcc80987e 547
mbed_official 610:813dcc80987e 548 return HAL_CRYPEx_AES(hcryp, pCypherData, Size, pPlainData, Timeout);
mbed_official 610:813dcc80987e 549 }
mbed_official 610:813dcc80987e 550
mbed_official 610:813dcc80987e 551 /**
mbed_official 610:813dcc80987e 552 * @brief Decrypt pCypherData in AES CTR decryption mode,
mbed_official 610:813dcc80987e 553 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 554 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 555 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 556 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 557 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 558 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 559 * @param Timeout: Specify Timeout value
mbed_official 610:813dcc80987e 560 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 561 * resort to generic HAL_CRYPEx_AES() API instead (usage recommended).
mbed_official 610:813dcc80987e 562 * @retval HAL status
mbed_official 610:813dcc80987e 563 */
mbed_official 610:813dcc80987e 564 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData, uint32_t Timeout)
mbed_official 610:813dcc80987e 565 {
mbed_official 610:813dcc80987e 566 /* Re-initialize AES IP with proper parameters */
mbed_official 610:813dcc80987e 567 if (HAL_CRYP_DeInit(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 568 {
mbed_official 610:813dcc80987e 569 return HAL_ERROR;
mbed_official 610:813dcc80987e 570 }
mbed_official 610:813dcc80987e 571 hcryp->Init.OperatingMode = CRYP_ALGOMODE_DECRYPT;
mbed_official 610:813dcc80987e 572 hcryp->Init.ChainingMode = CRYP_CHAINMODE_AES_CTR;
mbed_official 610:813dcc80987e 573 hcryp->Init.KeyWriteFlag = CRYP_KEY_WRITE_ENABLE;
mbed_official 610:813dcc80987e 574 if (HAL_CRYP_Init(hcryp) != HAL_OK)
mbed_official 610:813dcc80987e 575 {
mbed_official 610:813dcc80987e 576 return HAL_ERROR;
mbed_official 610:813dcc80987e 577 }
mbed_official 610:813dcc80987e 578
mbed_official 610:813dcc80987e 579 return HAL_CRYPEx_AES(hcryp, pCypherData, Size, pPlainData, Timeout);
mbed_official 610:813dcc80987e 580 }
mbed_official 610:813dcc80987e 581
mbed_official 610:813dcc80987e 582 /**
mbed_official 610:813dcc80987e 583 * @brief Encrypt pPlainData in AES ECB encryption mode using Interrupt,
mbed_official 610:813dcc80987e 584 * the cypher data are available in pCypherData.
mbed_official 610:813dcc80987e 585 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 586 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 587 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 588 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 589 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 590 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 591 * resort to generic HAL_CRYPEx_AES_IT() API instead (usage recommended).
mbed_official 610:813dcc80987e 592 * @retval HAL status
mbed_official 610:813dcc80987e 593 */
mbed_official 610:813dcc80987e 594 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData)
mbed_official 610:813dcc80987e 595 {
mbed_official 610:813dcc80987e 596 return HAL_CRYPEx_AES_IT(hcryp, pPlainData, Size, pCypherData);
mbed_official 610:813dcc80987e 597 }
mbed_official 610:813dcc80987e 598
mbed_official 610:813dcc80987e 599 /**
mbed_official 610:813dcc80987e 600 * @brief Encrypt pPlainData in AES CBC encryption mode using Interrupt,
mbed_official 610:813dcc80987e 601 * the cypher data are available in pCypherData.
mbed_official 610:813dcc80987e 602 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 603 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 604 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 605 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 606 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 607 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 608 * resort to generic HAL_CRYPEx_AES_IT() API instead (usage recommended).
mbed_official 610:813dcc80987e 609 * @retval HAL status
mbed_official 610:813dcc80987e 610 */
mbed_official 610:813dcc80987e 611 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData)
mbed_official 610:813dcc80987e 612 {
mbed_official 610:813dcc80987e 613 return HAL_CRYPEx_AES_IT(hcryp, pPlainData, Size, pCypherData);
mbed_official 610:813dcc80987e 614 }
mbed_official 610:813dcc80987e 615
mbed_official 610:813dcc80987e 616
mbed_official 610:813dcc80987e 617 /**
mbed_official 610:813dcc80987e 618 * @brief Encrypt pPlainData in AES CTR encryption mode using Interrupt,
mbed_official 610:813dcc80987e 619 * the cypher data are available in pCypherData.
mbed_official 610:813dcc80987e 620 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 621 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 622 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 623 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 624 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 625 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 626 * resort to generic HAL_CRYPEx_AES_IT() API instead (usage recommended).
mbed_official 610:813dcc80987e 627 * @retval HAL status
mbed_official 610:813dcc80987e 628 */
mbed_official 610:813dcc80987e 629 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData)
mbed_official 610:813dcc80987e 630 {
mbed_official 610:813dcc80987e 631 return HAL_CRYPEx_AES_IT(hcryp, pPlainData, Size, pCypherData);
mbed_official 610:813dcc80987e 632 }
mbed_official 610:813dcc80987e 633
mbed_official 610:813dcc80987e 634 /**
mbed_official 610:813dcc80987e 635 * @brief Decrypt pCypherData in AES ECB decryption mode using Interrupt,
mbed_official 610:813dcc80987e 636 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 637 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 638 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 639 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 640 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 641 * @param pPlainData: Pointer to the plaintext buffer.
mbed_official 610:813dcc80987e 642 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 643 * resort to generic HAL_CRYPEx_AES_IT() API instead (usage recommended).
mbed_official 610:813dcc80987e 644 * @retval HAL status
mbed_official 610:813dcc80987e 645 */
mbed_official 610:813dcc80987e 646 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData)
mbed_official 610:813dcc80987e 647 {
mbed_official 610:813dcc80987e 648 return HAL_CRYPEx_AES_IT(hcryp, pCypherData, Size, pPlainData);
mbed_official 610:813dcc80987e 649 }
mbed_official 610:813dcc80987e 650
mbed_official 610:813dcc80987e 651 /**
mbed_official 610:813dcc80987e 652 * @brief Decrypt pCypherData in AES CBC decryption mode using Interrupt,
mbed_official 610:813dcc80987e 653 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 654 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 655 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 656 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 657 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 658 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 659 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 660 * resort to generic HAL_CRYPEx_AES_IT() API instead (usage recommended).
mbed_official 610:813dcc80987e 661 * @retval HAL status
mbed_official 610:813dcc80987e 662 */
mbed_official 610:813dcc80987e 663 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData)
mbed_official 610:813dcc80987e 664 {
mbed_official 610:813dcc80987e 665 return HAL_CRYPEx_AES_IT(hcryp, pCypherData, Size, pPlainData);
mbed_official 610:813dcc80987e 666 }
mbed_official 610:813dcc80987e 667
mbed_official 610:813dcc80987e 668 /**
mbed_official 610:813dcc80987e 669 * @brief Decrypt pCypherData in AES CTR decryption mode using Interrupt,
mbed_official 610:813dcc80987e 670 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 671 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 672 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 673 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 674 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 675 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 676 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 677 * resort to generic HAL_CRYPEx_AES_IT() API instead (usage recommended).
mbed_official 610:813dcc80987e 678 * @retval HAL status
mbed_official 610:813dcc80987e 679 */
mbed_official 610:813dcc80987e 680 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_IT(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData)
mbed_official 610:813dcc80987e 681 {
mbed_official 610:813dcc80987e 682 return HAL_CRYPEx_AES_IT(hcryp, pCypherData, Size, pPlainData);
mbed_official 610:813dcc80987e 683 }
mbed_official 610:813dcc80987e 684
mbed_official 610:813dcc80987e 685 /**
mbed_official 610:813dcc80987e 686 * @brief Encrypt pPlainData in AES ECB encryption mode using DMA,
mbed_official 610:813dcc80987e 687 * the cypher data are available in pCypherData.
mbed_official 610:813dcc80987e 688 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 689 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 690 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 691 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 692 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 693 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 694 * resort to generic HAL_CRYPEx_AES_DMA() API instead (usage recommended).
mbed_official 610:813dcc80987e 695 * @retval HAL status
mbed_official 610:813dcc80987e 696 */
mbed_official 610:813dcc80987e 697 HAL_StatusTypeDef HAL_CRYP_AESECB_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData)
mbed_official 610:813dcc80987e 698 {
mbed_official 610:813dcc80987e 699 return HAL_CRYPEx_AES_DMA(hcryp, pPlainData, Size, pCypherData);
mbed_official 610:813dcc80987e 700 }
mbed_official 610:813dcc80987e 701
mbed_official 610:813dcc80987e 702
mbed_official 610:813dcc80987e 703
mbed_official 610:813dcc80987e 704 /**
mbed_official 610:813dcc80987e 705 * @brief Encrypt pPlainData in AES CBC encryption mode using DMA,
mbed_official 610:813dcc80987e 706 * the cypher data are available in pCypherData.
mbed_official 610:813dcc80987e 707 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 708 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 709 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 710 * @param Size: Length of the plaintext buffer, must be a multiple of 16.
mbed_official 610:813dcc80987e 711 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 712 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 713 * resort to generic HAL_CRYPEx_AES_DMA() API instead (usage recommended).
mbed_official 610:813dcc80987e 714 * @retval HAL status
mbed_official 610:813dcc80987e 715 */
mbed_official 610:813dcc80987e 716 HAL_StatusTypeDef HAL_CRYP_AESCBC_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData)
mbed_official 610:813dcc80987e 717 {
mbed_official 610:813dcc80987e 718 return HAL_CRYPEx_AES_DMA(hcryp, pPlainData, Size, pCypherData);
mbed_official 610:813dcc80987e 719 }
mbed_official 610:813dcc80987e 720
mbed_official 610:813dcc80987e 721 /**
mbed_official 610:813dcc80987e 722 * @brief Encrypt pPlainData in AES CTR encryption mode using DMA,
mbed_official 610:813dcc80987e 723 * the cypher data are available in pCypherData.
mbed_official 610:813dcc80987e 724 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 725 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 726 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 727 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 728 * @param pCypherData: Pointer to the cyphertext buffer.
mbed_official 610:813dcc80987e 729 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 730 * resort to generic HAL_CRYPEx_AES_DMA() API instead (usage recommended).
mbed_official 610:813dcc80987e 731 * @retval HAL status
mbed_official 610:813dcc80987e 732 */
mbed_official 610:813dcc80987e 733 HAL_StatusTypeDef HAL_CRYP_AESCTR_Encrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pPlainData, uint16_t Size, uint8_t *pCypherData)
mbed_official 610:813dcc80987e 734 {
mbed_official 610:813dcc80987e 735 return HAL_CRYPEx_AES_DMA(hcryp, pPlainData, Size, pCypherData);
mbed_official 610:813dcc80987e 736 }
mbed_official 610:813dcc80987e 737
mbed_official 610:813dcc80987e 738 /**
mbed_official 610:813dcc80987e 739 * @brief Decrypt pCypherData in AES ECB decryption mode using DMA,
mbed_official 610:813dcc80987e 740 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 741 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 742 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 743 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 744 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 745 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 746 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 747 * resort to generic HAL_CRYPEx_AES_DMA() API instead (usage recommended).
mbed_official 610:813dcc80987e 748 * @retval HAL status
mbed_official 610:813dcc80987e 749 */
mbed_official 610:813dcc80987e 750 HAL_StatusTypeDef HAL_CRYP_AESECB_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData)
mbed_official 610:813dcc80987e 751 {
mbed_official 610:813dcc80987e 752 return HAL_CRYPEx_AES_DMA(hcryp, pCypherData, Size, pPlainData);
mbed_official 610:813dcc80987e 753 }
mbed_official 610:813dcc80987e 754
mbed_official 610:813dcc80987e 755 /**
mbed_official 610:813dcc80987e 756 * @brief Decrypt pCypherData in AES CBC decryption mode using DMA,
mbed_official 610:813dcc80987e 757 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 758 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 759 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 760 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 761 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 762 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 763 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 764 * resort to generic HAL_CRYPEx_AES_DMA() API instead (usage recommended).
mbed_official 610:813dcc80987e 765 * @retval HAL status
mbed_official 610:813dcc80987e 766 */
mbed_official 610:813dcc80987e 767 HAL_StatusTypeDef HAL_CRYP_AESCBC_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData)
mbed_official 610:813dcc80987e 768 {
mbed_official 610:813dcc80987e 769 return HAL_CRYPEx_AES_DMA(hcryp, pCypherData, Size, pPlainData);
mbed_official 610:813dcc80987e 770 }
mbed_official 610:813dcc80987e 771
mbed_official 610:813dcc80987e 772 /**
mbed_official 610:813dcc80987e 773 * @brief Decrypt pCypherData in AES CTR decryption mode using DMA,
mbed_official 610:813dcc80987e 774 * the decyphered data are available in pPlainData.
mbed_official 610:813dcc80987e 775 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 776 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 777 * @param pCypherData: Pointer to the cyphertext buffer
mbed_official 610:813dcc80987e 778 * @param Size: Length of the plaintext buffer in bytes, must be a multiple of 16.
mbed_official 610:813dcc80987e 779 * @param pPlainData: Pointer to the plaintext buffer
mbed_official 610:813dcc80987e 780 * @note This API is provided only to maintain compatibility with legacy software. Users should directly
mbed_official 610:813dcc80987e 781 * resort to generic HAL_CRYPEx_AES_DMA() API instead (usage recommended).
mbed_official 610:813dcc80987e 782 * @retval HAL status
mbed_official 610:813dcc80987e 783 */
mbed_official 610:813dcc80987e 784 HAL_StatusTypeDef HAL_CRYP_AESCTR_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint8_t *pCypherData, uint16_t Size, uint8_t *pPlainData)
mbed_official 610:813dcc80987e 785 {
mbed_official 610:813dcc80987e 786 return HAL_CRYPEx_AES_DMA(hcryp, pCypherData, Size, pPlainData);
mbed_official 610:813dcc80987e 787 }
mbed_official 610:813dcc80987e 788
mbed_official 610:813dcc80987e 789
mbed_official 610:813dcc80987e 790 /**
mbed_official 610:813dcc80987e 791 * @}
mbed_official 610:813dcc80987e 792 */
mbed_official 610:813dcc80987e 793
mbed_official 610:813dcc80987e 794 /** @defgroup CRYP_Group3 Callback functions
mbed_official 610:813dcc80987e 795 * @brief Callback functions.
mbed_official 610:813dcc80987e 796 *
mbed_official 610:813dcc80987e 797 @verbatim
mbed_official 610:813dcc80987e 798 ==============================================================================
mbed_official 610:813dcc80987e 799 ##### Callback functions #####
mbed_official 610:813dcc80987e 800 ==============================================================================
mbed_official 610:813dcc80987e 801 [..] This section provides Interruption and DMA callback functions:
mbed_official 610:813dcc80987e 802 (+) DMA Input data transfer complete
mbed_official 610:813dcc80987e 803 (+) DMA Output data transfer complete
mbed_official 610:813dcc80987e 804 (+) DMA or Interrupt error
mbed_official 610:813dcc80987e 805
mbed_official 610:813dcc80987e 806 @endverbatim
mbed_official 610:813dcc80987e 807 * @{
mbed_official 610:813dcc80987e 808 */
mbed_official 610:813dcc80987e 809
mbed_official 610:813dcc80987e 810 /**
mbed_official 610:813dcc80987e 811 * @brief CRYP error callback.
mbed_official 610:813dcc80987e 812 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 813 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 814 * @retval None
mbed_official 610:813dcc80987e 815 */
mbed_official 610:813dcc80987e 816 __weak void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 817 {
mbed_official 610:813dcc80987e 818 /* NOTE : This function should not be modified; when the callback is needed,
mbed_official 610:813dcc80987e 819 the HAL_CRYP_ErrorCallback can be implemented in the user file
mbed_official 610:813dcc80987e 820 */
mbed_official 610:813dcc80987e 821 }
mbed_official 610:813dcc80987e 822
mbed_official 610:813dcc80987e 823 /**
mbed_official 610:813dcc80987e 824 * @brief Input DMA transfer complete callback.
mbed_official 610:813dcc80987e 825 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 826 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 827 * @retval None
mbed_official 610:813dcc80987e 828 */
mbed_official 610:813dcc80987e 829 __weak void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 830 {
mbed_official 610:813dcc80987e 831 /* NOTE : This function should not be modified; when the callback is needed,
mbed_official 610:813dcc80987e 832 the HAL_CRYP_InCpltCallback can be implemented in the user file
mbed_official 610:813dcc80987e 833 */
mbed_official 610:813dcc80987e 834 }
mbed_official 610:813dcc80987e 835
mbed_official 610:813dcc80987e 836 /**
mbed_official 610:813dcc80987e 837 * @brief Output DMA transfer complete callback.
mbed_official 610:813dcc80987e 838 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 839 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 840 * @retval None
mbed_official 610:813dcc80987e 841 */
mbed_official 610:813dcc80987e 842 __weak void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 843 {
mbed_official 610:813dcc80987e 844 /* NOTE : This function should not be modified; when the callback is needed,
mbed_official 610:813dcc80987e 845 the HAL_CRYP_OutCpltCallback can be implemented in the user file
mbed_official 610:813dcc80987e 846 */
mbed_official 610:813dcc80987e 847 }
mbed_official 610:813dcc80987e 848
mbed_official 610:813dcc80987e 849 /**
mbed_official 610:813dcc80987e 850 * @}
mbed_official 610:813dcc80987e 851 */
mbed_official 610:813dcc80987e 852
mbed_official 610:813dcc80987e 853 /** @defgroup CRYP_Group4 CRYP IRQ handler
mbed_official 610:813dcc80987e 854 * @brief AES IRQ handler.
mbed_official 610:813dcc80987e 855 *
mbed_official 610:813dcc80987e 856 @verbatim
mbed_official 610:813dcc80987e 857 ==============================================================================
mbed_official 610:813dcc80987e 858 ##### AES IRQ handler management #####
mbed_official 610:813dcc80987e 859 ==============================================================================
mbed_official 610:813dcc80987e 860 [..] This section provides AES IRQ handler function.
mbed_official 610:813dcc80987e 861
mbed_official 610:813dcc80987e 862 @endverbatim
mbed_official 610:813dcc80987e 863 * @{
mbed_official 610:813dcc80987e 864 */
mbed_official 610:813dcc80987e 865
mbed_official 610:813dcc80987e 866 /**
mbed_official 610:813dcc80987e 867 * @brief Handle AES interrupt request.
mbed_official 610:813dcc80987e 868 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 869 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 870 * @retval None
mbed_official 610:813dcc80987e 871 */
mbed_official 610:813dcc80987e 872 void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 873 {
mbed_official 610:813dcc80987e 874 /* Check if error occurred */
mbed_official 610:813dcc80987e 875 if (__HAL_CRYP_GET_IT_SOURCE(CRYP_IT_ERRIE) != RESET)
mbed_official 610:813dcc80987e 876 {
mbed_official 610:813dcc80987e 877 /* If Write Error occurred */
mbed_official 610:813dcc80987e 878 if (__HAL_CRYP_GET_FLAG(CRYP_IT_WRERR) != RESET)
mbed_official 610:813dcc80987e 879 {
mbed_official 610:813dcc80987e 880 hcryp->ErrorCode |= HAL_CRYP_WRITE_ERROR;
mbed_official 610:813dcc80987e 881 hcryp->State = HAL_CRYP_STATE_ERROR;
mbed_official 610:813dcc80987e 882 }
mbed_official 610:813dcc80987e 883 /* If Read Error occurred */
mbed_official 610:813dcc80987e 884 if (__HAL_CRYP_GET_FLAG(CRYP_IT_RDERR) != RESET)
mbed_official 610:813dcc80987e 885 {
mbed_official 610:813dcc80987e 886 hcryp->ErrorCode |= HAL_CRYP_READ_ERROR;
mbed_official 610:813dcc80987e 887 hcryp->State = HAL_CRYP_STATE_ERROR;
mbed_official 610:813dcc80987e 888 }
mbed_official 610:813dcc80987e 889
mbed_official 610:813dcc80987e 890 /* If an error has been reported */
mbed_official 610:813dcc80987e 891 if (hcryp->State == HAL_CRYP_STATE_ERROR)
mbed_official 610:813dcc80987e 892 {
mbed_official 610:813dcc80987e 893 /* Disable Error and Computation Complete Interrupts */
mbed_official 610:813dcc80987e 894 __HAL_CRYP_DISABLE_IT(CRYP_IT_CCFIE|CRYP_IT_ERRIE);
mbed_official 610:813dcc80987e 895 /* Clear all Interrupt flags */
mbed_official 610:813dcc80987e 896 __HAL_CRYP_CLEAR_FLAG(CRYP_ERR_CLEAR|CRYP_CCF_CLEAR);
mbed_official 610:813dcc80987e 897
mbed_official 610:813dcc80987e 898 /* Process Unlocked */
mbed_official 610:813dcc80987e 899 __HAL_UNLOCK(hcryp);
mbed_official 610:813dcc80987e 900
mbed_official 610:813dcc80987e 901 HAL_CRYP_ErrorCallback(hcryp);
mbed_official 610:813dcc80987e 902
mbed_official 610:813dcc80987e 903 return;
mbed_official 610:813dcc80987e 904 }
mbed_official 610:813dcc80987e 905 }
mbed_official 610:813dcc80987e 906
mbed_official 610:813dcc80987e 907 /* Check if computation complete interrupt is enabled
mbed_official 610:813dcc80987e 908 and if the computation complete flag is raised */
mbed_official 610:813dcc80987e 909 if((__HAL_CRYP_GET_FLAG(CRYP_IT_CCF) != RESET) && (__HAL_CRYP_GET_IT_SOURCE(CRYP_IT_CCFIE) != RESET))
mbed_official 610:813dcc80987e 910 {
mbed_official 610:813dcc80987e 911 if ((hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_GCM_GMAC)
mbed_official 610:813dcc80987e 912 || (hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC))
mbed_official 610:813dcc80987e 913 {
mbed_official 610:813dcc80987e 914 /* To ensure proper suspension requests management, CCF flag
mbed_official 610:813dcc80987e 915 is reset in CRYP_AES_Auth_IT() according to the current
mbed_official 610:813dcc80987e 916 phase under handling */
mbed_official 610:813dcc80987e 917 CRYP_AES_Auth_IT(hcryp);
mbed_official 610:813dcc80987e 918 }
mbed_official 610:813dcc80987e 919 else
mbed_official 610:813dcc80987e 920 {
mbed_official 610:813dcc80987e 921 /* Clear Computation Complete Flag */
mbed_official 610:813dcc80987e 922 __HAL_CRYP_CLEAR_FLAG(CRYP_CCF_CLEAR);
mbed_official 610:813dcc80987e 923 CRYP_AES_IT(hcryp);
mbed_official 610:813dcc80987e 924 }
mbed_official 610:813dcc80987e 925 }
mbed_official 610:813dcc80987e 926 }
mbed_official 610:813dcc80987e 927
mbed_official 610:813dcc80987e 928 /**
mbed_official 610:813dcc80987e 929 * @}
mbed_official 610:813dcc80987e 930 */
mbed_official 610:813dcc80987e 931
mbed_official 610:813dcc80987e 932 /** @defgroup CRYP_Group5 Peripheral State functions
mbed_official 610:813dcc80987e 933 * @brief Peripheral State functions.
mbed_official 610:813dcc80987e 934 *
mbed_official 610:813dcc80987e 935 @verbatim
mbed_official 610:813dcc80987e 936 ==============================================================================
mbed_official 610:813dcc80987e 937 ##### Peripheral State functions #####
mbed_official 610:813dcc80987e 938 ==============================================================================
mbed_official 610:813dcc80987e 939 [..]
mbed_official 610:813dcc80987e 940 This subsection permits to get in run-time the status of the peripheral.
mbed_official 610:813dcc80987e 941
mbed_official 610:813dcc80987e 942 @endverbatim
mbed_official 610:813dcc80987e 943 * @{
mbed_official 610:813dcc80987e 944 */
mbed_official 610:813dcc80987e 945
mbed_official 610:813dcc80987e 946 /**
mbed_official 610:813dcc80987e 947 * @brief Return the CRYP handle state.
mbed_official 610:813dcc80987e 948 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 949 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 950 * @retval HAL state
mbed_official 610:813dcc80987e 951 */
mbed_official 610:813dcc80987e 952 HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 953 {
mbed_official 610:813dcc80987e 954 /* Return CRYP handle state */
mbed_official 610:813dcc80987e 955 return hcryp->State;
mbed_official 610:813dcc80987e 956 }
mbed_official 610:813dcc80987e 957
mbed_official 610:813dcc80987e 958 /**
mbed_official 610:813dcc80987e 959 * @brief Return the CRYP peripheral error.
mbed_official 610:813dcc80987e 960 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 961 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 962 * @note The returned error is a bit-map combination of possible errors
mbed_official 610:813dcc80987e 963 * @retval Error bit-map
mbed_official 610:813dcc80987e 964 */
mbed_official 610:813dcc80987e 965 uint32_t HAL_CRYP_GetError(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 966 {
mbed_official 610:813dcc80987e 967 return hcryp->ErrorCode;
mbed_official 610:813dcc80987e 968 }
mbed_official 610:813dcc80987e 969
mbed_official 610:813dcc80987e 970 /**
mbed_official 610:813dcc80987e 971 * @}
mbed_official 610:813dcc80987e 972 */
mbed_official 610:813dcc80987e 973
mbed_official 610:813dcc80987e 974 /**
mbed_official 610:813dcc80987e 975 * @}
mbed_official 610:813dcc80987e 976 */
mbed_official 610:813dcc80987e 977
mbed_official 610:813dcc80987e 978 /** @addtogroup CRYP_Private_Functions
mbed_official 610:813dcc80987e 979 * @{
mbed_official 610:813dcc80987e 980 */
mbed_official 610:813dcc80987e 981
mbed_official 610:813dcc80987e 982
mbed_official 610:813dcc80987e 983 /**
mbed_official 610:813dcc80987e 984 * @brief Write the Key in KeyRx registers.
mbed_official 610:813dcc80987e 985 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 986 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 987 * @retval HAL status
mbed_official 610:813dcc80987e 988 */
mbed_official 610:813dcc80987e 989 static HAL_StatusTypeDef CRYP_SetKey(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 990 {
mbed_official 610:813dcc80987e 991 uint32_t keyaddr = 0x0;
mbed_official 610:813dcc80987e 992
mbed_official 610:813dcc80987e 993 if (hcryp->Init.pKey == NULL)
mbed_official 610:813dcc80987e 994 {
mbed_official 610:813dcc80987e 995 return HAL_ERROR;
mbed_official 610:813dcc80987e 996 }
mbed_official 610:813dcc80987e 997
mbed_official 610:813dcc80987e 998 keyaddr = (uint32_t)(hcryp->Init.pKey);
mbed_official 610:813dcc80987e 999
mbed_official 610:813dcc80987e 1000 if (hcryp->Init.KeySize == CRYP_KEYSIZE_256B)
mbed_official 610:813dcc80987e 1001 {
mbed_official 610:813dcc80987e 1002 hcryp->Instance->KEYR7 = __REV(*(uint32_t*)(keyaddr));
mbed_official 610:813dcc80987e 1003 keyaddr+=4;
mbed_official 610:813dcc80987e 1004 hcryp->Instance->KEYR6 = __REV(*(uint32_t*)(keyaddr));
mbed_official 610:813dcc80987e 1005 keyaddr+=4;
mbed_official 610:813dcc80987e 1006 hcryp->Instance->KEYR5 = __REV(*(uint32_t*)(keyaddr));
mbed_official 610:813dcc80987e 1007 keyaddr+=4;
mbed_official 610:813dcc80987e 1008 hcryp->Instance->KEYR4 = __REV(*(uint32_t*)(keyaddr));
mbed_official 610:813dcc80987e 1009 keyaddr+=4;
mbed_official 610:813dcc80987e 1010 }
mbed_official 610:813dcc80987e 1011
mbed_official 610:813dcc80987e 1012 hcryp->Instance->KEYR3 = __REV(*(uint32_t*)(keyaddr));
mbed_official 610:813dcc80987e 1013 keyaddr+=4;
mbed_official 610:813dcc80987e 1014 hcryp->Instance->KEYR2 = __REV(*(uint32_t*)(keyaddr));
mbed_official 610:813dcc80987e 1015 keyaddr+=4;
mbed_official 610:813dcc80987e 1016 hcryp->Instance->KEYR1 = __REV(*(uint32_t*)(keyaddr));
mbed_official 610:813dcc80987e 1017 keyaddr+=4;
mbed_official 610:813dcc80987e 1018 hcryp->Instance->KEYR0 = __REV(*(uint32_t*)(keyaddr));
mbed_official 610:813dcc80987e 1019
mbed_official 610:813dcc80987e 1020 return HAL_OK;
mbed_official 610:813dcc80987e 1021 }
mbed_official 610:813dcc80987e 1022
mbed_official 610:813dcc80987e 1023 /**
mbed_official 610:813dcc80987e 1024 * @brief Write the InitVector/InitCounter in IVRx registers.
mbed_official 610:813dcc80987e 1025 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 1026 * the configuration information for CRYP module
mbed_official 610:813dcc80987e 1027 * @retval HAL status
mbed_official 610:813dcc80987e 1028 */
mbed_official 610:813dcc80987e 1029 static HAL_StatusTypeDef CRYP_SetInitVector(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 1030 {
mbed_official 610:813dcc80987e 1031 uint32_t ivaddr = 0x0;
mbed_official 610:813dcc80987e 1032
mbed_official 610:813dcc80987e 1033 if (hcryp->Init.ChainingMode == CRYP_CHAINMODE_AES_CMAC)
mbed_official 610:813dcc80987e 1034 {
mbed_official 610:813dcc80987e 1035 hcryp->Instance->IVR3 = 0;
mbed_official 610:813dcc80987e 1036 hcryp->Instance->IVR2 = 0;
mbed_official 610:813dcc80987e 1037 hcryp->Instance->IVR1 = 0;
mbed_official 610:813dcc80987e 1038 hcryp->Instance->IVR0 = 0;
mbed_official 610:813dcc80987e 1039 }
mbed_official 610:813dcc80987e 1040 else
mbed_official 610:813dcc80987e 1041 {
mbed_official 610:813dcc80987e 1042 if (hcryp->Init.pInitVect == NULL)
mbed_official 610:813dcc80987e 1043 {
mbed_official 610:813dcc80987e 1044 return HAL_ERROR;
mbed_official 610:813dcc80987e 1045 }
mbed_official 610:813dcc80987e 1046
mbed_official 610:813dcc80987e 1047 ivaddr = (uint32_t)(hcryp->Init.pInitVect);
mbed_official 610:813dcc80987e 1048
mbed_official 610:813dcc80987e 1049 hcryp->Instance->IVR3 = __REV(*(uint32_t*)(ivaddr));
mbed_official 610:813dcc80987e 1050 ivaddr+=4;
mbed_official 610:813dcc80987e 1051 hcryp->Instance->IVR2 = __REV(*(uint32_t*)(ivaddr));
mbed_official 610:813dcc80987e 1052 ivaddr+=4;
mbed_official 610:813dcc80987e 1053 hcryp->Instance->IVR1 = __REV(*(uint32_t*)(ivaddr));
mbed_official 610:813dcc80987e 1054 ivaddr+=4;
mbed_official 610:813dcc80987e 1055 hcryp->Instance->IVR0 = __REV(*(uint32_t*)(ivaddr));
mbed_official 610:813dcc80987e 1056 }
mbed_official 610:813dcc80987e 1057 return HAL_OK;
mbed_official 610:813dcc80987e 1058 }
mbed_official 610:813dcc80987e 1059
mbed_official 610:813dcc80987e 1060
mbed_official 610:813dcc80987e 1061
mbed_official 610:813dcc80987e 1062 /**
mbed_official 610:813dcc80987e 1063 * @brief Handle CRYP block input/output data handling under interruption.
mbed_official 610:813dcc80987e 1064 * @note The function is called under interruption only, once
mbed_official 610:813dcc80987e 1065 * interruptions have been enabled by HAL_CRYPEx_AES_IT().
mbed_official 610:813dcc80987e 1066 * @param hcryp: pointer to a CRYP_HandleTypeDef structure that contains
mbed_official 610:813dcc80987e 1067 * the configuration information for CRYP module.
mbed_official 610:813dcc80987e 1068 * @retval HAL status
mbed_official 610:813dcc80987e 1069 */
mbed_official 610:813dcc80987e 1070 static HAL_StatusTypeDef CRYP_AES_IT(CRYP_HandleTypeDef *hcryp)
mbed_official 610:813dcc80987e 1071 {
mbed_official 610:813dcc80987e 1072 uint32_t inputaddr = 0;
mbed_official 610:813dcc80987e 1073 uint32_t outputaddr = 0;
mbed_official 610:813dcc80987e 1074
mbed_official 610:813dcc80987e 1075 if(hcryp->State == HAL_CRYP_STATE_BUSY)
mbed_official 610:813dcc80987e 1076 {
mbed_official 610:813dcc80987e 1077 if (hcryp->Init.OperatingMode != CRYP_ALGOMODE_KEYDERIVATION)
mbed_official 610:813dcc80987e 1078 {
mbed_official 610:813dcc80987e 1079 /* Get the output data address */
mbed_official 610:813dcc80987e 1080 outputaddr = (uint32_t)hcryp->pCrypOutBuffPtr;
mbed_official 610:813dcc80987e 1081
mbed_official 610:813dcc80987e 1082 /* Read the last available output block from the Data Output Register */
mbed_official 610:813dcc80987e 1083 *(uint32_t*)(outputaddr) = hcryp->Instance->DOUTR;
mbed_official 610:813dcc80987e 1084 outputaddr+=4;
mbed_official 610:813dcc80987e 1085 *(uint32_t*)(outputaddr) = hcryp->Instance->DOUTR;
mbed_official 610:813dcc80987e 1086 outputaddr+=4;
mbed_official 610:813dcc80987e 1087 *(uint32_t*)(outputaddr) = hcryp->Instance->DOUTR;
mbed_official 610:813dcc80987e 1088 outputaddr+=4;
mbed_official 610:813dcc80987e 1089 *(uint32_t*)(outputaddr) = hcryp->Instance->DOUTR;
mbed_official 610:813dcc80987e 1090 hcryp->pCrypOutBuffPtr += 16;
mbed_official 610:813dcc80987e 1091 hcryp->CrypOutCount -= 16;
mbed_official 610:813dcc80987e 1092
mbed_official 610:813dcc80987e 1093 }
mbed_official 610:813dcc80987e 1094 else
mbed_official 610:813dcc80987e 1095 {
mbed_official 610:813dcc80987e 1096 /* Read the derived key from the Key registers */
mbed_official 610:813dcc80987e 1097 if (hcryp->Init.KeySize == CRYP_KEYSIZE_256B)
mbed_official 610:813dcc80987e 1098 {
mbed_official 610:813dcc80987e 1099 *(uint32_t*)(outputaddr) = __REV(hcryp->Instance->KEYR7);
mbed_official 610:813dcc80987e 1100 outputaddr+=4;
mbed_official 610:813dcc80987e 1101 *(uint32_t*)(outputaddr) = __REV(hcryp->Instance->KEYR6);
mbed_official 610:813dcc80987e 1102 outputaddr+=4;
mbed_official 610:813dcc80987e 1103 *(uint32_t*)(outputaddr) = __REV(hcryp->Instance->KEYR5);
mbed_official 610:813dcc80987e 1104 outputaddr+=4;
mbed_official 610:813dcc80987e 1105 *(uint32_t*)(outputaddr) = __REV(hcryp->Instance->KEYR4);
mbed_official 610:813dcc80987e 1106 outputaddr+=4;
mbed_official 610:813dcc80987e 1107 }
mbed_official 610:813dcc80987e 1108
mbed_official 610:813dcc80987e 1109 *(uint32_t*)(outputaddr) = __REV(hcryp->Instance->KEYR3);
mbed_official 610:813dcc80987e 1110 outputaddr+=4;
mbed_official 610:813dcc80987e 1111 *(uint32_t*)(outputaddr) = __REV(hcryp->Instance->KEYR2);
mbed_official 610:813dcc80987e 1112 outputaddr+=4;
mbed_official 610:813dcc80987e 1113 *(uint32_t*)(outputaddr) = __REV(hcryp->Instance->KEYR1);
mbed_official 610:813dcc80987e 1114 outputaddr+=4;
mbed_official 610:813dcc80987e 1115 *(uint32_t*)(outputaddr) = __REV(hcryp->Instance->KEYR0);
mbed_official 610:813dcc80987e 1116 }
mbed_official 610:813dcc80987e 1117
mbed_official 610:813dcc80987e 1118 /* In case of ciphering or deciphering, check if all output text has been retrieved;
mbed_official 610:813dcc80987e 1119 In case of key derivation, stop right there */
mbed_official 610:813dcc80987e 1120 if ((hcryp->CrypOutCount == 0) || (hcryp->Init.OperatingMode == CRYP_ALGOMODE_KEYDERIVATION))
mbed_official 610:813dcc80987e 1121 {
mbed_official 610:813dcc80987e 1122 /* Disable Computation Complete Flag and Errors Interrupts */
mbed_official 610:813dcc80987e 1123 __HAL_CRYP_DISABLE_IT(CRYP_IT_CCFIE|CRYP_IT_ERRIE);
mbed_official 610:813dcc80987e 1124 /* Change the CRYP state */
mbed_official 610:813dcc80987e 1125 hcryp->State = HAL_CRYP_STATE_READY;
mbed_official 610:813dcc80987e 1126
mbed_official 610:813dcc80987e 1127 /* Process Unlocked */
mbed_official 610:813dcc80987e 1128 __HAL_UNLOCK(hcryp);
mbed_official 610:813dcc80987e 1129
mbed_official 610:813dcc80987e 1130 /* Call computation complete callback */
mbed_official 610:813dcc80987e 1131 HAL_CRYPEx_ComputationCpltCallback(hcryp);
mbed_official 610:813dcc80987e 1132
mbed_official 610:813dcc80987e 1133 return HAL_OK;
mbed_official 610:813dcc80987e 1134 }
mbed_official 610:813dcc80987e 1135 /* If suspension flag has been raised, suspend processing */
mbed_official 610:813dcc80987e 1136 else if (hcryp->SuspendRequest == HAL_CRYP_SUSPEND)
mbed_official 610:813dcc80987e 1137 {
mbed_official 610:813dcc80987e 1138 /* reset ModeSuspend */
mbed_official 610:813dcc80987e 1139 hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE;
mbed_official 610:813dcc80987e 1140
mbed_official 610:813dcc80987e 1141 /* Disable Computation Complete Flag and Errors Interrupts */
mbed_official 610:813dcc80987e 1142 __HAL_CRYP_DISABLE_IT(CRYP_IT_CCFIE|CRYP_IT_ERRIE);
mbed_official 610:813dcc80987e 1143 /* Change the CRYP state */
mbed_official 610:813dcc80987e 1144 hcryp->State = HAL_CRYP_STATE_SUSPENDED;
mbed_official 610:813dcc80987e 1145
mbed_official 610:813dcc80987e 1146 /* Process Unlocked */
mbed_official 610:813dcc80987e 1147 __HAL_UNLOCK(hcryp);
mbed_official 610:813dcc80987e 1148
mbed_official 610:813dcc80987e 1149 return HAL_OK;
mbed_official 610:813dcc80987e 1150 }
mbed_official 610:813dcc80987e 1151 else /* Process the rest of input data */
mbed_official 610:813dcc80987e 1152 {
mbed_official 610:813dcc80987e 1153 /* Get the Intput data address */
mbed_official 610:813dcc80987e 1154 inputaddr = (uint32_t)hcryp->pCrypInBuffPtr;
mbed_official 610:813dcc80987e 1155
mbed_official 610:813dcc80987e 1156 /* Increment/decrement instance pointer/counter */
mbed_official 610:813dcc80987e 1157 hcryp->pCrypInBuffPtr += 16;
mbed_official 610:813dcc80987e 1158 hcryp->CrypInCount -= 16;
mbed_official 610:813dcc80987e 1159
mbed_official 610:813dcc80987e 1160 /* Write the next input block in the Data Input register */
mbed_official 610:813dcc80987e 1161 hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
mbed_official 610:813dcc80987e 1162 inputaddr+=4;
mbed_official 610:813dcc80987e 1163 hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
mbed_official 610:813dcc80987e 1164 inputaddr+=4;
mbed_official 610:813dcc80987e 1165 hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
mbed_official 610:813dcc80987e 1166 inputaddr+=4;
mbed_official 610:813dcc80987e 1167 hcryp->Instance->DINR = *(uint32_t*)(inputaddr);
mbed_official 610:813dcc80987e 1168
mbed_official 610:813dcc80987e 1169 return HAL_OK;
mbed_official 610:813dcc80987e 1170 }
mbed_official 610:813dcc80987e 1171 }
mbed_official 610:813dcc80987e 1172 else
mbed_official 610:813dcc80987e 1173 {
mbed_official 610:813dcc80987e 1174 return HAL_BUSY;
mbed_official 610:813dcc80987e 1175 }
mbed_official 610:813dcc80987e 1176 }
mbed_official 610:813dcc80987e 1177
mbed_official 610:813dcc80987e 1178
mbed_official 610:813dcc80987e 1179
mbed_official 610:813dcc80987e 1180
mbed_official 610:813dcc80987e 1181 /**
mbed_official 610:813dcc80987e 1182 * @}
mbed_official 610:813dcc80987e 1183 */
mbed_official 610:813dcc80987e 1184
mbed_official 610:813dcc80987e 1185
mbed_official 610:813dcc80987e 1186
mbed_official 610:813dcc80987e 1187 /**
mbed_official 610:813dcc80987e 1188 * @}
mbed_official 610:813dcc80987e 1189 */
mbed_official 610:813dcc80987e 1190
mbed_official 610:813dcc80987e 1191 /**
mbed_official 610:813dcc80987e 1192 * @}
mbed_official 610:813dcc80987e 1193 */
mbed_official 610:813dcc80987e 1194
mbed_official 610:813dcc80987e 1195 #endif /* defined(STM32L485xx) || defined(STM32L486xx) */
mbed_official 610:813dcc80987e 1196
mbed_official 610:813dcc80987e 1197 #endif /* HAL_CRYP_MODULE_ENABLED */
mbed_official 610:813dcc80987e 1198
mbed_official 610:813dcc80987e 1199 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/