STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
stm32f7xx_hal_hash.h
Go to the documentation of this file.
1 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F7xx_HAL_HASH_H
40 #define __STM32F7xx_HAL_HASH_H
41 
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45 
46 #if defined (STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx)
47 /* Includes ------------------------------------------------------------------*/
48 #include "stm32f7xx_hal_def.h"
49 
59 /* Exported types ------------------------------------------------------------*/
68 typedef struct
69 {
70  uint32_t DataType;
73  uint32_t KeySize;
75  uint8_t* pKey;
76 }HASH_InitTypeDef;
77 
86 typedef enum
87 {
88  HAL_HASH_STATE_RESET = 0x00U,
89  HAL_HASH_STATE_READY = 0x01U,
90  HAL_HASH_STATE_BUSY = 0x02U,
91  HAL_HASH_STATE_TIMEOUT = 0x03U,
92  HAL_HASH_STATE_ERROR = 0x04U
93 }HAL_HASH_StateTypeDef;
94 
103 typedef enum
104 {
105  HAL_HASH_PHASE_READY = 0x01U,
106  HAL_HASH_PHASE_PROCESS = 0x02U,
108 
117 typedef struct
118 {
119  HASH_InitTypeDef Init;
121  uint8_t *pHashInBuffPtr;
123  uint8_t *pHashOutBuffPtr;
125  __IO uint32_t HashBuffSize;
127  __IO uint32_t HashInCount;
129  __IO uint32_t HashITCounter;
133  HAL_HASH_PhaseTypeDef Phase;
135  DMA_HandleTypeDef *hdmain;
137  HAL_LockTypeDef Lock;
139  __IO HAL_HASH_StateTypeDef State;
140 } HASH_HandleTypeDef;
141 
151 /* Exported constants --------------------------------------------------------*/
159 #define HASH_ALGOSELECTION_SHA1 ((uint32_t)0x0000U)
160 #define HASH_ALGOSELECTION_SHA224 HASH_CR_ALGO_1
161 #define HASH_ALGOSELECTION_SHA256 HASH_CR_ALGO
162 #define HASH_ALGOSELECTION_MD5 HASH_CR_ALGO_0
170 #define HASH_ALGOMODE_HASH ((uint32_t)0x00000000U)
171 #define HASH_ALGOMODE_HMAC HASH_CR_MODE
179 #define HASH_DATATYPE_32B ((uint32_t)0x0000U)
180 #define HASH_DATATYPE_16B HASH_CR_DATATYPE_0
181 #define HASH_DATATYPE_8B HASH_CR_DATATYPE_1
182 #define HASH_DATATYPE_1B HASH_CR_DATATYPE
191 #define HASH_HMAC_KEYTYPE_SHORTKEY ((uint32_t)0x00000000U)
192 #define HASH_HMAC_KEYTYPE_LONGKEY HASH_CR_LKEY
200 #define HASH_FLAG_DINIS HASH_SR_DINIS
201 #define HASH_FLAG_DCIS HASH_SR_DCIS
202 #define HASH_FLAG_DMAS HASH_SR_DMAS
203 #define HASH_FLAG_BUSY HASH_SR_BUSY
204 #define HASH_FLAG_DINNE HASH_CR_DINNE
212 #define HASH_IT_DINI HASH_IMR_DINIE
213 #define HASH_IT_DCI HASH_IMR_DCIE
222 /* Exported macro ------------------------------------------------------------*/
223 
231 #define __HAL_HASH_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_HASH_STATE_RESET)
232 
243 #define __HAL_HASH_GET_FLAG(__FLAG__) (((__FLAG__) > 8U) ? ((HASH->CR & (__FLAG__)) == (__FLAG__)) :\
244  ((HASH->SR & (__FLAG__)) == (__FLAG__)))
245 
251 #define __HAL_HASH_SET_MDMAT() HASH->CR |= HASH_CR_MDMAT
252 
257 #define __HAL_HASH_RESET_MDMAT() HASH->CR &= (uint32_t)(~HASH_CR_MDMAT)
258 
263 #define __HAL_HASH_START_DIGEST() HASH->STR |= HASH_STR_DCAL
264 
270 #define __HAL_HASH_SET_NBVALIDBITS(SIZE) do{HASH->STR &= ~(HASH_STR_NBW);\
271  HASH->STR |= 8 * ((SIZE) % 4);\
272  }while(0)
273 
278 /* Include HASH HAL Extension module */
279 #include "stm32f7xx_hal_hash_ex.h"
280 /* Exported functions --------------------------------------------------------*/
281 
289 HAL_StatusTypeDef HAL_HASH_Init(HASH_HandleTypeDef *hhash);
290 HAL_StatusTypeDef HAL_HASH_DeInit(HASH_HandleTypeDef *hhash);
298 HAL_StatusTypeDef HAL_HASH_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
299 HAL_StatusTypeDef HAL_HASH_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
300 HAL_StatusTypeDef HAL_HASH_MD5_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
301 HAL_StatusTypeDef HAL_HASH_SHA1_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
309 HAL_StatusTypeDef HAL_HMAC_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
310 HAL_StatusTypeDef HAL_HMAC_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout);
318 HAL_StatusTypeDef HAL_HASH_SHA1_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer);
319 HAL_StatusTypeDef HAL_HASH_MD5_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer);
327 HAL_StatusTypeDef HAL_HASH_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
328 HAL_StatusTypeDef HAL_HASH_SHA1_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout);
329 HAL_StatusTypeDef HAL_HASH_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
330 HAL_StatusTypeDef HAL_HASH_MD5_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout);
338 HAL_StatusTypeDef HAL_HMAC_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
339 HAL_StatusTypeDef HAL_HMAC_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size);
347 void HAL_HASH_IRQHandler(HASH_HandleTypeDef *hhash);
355 HAL_HASH_StateTypeDef HAL_HASH_GetState(HASH_HandleTypeDef *hhash);
356 void HAL_HASH_MspInit(HASH_HandleTypeDef *hhash);
357 void HAL_HASH_MspDeInit(HASH_HandleTypeDef *hhash);
358 void HAL_HASH_InCpltCallback(HASH_HandleTypeDef *hhash);
359 void HAL_HASH_DgstCpltCallback(HASH_HandleTypeDef *hhash);
360 void HAL_HASH_ErrorCallback(HASH_HandleTypeDef *hhash);
369  /* Private types -------------------------------------------------------------*/
378 /* Private variables ---------------------------------------------------------*/
387 /* Private constants ---------------------------------------------------------*/
396 /* Private macros ------------------------------------------------------------*/
400 #define IS_HASH_ALGOSELECTION(__ALGOSELECTION__) (((__ALGOSELECTION__) == HASH_ALGOSELECTION_SHA1) || \
401  ((__ALGOSELECTION__) == HASH_ALGOSELECTION_SHA224) || \
402  ((__ALGOSELECTION__) == HASH_ALGOSELECTION_SHA256) || \
403  ((__ALGOSELECTION__) == HASH_ALGOSELECTION_MD5))
404 
405 
406 #define IS_HASH_ALGOMODE(__ALGOMODE__) (((__ALGOMODE__) == HASH_ALGOMODE_HASH) || \
407  ((__ALGOMODE__) == HASH_ALGOMODE_HMAC))
408 
409 
410 #define IS_HASH_DATATYPE(__DATATYPE__) (((__DATATYPE__) == HASH_DATATYPE_32B)|| \
411  ((__DATATYPE__) == HASH_DATATYPE_16B)|| \
412  ((__DATATYPE__) == HASH_DATATYPE_8B) || \
413  ((__DATATYPE__) == HASH_DATATYPE_1B))
414 
415 
416 #define IS_HASH_HMAC_KEYTYPE(__KEYTYPE__) (((__KEYTYPE__) == HASH_HMAC_KEYTYPE_SHORTKEY) || \
417  ((__KEYTYPE__) == HASH_HMAC_KEYTYPE_LONGKEY))
418 
419 #define IS_HASH_SHA1_BUFFER_SIZE(__SIZE__) ((((__SIZE__)%4) != 0)? 0U: 1U)
420 
421 
426 /* Private functions ---------------------------------------------------------*/
438 #endif /* STM32F756xx || STM32F777xx || STM32F779xx */
439 
443 #ifdef __cplusplus
444 }
445 #endif
446 
447 
448 #endif /* __STM32F7xx_HAL_HASH_H */
449 
450 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
HAL_LockTypeDef
HAL Lock structures definition.
Header file of HASH HAL Extension module.
#define __IO
Definition: core_cm0.h:213
#define HAL_HASHPhaseTypeDef
DMA handle Structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.