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:
Anna Bridge
Date:
Fri Jun 22 15:38:59 2018 +0100
Revision:
169:a7c7b631e539
Parent:
163:e59c8e839560
mbed library. Release version 162

Who changed what in which revision?

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