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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

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

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:65be27845400 1 /**
AnnaBridge 172:65be27845400 2 ******************************************************************************
AnnaBridge 172:65be27845400 3 * @file stm32h7xx_hal_hash.h
AnnaBridge 172:65be27845400 4 * @author MCD Application Team
AnnaBridge 172:65be27845400 5 * @brief Header file of HASH HAL module.
AnnaBridge 172:65be27845400 6 ******************************************************************************
AnnaBridge 172:65be27845400 7 * @attention
AnnaBridge 172:65be27845400 8 *
AnnaBridge 172:65be27845400 9 * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
AnnaBridge 172:65be27845400 10 * All rights reserved.</center></h2>
AnnaBridge 172:65be27845400 11 *
AnnaBridge 172:65be27845400 12 * This software component is licensed by ST under BSD 3-Clause license,
AnnaBridge 172:65be27845400 13 * the "License"; You may not use this file except in compliance with the
AnnaBridge 172:65be27845400 14 * License. You may obtain a copy of the License at:
AnnaBridge 172:65be27845400 15 * opensource.org/licenses/BSD-3-Clause
AnnaBridge 172:65be27845400 16 *
AnnaBridge 172:65be27845400 17 ******************************************************************************
AnnaBridge 172:65be27845400 18 */
AnnaBridge 172:65be27845400 19
AnnaBridge 172:65be27845400 20 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 172:65be27845400 21 #ifndef STM32H7xx_HAL_HASH_H
AnnaBridge 172:65be27845400 22 #define STM32H7xx_HAL_HASH_H
AnnaBridge 172:65be27845400 23
AnnaBridge 172:65be27845400 24 #ifdef __cplusplus
AnnaBridge 172:65be27845400 25 extern "C" {
AnnaBridge 172:65be27845400 26 #endif
AnnaBridge 172:65be27845400 27
AnnaBridge 172:65be27845400 28 /* Includes ------------------------------------------------------------------*/
AnnaBridge 172:65be27845400 29 #include "stm32h7xx_hal_def.h"
AnnaBridge 172:65be27845400 30
AnnaBridge 172:65be27845400 31 /** @addtogroup STM32H7xx_HAL_Driver
AnnaBridge 172:65be27845400 32 * @{
AnnaBridge 172:65be27845400 33 */
AnnaBridge 172:65be27845400 34 #if defined (HASH)
AnnaBridge 172:65be27845400 35 /** @addtogroup HASH
AnnaBridge 172:65be27845400 36 * @{
AnnaBridge 172:65be27845400 37 */
AnnaBridge 172:65be27845400 38
AnnaBridge 172:65be27845400 39 /* Exported types ------------------------------------------------------------*/
AnnaBridge 172:65be27845400 40 /** @defgroup HASH_Exported_Types HASH Exported Types
AnnaBridge 172:65be27845400 41 * @{
AnnaBridge 172:65be27845400 42 */
AnnaBridge 172:65be27845400 43
AnnaBridge 172:65be27845400 44 /**
AnnaBridge 172:65be27845400 45 * @brief HASH Configuration Structure definition
AnnaBridge 172:65be27845400 46 */
AnnaBridge 172:65be27845400 47 typedef struct
AnnaBridge 172:65be27845400 48 {
AnnaBridge 172:65be27845400 49 uint32_t DataType; /*!< 32-bit data, 16-bit data, 8-bit data or 1-bit data.
AnnaBridge 172:65be27845400 50 This parameter can be a value of @ref HASH_Data_Type. */
AnnaBridge 172:65be27845400 51
AnnaBridge 172:65be27845400 52 uint32_t KeySize; /*!< The key size is used only in HMAC operation. */
AnnaBridge 172:65be27845400 53
AnnaBridge 172:65be27845400 54 uint8_t* pKey; /*!< The key is used only in HMAC operation. */
AnnaBridge 172:65be27845400 55
AnnaBridge 172:65be27845400 56 } HASH_InitTypeDef;
AnnaBridge 172:65be27845400 57
AnnaBridge 172:65be27845400 58 /**
AnnaBridge 172:65be27845400 59 * @brief HAL State structures definition
AnnaBridge 172:65be27845400 60 */
AnnaBridge 172:65be27845400 61 typedef enum
AnnaBridge 172:65be27845400 62 {
AnnaBridge 172:65be27845400 63 HAL_HASH_STATE_RESET = 0x00U, /*!< Peripheral is not initialized */
AnnaBridge 172:65be27845400 64 HAL_HASH_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */
AnnaBridge 172:65be27845400 65 HAL_HASH_STATE_BUSY = 0x02U, /*!< Processing (hashing) is ongoing */
AnnaBridge 172:65be27845400 66 HAL_HASH_STATE_TIMEOUT = 0x06U, /*!< Timeout state */
AnnaBridge 172:65be27845400 67 HAL_HASH_STATE_ERROR = 0x07U, /*!< Error state */
AnnaBridge 172:65be27845400 68 HAL_HASH_STATE_SUSPENDED = 0x08U /*!< Suspended state */
AnnaBridge 172:65be27845400 69 }HAL_HASH_StateTypeDef;
AnnaBridge 172:65be27845400 70
AnnaBridge 172:65be27845400 71 /**
AnnaBridge 172:65be27845400 72 * @brief HAL phase structures definition
AnnaBridge 172:65be27845400 73 */
AnnaBridge 172:65be27845400 74 typedef enum
AnnaBridge 172:65be27845400 75 {
AnnaBridge 172:65be27845400 76 HAL_HASH_PHASE_READY = 0x01U, /*!< HASH peripheral is ready to start */
AnnaBridge 172:65be27845400 77 HAL_HASH_PHASE_PROCESS = 0x02U, /*!< HASH peripheral is in HASH processing phase */
AnnaBridge 172:65be27845400 78 HAL_HASH_PHASE_HMAC_STEP_1 = 0x03U, /*!< HASH peripheral is in HMAC step 1 processing phase
AnnaBridge 172:65be27845400 79 (step 1 consists in entering the inner hash function key) */
AnnaBridge 172:65be27845400 80 HAL_HASH_PHASE_HMAC_STEP_2 = 0x04U, /*!< HASH peripheral is in HMAC step 2 processing phase
AnnaBridge 172:65be27845400 81 (step 2 consists in entering the message text) */
AnnaBridge 172:65be27845400 82 HAL_HASH_PHASE_HMAC_STEP_3 = 0x05U /*!< HASH peripheral is in HMAC step 3 processing phase
AnnaBridge 172:65be27845400 83 (step 3 consists in entering the outer hash function key) */
AnnaBridge 172:65be27845400 84 }HAL_HASH_PhaseTypeDef;
AnnaBridge 172:65be27845400 85
AnnaBridge 172:65be27845400 86 /**
AnnaBridge 172:65be27845400 87 * @brief HAL HASH mode suspend definitions
AnnaBridge 172:65be27845400 88 */
AnnaBridge 172:65be27845400 89 typedef enum
AnnaBridge 172:65be27845400 90 {
AnnaBridge 172:65be27845400 91 HAL_HASH_SUSPEND_NONE = 0x00U, /*!< HASH peripheral suspension not requested */
AnnaBridge 172:65be27845400 92 HAL_HASH_SUSPEND = 0x01U /*!< HASH peripheral suspension is requested */
AnnaBridge 172:65be27845400 93 }HAL_HASH_SuspendTypeDef;
AnnaBridge 172:65be27845400 94
AnnaBridge 172:65be27845400 95 #if (USE_HAL_HASH_REGISTER_CALLBACKS == 1U)
AnnaBridge 172:65be27845400 96 /**
AnnaBridge 172:65be27845400 97 * @brief HAL HASH common Callback ID enumeration definition
AnnaBridge 172:65be27845400 98 */
AnnaBridge 172:65be27845400 99 typedef enum
AnnaBridge 172:65be27845400 100 {
AnnaBridge 172:65be27845400 101 HAL_HASH_MSPINIT_CB_ID = 0x00U, /*!< HASH MspInit callback ID */
AnnaBridge 172:65be27845400 102 HAL_HASH_MSPDEINIT_CB_ID = 0x01U, /*!< HASH MspDeInit callback ID */
AnnaBridge 172:65be27845400 103 HAL_HASH_INPUTCPLT_CB_ID = 0x02U, /*!< HASH input completion callback ID */
AnnaBridge 172:65be27845400 104 HAL_HASH_DGSTCPLT_CB_ID = 0x03U, /*!< HASH digest computation completion callback ID */
AnnaBridge 172:65be27845400 105 HAL_HASH_ERROR_CB_ID = 0x04U, /*!< HASH error callback ID */
AnnaBridge 172:65be27845400 106 }HAL_HASH_CallbackIDTypeDef;
AnnaBridge 172:65be27845400 107 #endif /* USE_HAL_HASH_REGISTER_CALLBACKS */
AnnaBridge 172:65be27845400 108
AnnaBridge 172:65be27845400 109
AnnaBridge 172:65be27845400 110 /**
AnnaBridge 172:65be27845400 111 * @brief HASH Handle Structure definition
AnnaBridge 172:65be27845400 112 */
AnnaBridge 172:65be27845400 113 #if (USE_HAL_HASH_REGISTER_CALLBACKS == 1)
AnnaBridge 172:65be27845400 114 typedef struct __HASH_HandleTypeDef
AnnaBridge 172:65be27845400 115 #else
AnnaBridge 172:65be27845400 116 typedef struct
AnnaBridge 172:65be27845400 117 #endif /* (USE_HAL_HASH_REGISTER_CALLBACKS) */
AnnaBridge 172:65be27845400 118 {
AnnaBridge 172:65be27845400 119 HASH_InitTypeDef Init; /*!< HASH required parameters */
AnnaBridge 172:65be27845400 120
AnnaBridge 172:65be27845400 121 uint8_t *pHashInBuffPtr; /*!< Pointer to input buffer */
AnnaBridge 172:65be27845400 122
AnnaBridge 172:65be27845400 123 uint8_t *pHashOutBuffPtr; /*!< Pointer to output buffer (digest) */
AnnaBridge 172:65be27845400 124
AnnaBridge 172:65be27845400 125 uint8_t *pHashKeyBuffPtr; /*!< Pointer to key buffer (HMAC only) */
AnnaBridge 172:65be27845400 126
AnnaBridge 172:65be27845400 127 uint8_t *pHashMsgBuffPtr; /*!< Pointer to message buffer (HMAC only) */
AnnaBridge 172:65be27845400 128
AnnaBridge 172:65be27845400 129 uint32_t HashBuffSize; /*!< Size of buffer to be processed */
AnnaBridge 172:65be27845400 130
AnnaBridge 172:65be27845400 131 __IO uint32_t HashInCount; /*!< Counter of inputted data */
AnnaBridge 172:65be27845400 132
AnnaBridge 172:65be27845400 133 __IO uint32_t HashITCounter; /*!< Counter of issued interrupts */
AnnaBridge 172:65be27845400 134
AnnaBridge 172:65be27845400 135 __IO uint32_t HashKeyCount; /*!< Counter for Key inputted data (HMAC only) */
AnnaBridge 172:65be27845400 136
AnnaBridge 172:65be27845400 137 HAL_StatusTypeDef Status; /*!< HASH peripheral status */
AnnaBridge 172:65be27845400 138
AnnaBridge 172:65be27845400 139 HAL_HASH_PhaseTypeDef Phase; /*!< HASH peripheral phase */
AnnaBridge 172:65be27845400 140
AnnaBridge 172:65be27845400 141 DMA_HandleTypeDef *hdmain; /*!< HASH In DMA Handle parameters */
AnnaBridge 172:65be27845400 142
AnnaBridge 172:65be27845400 143 HAL_LockTypeDef Lock; /*!< Locking object */
AnnaBridge 172:65be27845400 144
AnnaBridge 172:65be27845400 145 __IO HAL_HASH_StateTypeDef State; /*!< HASH peripheral state */
AnnaBridge 172:65be27845400 146
AnnaBridge 172:65be27845400 147 HAL_HASH_SuspendTypeDef SuspendRequest; /*!< HASH peripheral suspension request flag */
AnnaBridge 172:65be27845400 148
AnnaBridge 172:65be27845400 149 FlagStatus DigestCalculationDisable; /*!< Digest calculation phase skip (MDMAT bit control) for multi-buffers DMA-based HMAC computation */
AnnaBridge 172:65be27845400 150
AnnaBridge 172:65be27845400 151 __IO uint32_t NbWordsAlreadyPushed; /*!< Numbers of words already pushed in FIFO before inputting new block */
AnnaBridge 172:65be27845400 152
AnnaBridge 172:65be27845400 153 __IO uint32_t ErrorCode; /*!< HASH Error code */
AnnaBridge 172:65be27845400 154
AnnaBridge 172:65be27845400 155 #if (USE_HAL_HASH_REGISTER_CALLBACKS == 1)
AnnaBridge 172:65be27845400 156 void (* InCpltCallback)( struct __HASH_HandleTypeDef * hhash); /*!< HASH input completion callback */
AnnaBridge 172:65be27845400 157
AnnaBridge 172:65be27845400 158 void (* DgstCpltCallback)( struct __HASH_HandleTypeDef * hhash); /*!< HASH digest computation completion callback */
AnnaBridge 172:65be27845400 159
AnnaBridge 172:65be27845400 160 void (* ErrorCallback)( struct __HASH_HandleTypeDef * hhash); /*!< HASH error callback */
AnnaBridge 172:65be27845400 161
AnnaBridge 172:65be27845400 162 void (* MspInitCallback)( struct __HASH_HandleTypeDef * hhash); /*!< HASH Msp Init callback */
AnnaBridge 172:65be27845400 163
AnnaBridge 172:65be27845400 164 void (* MspDeInitCallback)( struct __HASH_HandleTypeDef * hhash); /*!< HASH Msp DeInit callback */
AnnaBridge 172:65be27845400 165
AnnaBridge 172:65be27845400 166 #endif /* (USE_HAL_HASH_REGISTER_CALLBACKS) */
AnnaBridge 172:65be27845400 167 } HASH_HandleTypeDef;
AnnaBridge 172:65be27845400 168
AnnaBridge 172:65be27845400 169 #if (USE_HAL_HASH_REGISTER_CALLBACKS == 1U)
AnnaBridge 172:65be27845400 170 /**
AnnaBridge 172:65be27845400 171 * @brief HAL HASH Callback pointer definition
AnnaBridge 172:65be27845400 172 */
AnnaBridge 172:65be27845400 173 typedef void (*pHASH_CallbackTypeDef)(HASH_HandleTypeDef * hhash); /*!< pointer to a HASH common callback functions */
AnnaBridge 172:65be27845400 174 #endif /* USE_HAL_HASH_REGISTER_CALLBACKS */
AnnaBridge 172:65be27845400 175
AnnaBridge 172:65be27845400 176 /**
AnnaBridge 172:65be27845400 177 * @}
AnnaBridge 172:65be27845400 178 */
AnnaBridge 172:65be27845400 179
AnnaBridge 172:65be27845400 180 /* Exported constants --------------------------------------------------------*/
AnnaBridge 172:65be27845400 181
AnnaBridge 172:65be27845400 182 /** @defgroup HASH_Exported_Constants HASH Exported Constants
AnnaBridge 172:65be27845400 183 * @{
AnnaBridge 172:65be27845400 184 */
AnnaBridge 172:65be27845400 185
AnnaBridge 172:65be27845400 186 /** @defgroup HASH_Algo_Selection HASH algorithm selection
AnnaBridge 172:65be27845400 187 * @{
AnnaBridge 172:65be27845400 188 */
AnnaBridge 172:65be27845400 189 #define HASH_ALGOSELECTION_SHA1 0x00000000U /*!< HASH function is SHA1 */
AnnaBridge 172:65be27845400 190 #define HASH_ALGOSELECTION_MD5 HASH_CR_ALGO_0 /*!< HASH function is MD5 */
AnnaBridge 172:65be27845400 191 #define HASH_ALGOSELECTION_SHA224 HASH_CR_ALGO_1 /*!< HASH function is SHA224 */
AnnaBridge 172:65be27845400 192 #define HASH_ALGOSELECTION_SHA256 HASH_CR_ALGO /*!< HASH function is SHA256 */
AnnaBridge 172:65be27845400 193 /**
AnnaBridge 172:65be27845400 194 * @}
AnnaBridge 172:65be27845400 195 */
AnnaBridge 172:65be27845400 196
AnnaBridge 172:65be27845400 197 /** @defgroup HASH_Algorithm_Mode HASH algorithm mode
AnnaBridge 172:65be27845400 198 * @{
AnnaBridge 172:65be27845400 199 */
AnnaBridge 172:65be27845400 200 #define HASH_ALGOMODE_HASH 0x00000000U /*!< Algorithm is HASH */
AnnaBridge 172:65be27845400 201 #define HASH_ALGOMODE_HMAC HASH_CR_MODE /*!< Algorithm is HMAC */
AnnaBridge 172:65be27845400 202 /**
AnnaBridge 172:65be27845400 203 * @}
AnnaBridge 172:65be27845400 204 */
AnnaBridge 172:65be27845400 205
AnnaBridge 172:65be27845400 206 /** @defgroup HASH_Data_Type HASH input data type
AnnaBridge 172:65be27845400 207 * @{
AnnaBridge 172:65be27845400 208 */
AnnaBridge 172:65be27845400 209 #define HASH_DATATYPE_32B 0x00000000U /*!< 32-bit data. No swapping */
AnnaBridge 172:65be27845400 210 #define HASH_DATATYPE_16B HASH_CR_DATATYPE_0 /*!< 16-bit data. Each half word is swapped */
AnnaBridge 172:65be27845400 211 #define HASH_DATATYPE_8B HASH_CR_DATATYPE_1 /*!< 8-bit data. All bytes are swapped */
AnnaBridge 172:65be27845400 212 #define HASH_DATATYPE_1B HASH_CR_DATATYPE /*!< 1-bit data. In the word all bits are swapped */
AnnaBridge 172:65be27845400 213 /**
AnnaBridge 172:65be27845400 214 * @}
AnnaBridge 172:65be27845400 215 */
AnnaBridge 172:65be27845400 216
AnnaBridge 172:65be27845400 217 /** @defgroup HASH_HMAC_Long_key_only_for_HMAC_mode HMAC key length type
AnnaBridge 172:65be27845400 218 * @{
AnnaBridge 172:65be27845400 219 */
AnnaBridge 172:65be27845400 220 #define HASH_HMAC_KEYTYPE_SHORTKEY 0x00000000U /*!< HMAC Key size is <= 64 bytes */
AnnaBridge 172:65be27845400 221 #define HASH_HMAC_KEYTYPE_LONGKEY HASH_CR_LKEY /*!< HMAC Key size is > 64 bytes */
AnnaBridge 172:65be27845400 222 /**
AnnaBridge 172:65be27845400 223 * @}
AnnaBridge 172:65be27845400 224 */
AnnaBridge 172:65be27845400 225
AnnaBridge 172:65be27845400 226 /** @defgroup HASH_flags_definition HASH flags definitions
AnnaBridge 172:65be27845400 227 * @{
AnnaBridge 172:65be27845400 228 */
AnnaBridge 172:65be27845400 229 #define HASH_FLAG_DINIS HASH_SR_DINIS /*!< 16 locations are free in the DIN : a new block can be entered in the IP */
AnnaBridge 172:65be27845400 230 #define HASH_FLAG_DCIS HASH_SR_DCIS /*!< Digest calculation complete */
AnnaBridge 172:65be27845400 231 #define HASH_FLAG_DMAS HASH_SR_DMAS /*!< DMA interface is enabled (DMAE=1) or a transfer is ongoing */
AnnaBridge 172:65be27845400 232 #define HASH_FLAG_BUSY HASH_SR_BUSY /*!< The hash core is Busy, processing a block of data */
AnnaBridge 172:65be27845400 233 #define HASH_FLAG_DINNE HASH_CR_DINNE /*!< DIN not empty : the input buffer contains at least one word of data */
AnnaBridge 172:65be27845400 234
AnnaBridge 172:65be27845400 235 /**
AnnaBridge 172:65be27845400 236 * @}
AnnaBridge 172:65be27845400 237 */
AnnaBridge 172:65be27845400 238
AnnaBridge 172:65be27845400 239 /** @defgroup HASH_interrupts_definition HASH interrupts definitions
AnnaBridge 172:65be27845400 240 * @{
AnnaBridge 172:65be27845400 241 */
AnnaBridge 172:65be27845400 242 #define HASH_IT_DINI HASH_IMR_DINIE /*!< A new block can be entered into the input buffer (DIN) */
AnnaBridge 172:65be27845400 243 #define HASH_IT_DCI HASH_IMR_DCIE /*!< Digest calculation complete */
AnnaBridge 172:65be27845400 244
AnnaBridge 172:65be27845400 245 /**
AnnaBridge 172:65be27845400 246 * @}
AnnaBridge 172:65be27845400 247 */
AnnaBridge 172:65be27845400 248 /** @defgroup HASH_alias HASH API alias
AnnaBridge 172:65be27845400 249 * @{
AnnaBridge 172:65be27845400 250 */
AnnaBridge 172:65be27845400 251 #define HAL_HASHEx_IRQHandler HAL_HASH_IRQHandler /*!< HAL_HASHEx_IRQHandler() is re-directed to HAL_HASH_IRQHandler() for compatibility with legacy code */
AnnaBridge 172:65be27845400 252 /**
AnnaBridge 172:65be27845400 253 * @}
AnnaBridge 172:65be27845400 254 */
AnnaBridge 172:65be27845400 255
AnnaBridge 172:65be27845400 256 /** @defgroup HASH_Error_Definition HASH Error Definition
AnnaBridge 172:65be27845400 257 * @{
AnnaBridge 172:65be27845400 258 */
AnnaBridge 172:65be27845400 259 #define HAL_HASH_ERROR_NONE 0x00000000U /*!< No error */
AnnaBridge 172:65be27845400 260 #define HAL_HASH_ERROR_IT 0x00000001U /*!< IT-based process error */
AnnaBridge 172:65be27845400 261 #define HAL_HASH_ERROR_DMA 0x00000002U /*!< DMA-based process error */
AnnaBridge 172:65be27845400 262 #if (USE_HAL_HASH_REGISTER_CALLBACKS == 1U)
AnnaBridge 172:65be27845400 263 #define HAL_HASH_ERROR_INVALID_CALLBACK 0x00000004U /*!< Invalid Callback error */
AnnaBridge 172:65be27845400 264 #endif /* USE_HAL_HASH_REGISTER_CALLBACKS */
AnnaBridge 172:65be27845400 265 /**
AnnaBridge 172:65be27845400 266 * @}
AnnaBridge 172:65be27845400 267 */
AnnaBridge 172:65be27845400 268
AnnaBridge 172:65be27845400 269 /**
AnnaBridge 172:65be27845400 270 * @}
AnnaBridge 172:65be27845400 271 */
AnnaBridge 172:65be27845400 272
AnnaBridge 172:65be27845400 273 /* Exported macros -----------------------------------------------------------*/
AnnaBridge 172:65be27845400 274 /** @defgroup HASH_Exported_Macros HASH Exported Macros
AnnaBridge 172:65be27845400 275 * @{
AnnaBridge 172:65be27845400 276 */
AnnaBridge 172:65be27845400 277
AnnaBridge 172:65be27845400 278 /** @brief Check whether or not the specified HASH flag is set.
AnnaBridge 172:65be27845400 279 * @param __FLAG__: specifies the flag to check.
AnnaBridge 172:65be27845400 280 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 281 * @arg @ref HASH_FLAG_DINIS A new block can be entered into the input buffer.
AnnaBridge 172:65be27845400 282 * @arg @ref HASH_FLAG_DCIS Digest calculation complete.
AnnaBridge 172:65be27845400 283 * @arg @ref HASH_FLAG_DMAS DMA interface is enabled (DMAE=1) or a transfer is ongoing.
AnnaBridge 172:65be27845400 284 * @arg @ref HASH_FLAG_BUSY The hash core is Busy : processing a block of data.
AnnaBridge 172:65be27845400 285 * @arg @ref HASH_FLAG_DINNE DIN not empty : the input buffer contains at least one word of data.
AnnaBridge 172:65be27845400 286 * @retval The new state of __FLAG__ (TRUE or FALSE).
AnnaBridge 172:65be27845400 287 */
AnnaBridge 172:65be27845400 288 #define __HAL_HASH_GET_FLAG(__FLAG__) (((__FLAG__) > 8U) ? \
AnnaBridge 172:65be27845400 289 ((HASH->CR & (__FLAG__)) == (__FLAG__)) :\
AnnaBridge 172:65be27845400 290 ((HASH->SR & (__FLAG__)) == (__FLAG__)) )
AnnaBridge 172:65be27845400 291
AnnaBridge 172:65be27845400 292
AnnaBridge 172:65be27845400 293 /** @brief Clear the specified HASH flag.
AnnaBridge 172:65be27845400 294 * @param __FLAG__: specifies the flag to clear.
AnnaBridge 172:65be27845400 295 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 296 * @arg @ref HASH_FLAG_DINIS A new block can be entered into the input buffer.
AnnaBridge 172:65be27845400 297 * @arg @ref HASH_FLAG_DCIS Digest calculation complete
AnnaBridge 172:65be27845400 298 * @retval None
AnnaBridge 172:65be27845400 299 */
AnnaBridge 172:65be27845400 300 #define __HAL_HASH_CLEAR_FLAG(__FLAG__) CLEAR_BIT(HASH->SR, (__FLAG__))
AnnaBridge 172:65be27845400 301
AnnaBridge 172:65be27845400 302
AnnaBridge 172:65be27845400 303 /** @brief Enable the specified HASH interrupt.
AnnaBridge 172:65be27845400 304 * @param __INTERRUPT__: specifies the HASH interrupt source to enable.
AnnaBridge 172:65be27845400 305 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 306 * @arg @ref HASH_IT_DINI A new block can be entered into the input buffer (DIN)
AnnaBridge 172:65be27845400 307 * @arg @ref HASH_IT_DCI Digest calculation complete
AnnaBridge 172:65be27845400 308 * @retval None
AnnaBridge 172:65be27845400 309 */
AnnaBridge 172:65be27845400 310 #define __HAL_HASH_ENABLE_IT(__INTERRUPT__) SET_BIT(HASH->IMR, (__INTERRUPT__))
AnnaBridge 172:65be27845400 311
AnnaBridge 172:65be27845400 312 /** @brief Disable the specified HASH interrupt.
AnnaBridge 172:65be27845400 313 * @param __INTERRUPT__: specifies the HASH interrupt source to disable.
AnnaBridge 172:65be27845400 314 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 315 * @arg @ref HASH_IT_DINI A new block can be entered into the input buffer (DIN)
AnnaBridge 172:65be27845400 316 * @arg @ref HASH_IT_DCI Digest calculation complete
AnnaBridge 172:65be27845400 317 * @retval None
AnnaBridge 172:65be27845400 318 */
AnnaBridge 172:65be27845400 319 #define __HAL_HASH_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(HASH->IMR, (__INTERRUPT__))
AnnaBridge 172:65be27845400 320
AnnaBridge 172:65be27845400 321 /** @brief Reset HASH handle state.
AnnaBridge 172:65be27845400 322 * @param __HANDLE__: HASH handle.
AnnaBridge 172:65be27845400 323 * @retval None
AnnaBridge 172:65be27845400 324 */
AnnaBridge 172:65be27845400 325
AnnaBridge 172:65be27845400 326 #if (USE_HAL_HASH_REGISTER_CALLBACKS == 1)
AnnaBridge 172:65be27845400 327 #define __HAL_HASH_RESET_HANDLE_STATE(__HANDLE__) do{\
AnnaBridge 172:65be27845400 328 (__HANDLE__)->State = HAL_HASH_STATE_RESET;\
AnnaBridge 172:65be27845400 329 (__HANDLE__)->MspInitCallback = NULL; \
AnnaBridge 172:65be27845400 330 (__HANDLE__)->MspDeInitCallback = NULL; \
AnnaBridge 172:65be27845400 331 }while(0)
AnnaBridge 172:65be27845400 332 #else
AnnaBridge 172:65be27845400 333 #define __HAL_HASH_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_HASH_STATE_RESET)
AnnaBridge 172:65be27845400 334 #endif /* USE_HAL_HASH_REGISTER_CALLBACKS */
AnnaBridge 172:65be27845400 335
AnnaBridge 172:65be27845400 336
AnnaBridge 172:65be27845400 337 /** @brief Reset HASH handle status.
AnnaBridge 172:65be27845400 338 * @param __HANDLE__: HASH handle.
AnnaBridge 172:65be27845400 339 * @retval None
AnnaBridge 172:65be27845400 340 */
AnnaBridge 172:65be27845400 341 #define __HAL_HASH_RESET_HANDLE_STATUS(__HANDLE__) ((__HANDLE__)->Status = HAL_OK)
AnnaBridge 172:65be27845400 342
AnnaBridge 172:65be27845400 343 /**
AnnaBridge 172:65be27845400 344 * @brief Enable the multi-buffer DMA transfer mode.
AnnaBridge 172:65be27845400 345 * @note This bit is set when hashing large files when multiple DMA transfers are needed.
AnnaBridge 172:65be27845400 346 * @retval None
AnnaBridge 172:65be27845400 347 */
AnnaBridge 172:65be27845400 348 #define __HAL_HASH_SET_MDMAT() SET_BIT(HASH->CR, HASH_CR_MDMAT)
AnnaBridge 172:65be27845400 349
AnnaBridge 172:65be27845400 350 /**
AnnaBridge 172:65be27845400 351 * @brief Disable the multi-buffer DMA transfer mode.
AnnaBridge 172:65be27845400 352 * @retval None
AnnaBridge 172:65be27845400 353 */
AnnaBridge 172:65be27845400 354 #define __HAL_HASH_RESET_MDMAT() CLEAR_BIT(HASH->CR, HASH_CR_MDMAT)
AnnaBridge 172:65be27845400 355
AnnaBridge 172:65be27845400 356
AnnaBridge 172:65be27845400 357 /**
AnnaBridge 172:65be27845400 358 * @brief Start the digest computation.
AnnaBridge 172:65be27845400 359 * @retval None
AnnaBridge 172:65be27845400 360 */
AnnaBridge 172:65be27845400 361 #define __HAL_HASH_START_DIGEST() SET_BIT(HASH->STR, HASH_STR_DCAL)
AnnaBridge 172:65be27845400 362
AnnaBridge 172:65be27845400 363 /**
AnnaBridge 172:65be27845400 364 * @brief Set the number of valid bits in the last word written in data register DIN.
AnnaBridge 172:65be27845400 365 * @param __SIZE__: size in bytes of last data written in Data register.
AnnaBridge 172:65be27845400 366 * @retval None
AnnaBridge 172:65be27845400 367 */
AnnaBridge 172:65be27845400 368 #define __HAL_HASH_SET_NBVALIDBITS(__SIZE__) MODIFY_REG(HASH->STR, HASH_STR_NBLW, 8U * ((__SIZE__) % 4U))
AnnaBridge 172:65be27845400 369
AnnaBridge 172:65be27845400 370 /**
AnnaBridge 172:65be27845400 371 * @brief Reset the HASH core.
AnnaBridge 172:65be27845400 372 * @retval None
AnnaBridge 172:65be27845400 373 */
AnnaBridge 172:65be27845400 374 #define __HAL_HASH_INIT() SET_BIT(HASH->CR, HASH_CR_INIT)
AnnaBridge 172:65be27845400 375
AnnaBridge 172:65be27845400 376 /**
AnnaBridge 172:65be27845400 377 * @}
AnnaBridge 172:65be27845400 378 */
AnnaBridge 172:65be27845400 379
AnnaBridge 172:65be27845400 380
AnnaBridge 172:65be27845400 381 /* Private macros --------------------------------------------------------*/
AnnaBridge 172:65be27845400 382 /** @defgroup HASH_Private_Macros HASH Private Macros
AnnaBridge 172:65be27845400 383 * @{
AnnaBridge 172:65be27845400 384 */
AnnaBridge 172:65be27845400 385 /**
AnnaBridge 172:65be27845400 386 * @brief Return digest length in bytes.
AnnaBridge 172:65be27845400 387 * @retval Digest length
AnnaBridge 172:65be27845400 388 */
AnnaBridge 172:65be27845400 389 #define HASH_DIGEST_LENGTH() ((READ_BIT(HASH->CR, HASH_CR_ALGO) == HASH_ALGOSELECTION_SHA1) ? 20U : \
AnnaBridge 172:65be27845400 390 ((READ_BIT(HASH->CR, HASH_CR_ALGO) == HASH_ALGOSELECTION_SHA224) ? 28U : \
AnnaBridge 172:65be27845400 391 ((READ_BIT(HASH->CR, HASH_CR_ALGO) == HASH_ALGOSELECTION_SHA256) ? 32U : 16U ) ) )
AnnaBridge 172:65be27845400 392 /**
AnnaBridge 172:65be27845400 393 * @brief Return number of words already pushed in the FIFO.
AnnaBridge 172:65be27845400 394 * @retval Number of words already pushed in the FIFO
AnnaBridge 172:65be27845400 395 */
AnnaBridge 172:65be27845400 396 #define HASH_NBW_PUSHED() ((READ_BIT(HASH->CR, HASH_CR_NBW)) >> 8U)
AnnaBridge 172:65be27845400 397
AnnaBridge 172:65be27845400 398 /**
AnnaBridge 172:65be27845400 399 * @brief Ensure that HASH input data type is valid.
AnnaBridge 172:65be27845400 400 * @param __DATATYPE__: HASH input data type.
AnnaBridge 172:65be27845400 401 * @retval SET (__DATATYPE__ is valid) or RESET (__DATATYPE__ is invalid)
AnnaBridge 172:65be27845400 402 */
AnnaBridge 172:65be27845400 403 #define IS_HASH_DATATYPE(__DATATYPE__) (((__DATATYPE__) == HASH_DATATYPE_32B)|| \
AnnaBridge 172:65be27845400 404 ((__DATATYPE__) == HASH_DATATYPE_16B)|| \
AnnaBridge 172:65be27845400 405 ((__DATATYPE__) == HASH_DATATYPE_8B) || \
AnnaBridge 172:65be27845400 406 ((__DATATYPE__) == HASH_DATATYPE_1B))
AnnaBridge 172:65be27845400 407
AnnaBridge 172:65be27845400 408
AnnaBridge 172:65be27845400 409
AnnaBridge 172:65be27845400 410 /**
AnnaBridge 172:65be27845400 411 * @brief Ensure that input data buffer size is valid for multi-buffer HASH
AnnaBridge 172:65be27845400 412 * processing in polling mode.
AnnaBridge 172:65be27845400 413 * @note This check is valid only for multi-buffer HASH processing in polling mode.
AnnaBridge 172:65be27845400 414 * @param __SIZE__: input data buffer size.
AnnaBridge 172:65be27845400 415 * @retval SET (__SIZE__ is valid) or RESET (__SIZE__ is invalid)
AnnaBridge 172:65be27845400 416 */
AnnaBridge 172:65be27845400 417 #define IS_HASH_POLLING_MULTIBUFFER_SIZE(__SIZE__) (((__SIZE__) % 4U) == 0U)
AnnaBridge 172:65be27845400 418 /**
AnnaBridge 172:65be27845400 419 * @brief Ensure that input data buffer size is valid for multi-buffer HASH
AnnaBridge 172:65be27845400 420 * processing in DMA mode.
AnnaBridge 172:65be27845400 421 * @note This check is valid only for multi-buffer HASH processing in DMA mode.
AnnaBridge 172:65be27845400 422 * @param __SIZE__: input data buffer size.
AnnaBridge 172:65be27845400 423 * @retval SET (__SIZE__ is valid) or RESET (__SIZE__ is invalid)
AnnaBridge 172:65be27845400 424 */
AnnaBridge 172:65be27845400 425 #define IS_HASH_DMA_MULTIBUFFER_SIZE(__SIZE__) ((READ_BIT(HASH->CR, HASH_CR_MDMAT) == 0U) || (((__SIZE__) % 4U) == 0U))
AnnaBridge 172:65be27845400 426
AnnaBridge 172:65be27845400 427 /**
AnnaBridge 172:65be27845400 428 * @brief Ensure that input data buffer size is valid for multi-buffer HMAC
AnnaBridge 172:65be27845400 429 * processing in DMA mode.
AnnaBridge 172:65be27845400 430 * @note This check is valid only for multi-buffer HMAC processing in DMA mode.
AnnaBridge 172:65be27845400 431 * @param __HANDLE__: HASH handle.
AnnaBridge 172:65be27845400 432 * @param __SIZE__: input data buffer size.
AnnaBridge 172:65be27845400 433 * @retval SET (__SIZE__ is valid) or RESET (__SIZE__ is invalid)
AnnaBridge 172:65be27845400 434 */
AnnaBridge 172:65be27845400 435 #define IS_HMAC_DMA_MULTIBUFFER_SIZE(__HANDLE__,__SIZE__) ((((__HANDLE__)->DigestCalculationDisable) == RESET) || (((__SIZE__) % 4U) == 0U))
AnnaBridge 172:65be27845400 436 /**
AnnaBridge 172:65be27845400 437 * @brief Ensure that handle phase is set to HASH processing.
AnnaBridge 172:65be27845400 438 * @param __HANDLE__: HASH handle.
AnnaBridge 172:65be27845400 439 * @retval SET (handle phase is set to HASH processing) or RESET (handle phase is not set to HASH processing)
AnnaBridge 172:65be27845400 440 */
AnnaBridge 172:65be27845400 441 #define IS_HASH_PROCESSING(__HANDLE__) ((__HANDLE__)->Phase == HAL_HASH_PHASE_PROCESS)
AnnaBridge 172:65be27845400 442
AnnaBridge 172:65be27845400 443 /**
AnnaBridge 172:65be27845400 444 * @brief Ensure that handle phase is set to HMAC processing.
AnnaBridge 172:65be27845400 445 * @param __HANDLE__: HASH handle.
AnnaBridge 172:65be27845400 446 * @retval SET (handle phase is set to HMAC processing) or RESET (handle phase is not set to HMAC processing)
AnnaBridge 172:65be27845400 447 */
AnnaBridge 172:65be27845400 448 #define IS_HMAC_PROCESSING(__HANDLE__) (((__HANDLE__)->Phase == HAL_HASH_PHASE_HMAC_STEP_1) || \
AnnaBridge 172:65be27845400 449 ((__HANDLE__)->Phase == HAL_HASH_PHASE_HMAC_STEP_2) || \
AnnaBridge 172:65be27845400 450 ((__HANDLE__)->Phase == HAL_HASH_PHASE_HMAC_STEP_3))
AnnaBridge 172:65be27845400 451
AnnaBridge 172:65be27845400 452 /**
AnnaBridge 172:65be27845400 453 * @}
AnnaBridge 172:65be27845400 454 */
AnnaBridge 172:65be27845400 455
AnnaBridge 172:65be27845400 456 /* Include HASH HAL Extended module */
AnnaBridge 172:65be27845400 457 #include "stm32h7xx_hal_hash_ex.h"
AnnaBridge 172:65be27845400 458 /* Exported functions --------------------------------------------------------*/
AnnaBridge 172:65be27845400 459
AnnaBridge 172:65be27845400 460 /** @addtogroup HASH_Exported_Functions HASH Exported Functions
AnnaBridge 172:65be27845400 461 * @{
AnnaBridge 172:65be27845400 462 */
AnnaBridge 172:65be27845400 463
AnnaBridge 172:65be27845400 464 /** @addtogroup HASH_Exported_Functions_Group1 Initialization and de-initialization functions
AnnaBridge 172:65be27845400 465 * @{
AnnaBridge 172:65be27845400 466 */
AnnaBridge 172:65be27845400 467
AnnaBridge 172:65be27845400 468 /* Initialization/de-initialization methods **********************************/
AnnaBridge 172:65be27845400 469 HAL_StatusTypeDef HAL_HASH_Init(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 470 HAL_StatusTypeDef HAL_HASH_DeInit(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 471 void HAL_HASH_MspInit(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 472 void HAL_HASH_MspDeInit(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 473 void HAL_HASH_InCpltCallback(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 474 void HAL_HASH_DgstCpltCallback(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 475 void HAL_HASH_ErrorCallback(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 476 /* Callbacks Register/UnRegister functions ***********************************/
AnnaBridge 172:65be27845400 477 #if (USE_HAL_HASH_REGISTER_CALLBACKS == 1)
AnnaBridge 172:65be27845400 478 HAL_StatusTypeDef HAL_HASH_RegisterCallback(HASH_HandleTypeDef *hhash, HAL_HASH_CallbackIDTypeDef CallbackID, pHASH_CallbackTypeDef pCallback);
AnnaBridge 172:65be27845400 479 HAL_StatusTypeDef HAL_HASH_UnRegisterCallback(HASH_HandleTypeDef *hhash, HAL_HASH_CallbackIDTypeDef CallbackID);
AnnaBridge 172:65be27845400 480 #endif /* USE_HAL_HASH_REGISTER_CALLBACKS */
AnnaBridge 172:65be27845400 481
AnnaBridge 172:65be27845400 482
AnnaBridge 172:65be27845400 483 /**
AnnaBridge 172:65be27845400 484 * @}
AnnaBridge 172:65be27845400 485 */
AnnaBridge 172:65be27845400 486
AnnaBridge 172:65be27845400 487 /** @addtogroup HASH_Exported_Functions_Group2 HASH processing functions in polling mode
AnnaBridge 172:65be27845400 488 * @{
AnnaBridge 172:65be27845400 489 */
AnnaBridge 172:65be27845400 490
AnnaBridge 172:65be27845400 491
AnnaBridge 172:65be27845400 492 /* HASH processing using polling *********************************************/
AnnaBridge 172:65be27845400 493 HAL_StatusTypeDef HAL_HASH_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
AnnaBridge 172:65be27845400 494 HAL_StatusTypeDef HAL_HASH_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
AnnaBridge 172:65be27845400 495 HAL_StatusTypeDef HAL_HASH_MD5_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
AnnaBridge 172:65be27845400 496 HAL_StatusTypeDef HAL_HASH_SHA1_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
AnnaBridge 172:65be27845400 497
AnnaBridge 172:65be27845400 498 /**
AnnaBridge 172:65be27845400 499 * @}
AnnaBridge 172:65be27845400 500 */
AnnaBridge 172:65be27845400 501
AnnaBridge 172:65be27845400 502 /** @addtogroup HASH_Exported_Functions_Group3 HASH processing functions in interrupt mode
AnnaBridge 172:65be27845400 503 * @{
AnnaBridge 172:65be27845400 504 */
AnnaBridge 172:65be27845400 505
AnnaBridge 172:65be27845400 506 /* HASH processing using IT **************************************************/
AnnaBridge 172:65be27845400 507 HAL_StatusTypeDef HAL_HASH_SHA1_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer);
AnnaBridge 172:65be27845400 508 HAL_StatusTypeDef HAL_HASH_MD5_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer);
AnnaBridge 172:65be27845400 509 void HAL_HASH_IRQHandler(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 510 /**
AnnaBridge 172:65be27845400 511 * @}
AnnaBridge 172:65be27845400 512 */
AnnaBridge 172:65be27845400 513
AnnaBridge 172:65be27845400 514 /** @addtogroup HASH_Exported_Functions_Group4 HASH processing functions in DMA mode
AnnaBridge 172:65be27845400 515 * @{
AnnaBridge 172:65be27845400 516 */
AnnaBridge 172:65be27845400 517
AnnaBridge 172:65be27845400 518 /* HASH processing using DMA *************************************************/
AnnaBridge 172:65be27845400 519 HAL_StatusTypeDef HAL_HASH_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
AnnaBridge 172:65be27845400 520 HAL_StatusTypeDef HAL_HASH_SHA1_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout);
AnnaBridge 172:65be27845400 521 HAL_StatusTypeDef HAL_HASH_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
AnnaBridge 172:65be27845400 522 HAL_StatusTypeDef HAL_HASH_MD5_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout);
AnnaBridge 172:65be27845400 523
AnnaBridge 172:65be27845400 524 /**
AnnaBridge 172:65be27845400 525 * @}
AnnaBridge 172:65be27845400 526 */
AnnaBridge 172:65be27845400 527
AnnaBridge 172:65be27845400 528 /** @addtogroup HASH_Exported_Functions_Group5 HMAC processing functions in polling mode
AnnaBridge 172:65be27845400 529 * @{
AnnaBridge 172:65be27845400 530 */
AnnaBridge 172:65be27845400 531
AnnaBridge 172:65be27845400 532 /* HASH-MAC processing using polling *****************************************/
AnnaBridge 172:65be27845400 533 HAL_StatusTypeDef HAL_HMAC_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
AnnaBridge 172:65be27845400 534 HAL_StatusTypeDef HAL_HMAC_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
AnnaBridge 172:65be27845400 535
AnnaBridge 172:65be27845400 536 /**
AnnaBridge 172:65be27845400 537 * @}
AnnaBridge 172:65be27845400 538 */
AnnaBridge 172:65be27845400 539
AnnaBridge 172:65be27845400 540 /** @addtogroup HASH_Exported_Functions_Group6 HMAC processing functions in interrupt mode
AnnaBridge 172:65be27845400 541 * @{
AnnaBridge 172:65be27845400 542 */
AnnaBridge 172:65be27845400 543
AnnaBridge 172:65be27845400 544 HAL_StatusTypeDef HAL_HMAC_MD5_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer);
AnnaBridge 172:65be27845400 545 HAL_StatusTypeDef HAL_HMAC_SHA1_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer);
AnnaBridge 172:65be27845400 546
AnnaBridge 172:65be27845400 547 /**
AnnaBridge 172:65be27845400 548 * @}
AnnaBridge 172:65be27845400 549 */
AnnaBridge 172:65be27845400 550
AnnaBridge 172:65be27845400 551 /** @addtogroup HASH_Exported_Functions_Group7 HMAC processing functions in DMA mode
AnnaBridge 172:65be27845400 552 * @{
AnnaBridge 172:65be27845400 553 */
AnnaBridge 172:65be27845400 554
AnnaBridge 172:65be27845400 555 /* HASH-HMAC processing using DMA ********************************************/
AnnaBridge 172:65be27845400 556 HAL_StatusTypeDef HAL_HMAC_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
AnnaBridge 172:65be27845400 557 HAL_StatusTypeDef HAL_HMAC_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
AnnaBridge 172:65be27845400 558
AnnaBridge 172:65be27845400 559 /**
AnnaBridge 172:65be27845400 560 * @}
AnnaBridge 172:65be27845400 561 */
AnnaBridge 172:65be27845400 562
AnnaBridge 172:65be27845400 563 /** @addtogroup HASH_Exported_Functions_Group8 Peripheral states functions
AnnaBridge 172:65be27845400 564 * @{
AnnaBridge 172:65be27845400 565 */
AnnaBridge 172:65be27845400 566
AnnaBridge 172:65be27845400 567
AnnaBridge 172:65be27845400 568 /* Peripheral State methods **************************************************/
AnnaBridge 172:65be27845400 569 HAL_HASH_StateTypeDef HAL_HASH_GetState(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 570 HAL_StatusTypeDef HAL_HASH_GetStatus(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 571 void HAL_HASH_ContextSaving(HASH_HandleTypeDef *hhash, uint8_t* pMemBuffer);
AnnaBridge 172:65be27845400 572 void HAL_HASH_ContextRestoring(HASH_HandleTypeDef *hhash, uint8_t* pMemBuffer);
AnnaBridge 172:65be27845400 573 void HAL_HASH_SwFeed_ProcessSuspend(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 574 HAL_StatusTypeDef HAL_HASH_DMAFeed_ProcessSuspend(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 575 uint32_t HAL_HASH_GetError(HASH_HandleTypeDef *hhash);
AnnaBridge 172:65be27845400 576
AnnaBridge 172:65be27845400 577 /**
AnnaBridge 172:65be27845400 578 * @}
AnnaBridge 172:65be27845400 579 */
AnnaBridge 172:65be27845400 580
AnnaBridge 172:65be27845400 581 /**
AnnaBridge 172:65be27845400 582 * @}
AnnaBridge 172:65be27845400 583 */
AnnaBridge 172:65be27845400 584
AnnaBridge 172:65be27845400 585 /* Private functions -----------------------------------------------------------*/
AnnaBridge 172:65be27845400 586
AnnaBridge 172:65be27845400 587 /** @addtogroup HASH_Private_Functions HASH Private Functions
AnnaBridge 172:65be27845400 588 * @{
AnnaBridge 172:65be27845400 589 */
AnnaBridge 172:65be27845400 590
AnnaBridge 172:65be27845400 591 /* Private functions */
AnnaBridge 172:65be27845400 592 HAL_StatusTypeDef HASH_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout, uint32_t Algorithm);
AnnaBridge 172:65be27845400 593 HAL_StatusTypeDef HASH_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint32_t Algorithm);
AnnaBridge 172:65be27845400 594 HAL_StatusTypeDef HASH_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Algorithm);
AnnaBridge 172:65be27845400 595 HAL_StatusTypeDef HASH_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint32_t Algorithm);
AnnaBridge 172:65be27845400 596 HAL_StatusTypeDef HASH_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout);
AnnaBridge 172:65be27845400 597 HAL_StatusTypeDef HMAC_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout, uint32_t Algorithm);
AnnaBridge 172:65be27845400 598 HAL_StatusTypeDef HMAC_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Algorithm);
AnnaBridge 172:65be27845400 599 HAL_StatusTypeDef HMAC_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint32_t Algorithm);
AnnaBridge 172:65be27845400 600
AnnaBridge 172:65be27845400 601 /**
AnnaBridge 172:65be27845400 602 * @}
AnnaBridge 172:65be27845400 603 */
AnnaBridge 172:65be27845400 604
AnnaBridge 172:65be27845400 605 /**
AnnaBridge 172:65be27845400 606 * @}
AnnaBridge 172:65be27845400 607 */
AnnaBridge 172:65be27845400 608 #endif /* HASH*/
AnnaBridge 172:65be27845400 609 /**
AnnaBridge 172:65be27845400 610 * @}
AnnaBridge 172:65be27845400 611 */
AnnaBridge 172:65be27845400 612
AnnaBridge 172:65be27845400 613
AnnaBridge 172:65be27845400 614 #ifdef __cplusplus
AnnaBridge 172:65be27845400 615 }
AnnaBridge 172:65be27845400 616 #endif
AnnaBridge 172:65be27845400 617
AnnaBridge 172:65be27845400 618
AnnaBridge 172:65be27845400 619 #endif /* STM32H7xx_HAL_HASH_H */
AnnaBridge 172:65be27845400 620
AnnaBridge 172:65be27845400 621 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/