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:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
mbed library. Release version 164

Who changed what in which revision?

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