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
Parent:
TARGET_ELMO_F411RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_hash.h@171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Anna Bridge 169:a7c7b631e539 1 /**
Anna Bridge 169:a7c7b631e539 2 ******************************************************************************
Anna Bridge 169:a7c7b631e539 3 * @file stm32f4xx_hal_hash.h
Anna Bridge 169:a7c7b631e539 4 * @author MCD Application Team
Anna Bridge 169:a7c7b631e539 5 * @brief Header file of HASH HAL module.
Anna Bridge 169:a7c7b631e539 6 ******************************************************************************
Anna Bridge 169:a7c7b631e539 7 * @attention
Anna Bridge 169:a7c7b631e539 8 *
Anna Bridge 169:a7c7b631e539 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
Anna Bridge 169:a7c7b631e539 10 *
Anna Bridge 169:a7c7b631e539 11 * Redistribution and use in source and binary forms, with or without modification,
Anna Bridge 169:a7c7b631e539 12 * are permitted provided that the following conditions are met:
Anna Bridge 169:a7c7b631e539 13 * 1. Redistributions of source code must retain the above copyright notice,
Anna Bridge 169:a7c7b631e539 14 * this list of conditions and the following disclaimer.
Anna Bridge 169:a7c7b631e539 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
Anna Bridge 169:a7c7b631e539 16 * this list of conditions and the following disclaimer in the documentation
Anna Bridge 169:a7c7b631e539 17 * and/or other materials provided with the distribution.
Anna Bridge 169:a7c7b631e539 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Anna Bridge 169:a7c7b631e539 19 * may be used to endorse or promote products derived from this software
Anna Bridge 169:a7c7b631e539 20 * without specific prior written permission.
Anna Bridge 169:a7c7b631e539 21 *
Anna Bridge 169:a7c7b631e539 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Anna Bridge 169:a7c7b631e539 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Anna Bridge 169:a7c7b631e539 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Anna Bridge 169:a7c7b631e539 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Anna Bridge 169:a7c7b631e539 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Anna Bridge 169:a7c7b631e539 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Anna Bridge 169:a7c7b631e539 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Anna Bridge 169:a7c7b631e539 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Anna Bridge 169:a7c7b631e539 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Anna Bridge 169:a7c7b631e539 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Anna Bridge 169:a7c7b631e539 32 *
Anna Bridge 169:a7c7b631e539 33 ******************************************************************************
Anna Bridge 169:a7c7b631e539 34 */
Anna Bridge 169:a7c7b631e539 35
Anna Bridge 169:a7c7b631e539 36 /* Define to prevent recursive inclusion -------------------------------------*/
Anna Bridge 169:a7c7b631e539 37 #ifndef __STM32F4xx_HAL_HASH_H
Anna Bridge 169:a7c7b631e539 38 #define __STM32F4xx_HAL_HASH_H
Anna Bridge 169:a7c7b631e539 39
Anna Bridge 169:a7c7b631e539 40 #ifdef __cplusplus
Anna Bridge 169:a7c7b631e539 41 extern "C" {
Anna Bridge 169:a7c7b631e539 42 #endif
Anna Bridge 169:a7c7b631e539 43
Anna Bridge 169:a7c7b631e539 44 #if defined(STM32F415xx) || defined(STM32F417xx) || defined(STM32F437xx) || defined(STM32F439xx) || defined(STM32F479xx)
Anna Bridge 169:a7c7b631e539 45
Anna Bridge 169:a7c7b631e539 46 /* Includes ------------------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 47 #include "stm32f4xx_hal_def.h"
Anna Bridge 169:a7c7b631e539 48
Anna Bridge 169:a7c7b631e539 49 /** @addtogroup STM32F4xx_HAL_Driver
Anna Bridge 169:a7c7b631e539 50 * @{
Anna Bridge 169:a7c7b631e539 51 */
Anna Bridge 169:a7c7b631e539 52
Anna Bridge 169:a7c7b631e539 53 /** @addtogroup HASH
Anna Bridge 169:a7c7b631e539 54 * @brief HASH HAL module driver
Anna Bridge 169:a7c7b631e539 55 * @{
Anna Bridge 169:a7c7b631e539 56 */
Anna Bridge 169:a7c7b631e539 57
Anna Bridge 169:a7c7b631e539 58 /* Exported types ------------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 59 /** @defgroup HASH_Exported_Types HASH Exported Types
Anna Bridge 169:a7c7b631e539 60 * @{
Anna Bridge 169:a7c7b631e539 61 */
Anna Bridge 169:a7c7b631e539 62
Anna Bridge 169:a7c7b631e539 63 /** @defgroup HASH_Exported_Types_Group1 HASH Configuration Structure definition
Anna Bridge 169:a7c7b631e539 64 * @{
Anna Bridge 169:a7c7b631e539 65 */
Anna Bridge 169:a7c7b631e539 66
Anna Bridge 169:a7c7b631e539 67 typedef struct
Anna Bridge 169:a7c7b631e539 68 {
Anna Bridge 169:a7c7b631e539 69 uint32_t DataType; /*!< 32-bit data, 16-bit data, 8-bit data or 1-bit string.
Anna Bridge 169:a7c7b631e539 70 This parameter can be a value of @ref HASH_Data_Type */
Anna Bridge 169:a7c7b631e539 71
Anna Bridge 169:a7c7b631e539 72 uint32_t KeySize; /*!< The key size is used only in HMAC operation */
Anna Bridge 169:a7c7b631e539 73
Anna Bridge 169:a7c7b631e539 74 uint8_t* pKey; /*!< The key is used only in HMAC operation */
Anna Bridge 169:a7c7b631e539 75 }HASH_InitTypeDef;
Anna Bridge 169:a7c7b631e539 76
Anna Bridge 169:a7c7b631e539 77 /**
Anna Bridge 169:a7c7b631e539 78 * @}
Anna Bridge 169:a7c7b631e539 79 */
Anna Bridge 169:a7c7b631e539 80
Anna Bridge 169:a7c7b631e539 81 /** @defgroup HASH_Exported_Types_Group2 HASH State structures definition
Anna Bridge 169:a7c7b631e539 82 * @{
Anna Bridge 169:a7c7b631e539 83 */
Anna Bridge 169:a7c7b631e539 84
Anna Bridge 169:a7c7b631e539 85 typedef enum
Anna Bridge 169:a7c7b631e539 86 {
Anna Bridge 169:a7c7b631e539 87 HAL_HASH_STATE_RESET = 0x00U, /*!< HASH not yet initialized or disabled */
Anna Bridge 169:a7c7b631e539 88 HAL_HASH_STATE_READY = 0x01U, /*!< HASH initialized and ready for use */
Anna Bridge 169:a7c7b631e539 89 HAL_HASH_STATE_BUSY = 0x02U, /*!< HASH internal process is ongoing */
Anna Bridge 169:a7c7b631e539 90 HAL_HASH_STATE_TIMEOUT = 0x03U, /*!< HASH timeout state */
Anna Bridge 169:a7c7b631e539 91 HAL_HASH_STATE_ERROR = 0x04U /*!< HASH error state */
Anna Bridge 169:a7c7b631e539 92 }HAL_HASH_StateTypeDef;
Anna Bridge 169:a7c7b631e539 93
Anna Bridge 169:a7c7b631e539 94 /**
Anna Bridge 169:a7c7b631e539 95 * @}
Anna Bridge 169:a7c7b631e539 96 */
Anna Bridge 169:a7c7b631e539 97
Anna Bridge 169:a7c7b631e539 98 /** @defgroup HASH_Exported_Types_Group3 HASH phase structures definition
Anna Bridge 169:a7c7b631e539 99 * @{
Anna Bridge 169:a7c7b631e539 100 */
Anna Bridge 169:a7c7b631e539 101
Anna Bridge 169:a7c7b631e539 102 typedef enum
Anna Bridge 169:a7c7b631e539 103 {
Anna Bridge 169:a7c7b631e539 104 HAL_HASH_PHASE_READY = 0x01U, /*!< HASH peripheral is ready for initialization */
Anna Bridge 169:a7c7b631e539 105 HAL_HASH_PHASE_PROCESS = 0x02U /*!< HASH peripheral is in processing phase */
Anna Bridge 169:a7c7b631e539 106 }HAL_HASH_PhaseTypeDef;
Anna Bridge 169:a7c7b631e539 107
Anna Bridge 169:a7c7b631e539 108 /**
Anna Bridge 169:a7c7b631e539 109 * @}
Anna Bridge 169:a7c7b631e539 110 */
Anna Bridge 169:a7c7b631e539 111
Anna Bridge 169:a7c7b631e539 112 /** @defgroup HASH_Exported_Types_Group4 HASH Handle structures definition
Anna Bridge 169:a7c7b631e539 113 * @{
Anna Bridge 169:a7c7b631e539 114 */
Anna Bridge 169:a7c7b631e539 115
Anna Bridge 169:a7c7b631e539 116 typedef struct
Anna Bridge 169:a7c7b631e539 117 {
Anna Bridge 169:a7c7b631e539 118 HASH_InitTypeDef Init; /*!< HASH required parameters */
Anna Bridge 169:a7c7b631e539 119
Anna Bridge 169:a7c7b631e539 120 uint8_t *pHashInBuffPtr; /*!< Pointer to input buffer */
Anna Bridge 169:a7c7b631e539 121
Anna Bridge 169:a7c7b631e539 122 uint8_t *pHashOutBuffPtr; /*!< Pointer to input buffer */
Anna Bridge 169:a7c7b631e539 123
Anna Bridge 169:a7c7b631e539 124 __IO uint32_t HashBuffSize; /*!< Size of buffer to be processed */
Anna Bridge 169:a7c7b631e539 125
Anna Bridge 169:a7c7b631e539 126 __IO uint32_t HashInCount; /*!< Counter of inputed data */
Anna Bridge 169:a7c7b631e539 127
Anna Bridge 169:a7c7b631e539 128 __IO uint32_t HashITCounter; /*!< Counter of issued interrupts */
Anna Bridge 169:a7c7b631e539 129
Anna Bridge 169:a7c7b631e539 130 HAL_StatusTypeDef Status; /*!< HASH peripheral status */
Anna Bridge 169:a7c7b631e539 131
Anna Bridge 169:a7c7b631e539 132 HAL_HASH_PhaseTypeDef Phase; /*!< HASH peripheral phase */
Anna Bridge 169:a7c7b631e539 133
Anna Bridge 169:a7c7b631e539 134 DMA_HandleTypeDef *hdmain; /*!< HASH In DMA handle parameters */
Anna Bridge 169:a7c7b631e539 135
Anna Bridge 169:a7c7b631e539 136 HAL_LockTypeDef Lock; /*!< HASH locking object */
Anna Bridge 169:a7c7b631e539 137
Anna Bridge 169:a7c7b631e539 138 __IO HAL_HASH_StateTypeDef State; /*!< HASH peripheral state */
Anna Bridge 169:a7c7b631e539 139 } HASH_HandleTypeDef;
Anna Bridge 169:a7c7b631e539 140
Anna Bridge 169:a7c7b631e539 141 /**
Anna Bridge 169:a7c7b631e539 142 * @}
Anna Bridge 169:a7c7b631e539 143 */
Anna Bridge 169:a7c7b631e539 144
Anna Bridge 169:a7c7b631e539 145
Anna Bridge 169:a7c7b631e539 146 /**
Anna Bridge 169:a7c7b631e539 147 * @}
Anna Bridge 169:a7c7b631e539 148 */
Anna Bridge 169:a7c7b631e539 149
Anna Bridge 169:a7c7b631e539 150 /* Exported constants --------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 151 /** @defgroup HASH_Exported_Constants HASH Exported Constants
Anna Bridge 169:a7c7b631e539 152 * @{
Anna Bridge 169:a7c7b631e539 153 */
Anna Bridge 169:a7c7b631e539 154
Anna Bridge 169:a7c7b631e539 155 /** @defgroup HASH_Exported_Constants_Group1 HASH Algorithm Selection
Anna Bridge 169:a7c7b631e539 156 * @{
Anna Bridge 169:a7c7b631e539 157 */
Anna Bridge 169:a7c7b631e539 158 #define HASH_ALGOSELECTION_SHA1 0x00000000U /*!< HASH function is SHA1 */
Anna Bridge 169:a7c7b631e539 159 #define HASH_ALGOSELECTION_SHA224 HASH_CR_ALGO_1 /*!< HASH function is SHA224 */
Anna Bridge 169:a7c7b631e539 160 #define HASH_ALGOSELECTION_SHA256 HASH_CR_ALGO /*!< HASH function is SHA256 */
Anna Bridge 169:a7c7b631e539 161 #define HASH_ALGOSELECTION_MD5 HASH_CR_ALGO_0 /*!< HASH function is MD5 */
Anna Bridge 169:a7c7b631e539 162 /**
Anna Bridge 169:a7c7b631e539 163 * @}
Anna Bridge 169:a7c7b631e539 164 */
Anna Bridge 169:a7c7b631e539 165
Anna Bridge 169:a7c7b631e539 166 /** @defgroup HASH_Exported_Constants_Group2 HASH Algorithm Mode
Anna Bridge 169:a7c7b631e539 167 * @{
Anna Bridge 169:a7c7b631e539 168 */
Anna Bridge 169:a7c7b631e539 169 #define HASH_ALGOMODE_HASH 0x00000000U /*!< Algorithm is HASH */
Anna Bridge 169:a7c7b631e539 170 #define HASH_ALGOMODE_HMAC HASH_CR_MODE /*!< Algorithm is HMAC */
Anna Bridge 169:a7c7b631e539 171 /**
Anna Bridge 169:a7c7b631e539 172 * @}
Anna Bridge 169:a7c7b631e539 173 */
Anna Bridge 169:a7c7b631e539 174
Anna Bridge 169:a7c7b631e539 175 /** @defgroup HASH_Data_Type HASH Data Type
Anna Bridge 169:a7c7b631e539 176 * @{
Anna Bridge 169:a7c7b631e539 177 */
Anna Bridge 169:a7c7b631e539 178 #define HASH_DATATYPE_32B 0x00000000U /*!< 32-bit data. No swapping */
Anna Bridge 169:a7c7b631e539 179 #define HASH_DATATYPE_16B HASH_CR_DATATYPE_0 /*!< 16-bit data. Each half word is swapped */
Anna Bridge 169:a7c7b631e539 180 #define HASH_DATATYPE_8B HASH_CR_DATATYPE_1 /*!< 8-bit data. All bytes are swapped */
Anna Bridge 169:a7c7b631e539 181 #define HASH_DATATYPE_1B HASH_CR_DATATYPE /*!< 1-bit data. In the word all bits are swapped */
Anna Bridge 169:a7c7b631e539 182 /**
Anna Bridge 169:a7c7b631e539 183 * @}
Anna Bridge 169:a7c7b631e539 184 */
Anna Bridge 169:a7c7b631e539 185
Anna Bridge 169:a7c7b631e539 186 /** @defgroup HASH_Exported_Constants_Group4 HASH HMAC Long key
Anna Bridge 169:a7c7b631e539 187 * @brief HASH HMAC Long key used only for HMAC mode
Anna Bridge 169:a7c7b631e539 188 * @{
Anna Bridge 169:a7c7b631e539 189 */
Anna Bridge 169:a7c7b631e539 190 #define HASH_HMAC_KEYTYPE_SHORTKEY 0x00000000U /*!< HMAC Key is <= 64 bytes */
Anna Bridge 169:a7c7b631e539 191 #define HASH_HMAC_KEYTYPE_LONGKEY HASH_CR_LKEY /*!< HMAC Key is > 64 bytes */
Anna Bridge 169:a7c7b631e539 192 /**
Anna Bridge 169:a7c7b631e539 193 * @}
Anna Bridge 169:a7c7b631e539 194 */
Anna Bridge 169:a7c7b631e539 195
Anna Bridge 169:a7c7b631e539 196 /** @defgroup HASH_Exported_Constants_Group5 HASH Flags definition
Anna Bridge 169:a7c7b631e539 197 * @{
Anna Bridge 169:a7c7b631e539 198 */
Anna Bridge 169:a7c7b631e539 199 #define HASH_FLAG_DINIS HASH_SR_DINIS /*!< 16 locations are free in the DIN : A new block can be entered into the input buffer */
Anna Bridge 169:a7c7b631e539 200 #define HASH_FLAG_DCIS HASH_SR_DCIS /*!< Digest calculation complete */
Anna Bridge 169:a7c7b631e539 201 #define HASH_FLAG_DMAS HASH_SR_DMAS /*!< DMA interface is enabled (DMAE=1) or a transfer is ongoing */
Anna Bridge 169:a7c7b631e539 202 #define HASH_FLAG_BUSY HASH_SR_BUSY /*!< The hash core is Busy : processing a block of data */
Anna Bridge 169:a7c7b631e539 203 #define HASH_FLAG_DINNE HASH_CR_DINNE /*!< DIN not empty : The input buffer contains at least one word of data */
Anna Bridge 169:a7c7b631e539 204 /**
Anna Bridge 169:a7c7b631e539 205 * @}
Anna Bridge 169:a7c7b631e539 206 */
Anna Bridge 169:a7c7b631e539 207
Anna Bridge 169:a7c7b631e539 208 /** @defgroup HASH_Exported_Constants_Group6 HASH Interrupts definition
Anna Bridge 169:a7c7b631e539 209 * @{
Anna Bridge 169:a7c7b631e539 210 */
Anna Bridge 169:a7c7b631e539 211 #define HASH_IT_DINI HASH_IMR_DINIE /*!< A new block can be entered into the input buffer (DIN) */
Anna Bridge 169:a7c7b631e539 212 #define HASH_IT_DCI HASH_IMR_DCIE /*!< Digest calculation complete */
Anna Bridge 169:a7c7b631e539 213 /**
Anna Bridge 169:a7c7b631e539 214 * @}
Anna Bridge 169:a7c7b631e539 215 */
Anna Bridge 169:a7c7b631e539 216
Anna Bridge 169:a7c7b631e539 217 /**
Anna Bridge 169:a7c7b631e539 218 * @}
Anna Bridge 169:a7c7b631e539 219 */
Anna Bridge 169:a7c7b631e539 220
Anna Bridge 169:a7c7b631e539 221 /* Exported macro ------------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 222 /** @defgroup HASH_Exported_Macros HASH Exported Macros
Anna Bridge 169:a7c7b631e539 223 * @{
Anna Bridge 169:a7c7b631e539 224 */
Anna Bridge 169:a7c7b631e539 225
Anna Bridge 169:a7c7b631e539 226 /** @brief Reset HASH handle state
Anna Bridge 169:a7c7b631e539 227 * @param __HANDLE__ specifies the HASH handle.
Anna Bridge 169:a7c7b631e539 228 * @retval None
Anna Bridge 169:a7c7b631e539 229 */
Anna Bridge 169:a7c7b631e539 230 #define __HAL_HASH_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_HASH_STATE_RESET)
Anna Bridge 169:a7c7b631e539 231
Anna Bridge 169:a7c7b631e539 232 /** @brief Check whether the specified HASH flag is set or not.
Anna Bridge 169:a7c7b631e539 233 * @param __FLAG__ specifies the flag to check.
Anna Bridge 169:a7c7b631e539 234 * This parameter can be one of the following values:
Anna Bridge 169:a7c7b631e539 235 * @arg HASH_FLAG_DINIS: A new block can be entered into the input buffer.
Anna Bridge 169:a7c7b631e539 236 * @arg HASH_FLAG_DCIS: Digest calculation complete
Anna Bridge 169:a7c7b631e539 237 * @arg HASH_FLAG_DMAS: DMA interface is enabled (DMAE=1) or a transfer is ongoing
Anna Bridge 169:a7c7b631e539 238 * @arg HASH_FLAG_BUSY: The hash core is Busy : processing a block of data
Anna Bridge 169:a7c7b631e539 239 * @arg HASH_FLAG_DINNE: DIN not empty : The input buffer contains at least one word of data
Anna Bridge 169:a7c7b631e539 240 * @retval The new state of __FLAG__ (TRUE or FALSE).
Anna Bridge 169:a7c7b631e539 241 */
Anna Bridge 169:a7c7b631e539 242 #define __HAL_HASH_GET_FLAG(__FLAG__) (((__FLAG__) > 8U) ? ((HASH->CR & (__FLAG__)) == (__FLAG__)) :\
Anna Bridge 169:a7c7b631e539 243 ((HASH->SR & (__FLAG__)) == (__FLAG__)))
Anna Bridge 169:a7c7b631e539 244
Anna Bridge 169:a7c7b631e539 245 /**
Anna Bridge 169:a7c7b631e539 246 * @brief Enable the multiple DMA mode.
Anna Bridge 169:a7c7b631e539 247 * This feature is available only in STM32F429x and STM32F439x devices.
Anna Bridge 169:a7c7b631e539 248 * @retval None
Anna Bridge 169:a7c7b631e539 249 */
Anna Bridge 169:a7c7b631e539 250 #define __HAL_HASH_SET_MDMAT() HASH->CR |= HASH_CR_MDMAT
Anna Bridge 169:a7c7b631e539 251
Anna Bridge 169:a7c7b631e539 252 /**
Anna Bridge 169:a7c7b631e539 253 * @brief Disable the multiple DMA mode.
Anna Bridge 169:a7c7b631e539 254 * @retval None
Anna Bridge 169:a7c7b631e539 255 */
Anna Bridge 169:a7c7b631e539 256 #define __HAL_HASH_RESET_MDMAT() HASH->CR &= (uint32_t)(~HASH_CR_MDMAT)
Anna Bridge 169:a7c7b631e539 257
Anna Bridge 169:a7c7b631e539 258 /**
Anna Bridge 169:a7c7b631e539 259 * @brief Start the digest computation
Anna Bridge 169:a7c7b631e539 260 * @retval None
Anna Bridge 169:a7c7b631e539 261 */
Anna Bridge 169:a7c7b631e539 262 #define __HAL_HASH_START_DIGEST() HASH->STR |= HASH_STR_DCAL
Anna Bridge 169:a7c7b631e539 263
Anna Bridge 169:a7c7b631e539 264 /**
Anna Bridge 169:a7c7b631e539 265 * @brief Set the number of valid bits in last word written in Data register
Anna Bridge 169:a7c7b631e539 266 * @param SIZE size in byte of last data written in Data register.
Anna Bridge 169:a7c7b631e539 267 * @retval None
Anna Bridge 169:a7c7b631e539 268 */
Anna Bridge 169:a7c7b631e539 269 #define __HAL_HASH_SET_NBVALIDBITS(SIZE) do{HASH->STR &= ~(HASH_STR_NBLW);\
Anna Bridge 169:a7c7b631e539 270 HASH->STR |= 8U * ((SIZE) % 4U);\
Anna Bridge 169:a7c7b631e539 271 }while(0)
Anna Bridge 169:a7c7b631e539 272
Anna Bridge 169:a7c7b631e539 273 /**
Anna Bridge 169:a7c7b631e539 274 * @}
Anna Bridge 169:a7c7b631e539 275 */
Anna Bridge 169:a7c7b631e539 276
Anna Bridge 169:a7c7b631e539 277 /* Include HASH HAL Extension module */
Anna Bridge 169:a7c7b631e539 278 #include "stm32f4xx_hal_hash_ex.h"
Anna Bridge 169:a7c7b631e539 279 /* Exported functions --------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 280
Anna Bridge 169:a7c7b631e539 281 /** @defgroup HASH_Exported_Functions HASH Exported Functions
Anna Bridge 169:a7c7b631e539 282 * @{
Anna Bridge 169:a7c7b631e539 283 */
Anna Bridge 169:a7c7b631e539 284
Anna Bridge 169:a7c7b631e539 285 /** @addtogroup HASH_Exported_Functions_Group1
Anna Bridge 169:a7c7b631e539 286 * @{
Anna Bridge 169:a7c7b631e539 287 */
Anna Bridge 169:a7c7b631e539 288 HAL_StatusTypeDef HAL_HASH_Init(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 289 HAL_StatusTypeDef HAL_HASH_DeInit(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 290 /**
Anna Bridge 169:a7c7b631e539 291 * @}
Anna Bridge 169:a7c7b631e539 292 */
Anna Bridge 169:a7c7b631e539 293
Anna Bridge 169:a7c7b631e539 294 /** @addtogroup HASH_Exported_Functions_Group2
Anna Bridge 169:a7c7b631e539 295 * @{
Anna Bridge 169:a7c7b631e539 296 */
Anna Bridge 169:a7c7b631e539 297 HAL_StatusTypeDef HAL_HASH_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
Anna Bridge 169:a7c7b631e539 298 HAL_StatusTypeDef HAL_HASH_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
Anna Bridge 169:a7c7b631e539 299 HAL_StatusTypeDef HAL_HASH_MD5_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
Anna Bridge 169:a7c7b631e539 300 HAL_StatusTypeDef HAL_HASH_SHA1_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
Anna Bridge 169:a7c7b631e539 301 /**
Anna Bridge 169:a7c7b631e539 302 * @}
Anna Bridge 169:a7c7b631e539 303 */
Anna Bridge 169:a7c7b631e539 304
Anna Bridge 169:a7c7b631e539 305 /** @addtogroup HASH_Exported_Functions_Group3
Anna Bridge 169:a7c7b631e539 306 * @{
Anna Bridge 169:a7c7b631e539 307 */
Anna Bridge 169:a7c7b631e539 308 HAL_StatusTypeDef HAL_HMAC_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
Anna Bridge 169:a7c7b631e539 309 HAL_StatusTypeDef HAL_HMAC_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
Anna Bridge 169:a7c7b631e539 310 /**
Anna Bridge 169:a7c7b631e539 311 * @}
Anna Bridge 169:a7c7b631e539 312 */
Anna Bridge 169:a7c7b631e539 313
Anna Bridge 169:a7c7b631e539 314 /** @addtogroup HASH_Exported_Functions_Group4
Anna Bridge 169:a7c7b631e539 315 * @{
Anna Bridge 169:a7c7b631e539 316 */
Anna Bridge 169:a7c7b631e539 317 HAL_StatusTypeDef HAL_HASH_SHA1_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer);
Anna Bridge 169:a7c7b631e539 318 HAL_StatusTypeDef HAL_HASH_MD5_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer);
Anna Bridge 169:a7c7b631e539 319 /**
Anna Bridge 169:a7c7b631e539 320 * @}
Anna Bridge 169:a7c7b631e539 321 */
Anna Bridge 169:a7c7b631e539 322
Anna Bridge 169:a7c7b631e539 323 /** @addtogroup HASH_Exported_Functions_Group5
Anna Bridge 169:a7c7b631e539 324 * @{
Anna Bridge 169:a7c7b631e539 325 */
Anna Bridge 169:a7c7b631e539 326 HAL_StatusTypeDef HAL_HASH_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
Anna Bridge 169:a7c7b631e539 327 HAL_StatusTypeDef HAL_HASH_SHA1_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout);
Anna Bridge 169:a7c7b631e539 328 HAL_StatusTypeDef HAL_HASH_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
Anna Bridge 169:a7c7b631e539 329 HAL_StatusTypeDef HAL_HASH_MD5_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout);
Anna Bridge 169:a7c7b631e539 330 /**
Anna Bridge 169:a7c7b631e539 331 * @}
Anna Bridge 169:a7c7b631e539 332 */
Anna Bridge 169:a7c7b631e539 333
Anna Bridge 169:a7c7b631e539 334 /** @addtogroup HASH_Exported_Functions_Group6
Anna Bridge 169:a7c7b631e539 335 * @{
Anna Bridge 169:a7c7b631e539 336 */
Anna Bridge 169:a7c7b631e539 337 HAL_StatusTypeDef HAL_HMAC_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
Anna Bridge 169:a7c7b631e539 338 HAL_StatusTypeDef HAL_HMAC_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
Anna Bridge 169:a7c7b631e539 339 /**
Anna Bridge 169:a7c7b631e539 340 * @}
Anna Bridge 169:a7c7b631e539 341 */
Anna Bridge 169:a7c7b631e539 342
Anna Bridge 169:a7c7b631e539 343 /** @addtogroup HASH_Exported_Functions_Group7
Anna Bridge 169:a7c7b631e539 344 * @{
Anna Bridge 169:a7c7b631e539 345 */
Anna Bridge 169:a7c7b631e539 346 void HAL_HASH_IRQHandler(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 347 /**
Anna Bridge 169:a7c7b631e539 348 * @}
Anna Bridge 169:a7c7b631e539 349 */
Anna Bridge 169:a7c7b631e539 350
Anna Bridge 169:a7c7b631e539 351 /** @addtogroup HASH_Exported_Functions_Group8
Anna Bridge 169:a7c7b631e539 352 * @{
Anna Bridge 169:a7c7b631e539 353 */
Anna Bridge 169:a7c7b631e539 354 HAL_HASH_StateTypeDef HAL_HASH_GetState(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 355 void HAL_HASH_MspInit(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 356 void HAL_HASH_MspDeInit(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 357 void HAL_HASH_InCpltCallback(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 358 void HAL_HASH_DgstCpltCallback(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 359 void HAL_HASH_ErrorCallback(HASH_HandleTypeDef *hhash);
Anna Bridge 169:a7c7b631e539 360 /**
Anna Bridge 169:a7c7b631e539 361 * @}
Anna Bridge 169:a7c7b631e539 362 */
Anna Bridge 169:a7c7b631e539 363
Anna Bridge 169:a7c7b631e539 364 /**
Anna Bridge 169:a7c7b631e539 365 * @}
Anna Bridge 169:a7c7b631e539 366 */
Anna Bridge 169:a7c7b631e539 367
Anna Bridge 169:a7c7b631e539 368 /* Private types -------------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 369 /** @defgroup HASH_Private_Types HASH Private Types
Anna Bridge 169:a7c7b631e539 370 * @{
Anna Bridge 169:a7c7b631e539 371 */
Anna Bridge 169:a7c7b631e539 372
Anna Bridge 169:a7c7b631e539 373 /**
Anna Bridge 169:a7c7b631e539 374 * @}
Anna Bridge 169:a7c7b631e539 375 */
Anna Bridge 169:a7c7b631e539 376
Anna Bridge 169:a7c7b631e539 377 /* Private variables ---------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 378 /** @defgroup HASH_Private_Variables HASH Private Variables
Anna Bridge 169:a7c7b631e539 379 * @{
Anna Bridge 169:a7c7b631e539 380 */
Anna Bridge 169:a7c7b631e539 381
Anna Bridge 169:a7c7b631e539 382 /**
Anna Bridge 169:a7c7b631e539 383 * @}
Anna Bridge 169:a7c7b631e539 384 */
Anna Bridge 169:a7c7b631e539 385
Anna Bridge 169:a7c7b631e539 386 /* Private constants ---------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 387 /** @defgroup HASH_Private_Constants HASH Private Constants
Anna Bridge 169:a7c7b631e539 388 * @{
Anna Bridge 169:a7c7b631e539 389 */
Anna Bridge 169:a7c7b631e539 390
Anna Bridge 169:a7c7b631e539 391 /**
Anna Bridge 169:a7c7b631e539 392 * @}
Anna Bridge 169:a7c7b631e539 393 */
Anna Bridge 169:a7c7b631e539 394
Anna Bridge 169:a7c7b631e539 395 /* Private macros ------------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 396 /** @defgroup HASH_Private_Macros HASH Private Macros
Anna Bridge 169:a7c7b631e539 397 * @{
Anna Bridge 169:a7c7b631e539 398 */
Anna Bridge 169:a7c7b631e539 399 #define IS_HASH_ALGOSELECTION(__ALGOSELECTION__) (((__ALGOSELECTION__) == HASH_ALGOSELECTION_SHA1) || \
Anna Bridge 169:a7c7b631e539 400 ((__ALGOSELECTION__) == HASH_ALGOSELECTION_SHA224) || \
Anna Bridge 169:a7c7b631e539 401 ((__ALGOSELECTION__) == HASH_ALGOSELECTION_SHA256) || \
Anna Bridge 169:a7c7b631e539 402 ((__ALGOSELECTION__) == HASH_ALGOSELECTION_MD5))
Anna Bridge 169:a7c7b631e539 403
Anna Bridge 169:a7c7b631e539 404
Anna Bridge 169:a7c7b631e539 405 #define IS_HASH_ALGOMODE(__ALGOMODE__) (((__ALGOMODE__) == HASH_ALGOMODE_HASH) || \
Anna Bridge 169:a7c7b631e539 406 ((__ALGOMODE__) == HASH_ALGOMODE_HMAC))
Anna Bridge 169:a7c7b631e539 407
Anna Bridge 169:a7c7b631e539 408
Anna Bridge 169:a7c7b631e539 409 #define IS_HASH_DATATYPE(__DATATYPE__) (((__DATATYPE__) == HASH_DATATYPE_32B)|| \
Anna Bridge 169:a7c7b631e539 410 ((__DATATYPE__) == HASH_DATATYPE_16B)|| \
Anna Bridge 169:a7c7b631e539 411 ((__DATATYPE__) == HASH_DATATYPE_8B) || \
Anna Bridge 169:a7c7b631e539 412 ((__DATATYPE__) == HASH_DATATYPE_1B))
Anna Bridge 169:a7c7b631e539 413
Anna Bridge 169:a7c7b631e539 414
Anna Bridge 169:a7c7b631e539 415 #define IS_HASH_HMAC_KEYTYPE(__KEYTYPE__) (((__KEYTYPE__) == HASH_HMAC_KEYTYPE_SHORTKEY) || \
Anna Bridge 169:a7c7b631e539 416 ((__KEYTYPE__) == HASH_HMAC_KEYTYPE_LONGKEY))
Anna Bridge 169:a7c7b631e539 417
Anna Bridge 169:a7c7b631e539 418 #define IS_HASH_SHA1_BUFFER_SIZE(__SIZE__) ((((__SIZE__)%4U) != 0U)? 0U: 1U)
Anna Bridge 169:a7c7b631e539 419
Anna Bridge 169:a7c7b631e539 420 /**
Anna Bridge 169:a7c7b631e539 421 * @}
Anna Bridge 169:a7c7b631e539 422 */
Anna Bridge 169:a7c7b631e539 423
Anna Bridge 169:a7c7b631e539 424 /* Private functions ---------------------------------------------------------*/
Anna Bridge 169:a7c7b631e539 425 /** @defgroup HASH_Private_Functions HASH Private Functions
Anna Bridge 169:a7c7b631e539 426 * @{
Anna Bridge 169:a7c7b631e539 427 */
Anna Bridge 169:a7c7b631e539 428
Anna Bridge 169:a7c7b631e539 429 /**
Anna Bridge 169:a7c7b631e539 430 * @}
Anna Bridge 169:a7c7b631e539 431 */
Anna Bridge 169:a7c7b631e539 432
Anna Bridge 169:a7c7b631e539 433 #endif /* STM32F415xx || STM32F417xx || STM32F437xx || STM32F439xx || STM32F479xx */
Anna Bridge 169:a7c7b631e539 434 /**
Anna Bridge 169:a7c7b631e539 435 * @}
Anna Bridge 169:a7c7b631e539 436 */
Anna Bridge 169:a7c7b631e539 437
Anna Bridge 169:a7c7b631e539 438 /**
Anna Bridge 169:a7c7b631e539 439 * @}
Anna Bridge 169:a7c7b631e539 440 */
Anna Bridge 169:a7c7b631e539 441
Anna Bridge 169:a7c7b631e539 442 #ifdef __cplusplus
Anna Bridge 169:a7c7b631e539 443 }
Anna Bridge 169:a7c7b631e539 444 #endif
Anna Bridge 169:a7c7b631e539 445
Anna Bridge 169:a7c7b631e539 446
Anna Bridge 169:a7c7b631e539 447 #endif /* __STM32F4xx_HAL_HASH_H */
Anna Bridge 169:a7c7b631e539 448
Anna Bridge 169:a7c7b631e539 449 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/