mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

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