24 #ifndef __STM32F4xx_HASH_H
25 #define __STM32F4xx_HASH_H
77 uint32_t HASH_CSR[51];
89 #define HASH_AlgoSelection_SHA1 ((uint16_t)0x0000)
90 #define HASH_AlgoSelection_MD5 ((uint16_t)0x0080)
92 #define IS_HASH_ALGOSELECTION(ALGOSELECTION) (((ALGOSELECTION) == HASH_AlgoSelection_SHA1) || \
93 ((ALGOSELECTION) == HASH_AlgoSelection_MD5))
101 #define HASH_AlgoMode_HASH ((uint16_t)0x0000)
102 #define HASH_AlgoMode_HMAC ((uint16_t)0x0040)
104 #define IS_HASH_ALGOMODE(ALGOMODE) (((ALGOMODE) == HASH_AlgoMode_HASH) || \
105 ((ALGOMODE) == HASH_AlgoMode_HMAC))
113 #define HASH_DataType_32b ((uint16_t)0x0000)
114 #define HASH_DataType_16b ((uint16_t)0x0010)
115 #define HASH_DataType_8b ((uint16_t)0x0020)
116 #define HASH_DataType_1b ((uint16_t)0x0030)
118 #define IS_HASH_DATATYPE(DATATYPE) (((DATATYPE) == HASH_DataType_32b)|| \
119 ((DATATYPE) == HASH_DataType_16b)|| \
120 ((DATATYPE) == HASH_DataType_8b)|| \
121 ((DATATYPE) == HASH_DataType_1b))
129 #define HASH_HMACKeyType_ShortKey ((uint32_t)0x00000000)
130 #define HASH_HMACKeyType_LongKey ((uint32_t)0x00010000)
132 #define IS_HASH_HMAC_KEYTYPE(KEYTYPE) (((KEYTYPE) == HASH_HMACKeyType_ShortKey) || \
133 ((KEYTYPE) == HASH_HMACKeyType_LongKey))
141 #define IS_HASH_VALIDBITSNUMBER(VALIDBITS) ((VALIDBITS) <= 0x1F)
150 #define HASH_IT_DINI ((uint8_t)0x01)
151 #define HASH_IT_DCI ((uint8_t)0x02)
153 #define IS_HASH_IT(IT) ((((IT) & (uint8_t)0xFC) == 0x00) && ((IT) != 0x00))
154 #define IS_HASH_GET_IT(IT) (((IT) == HASH_IT_DINI) || ((IT) == HASH_IT_DCI))
163 #define HASH_FLAG_DINIS ((uint16_t)0x0001)
164 #define HASH_FLAG_DCIS ((uint16_t)0x0002)
165 #define HASH_FLAG_DMAS ((uint16_t)0x0004)
166 #define HASH_FLAG_BUSY ((uint16_t)0x0008)
167 #define HASH_FLAG_DINNE ((uint16_t)0x1000)
169 #define IS_HASH_GET_FLAG(FLAG) (((FLAG) == HASH_FLAG_DINIS) || \
170 ((FLAG) == HASH_FLAG_DCIS) || \
171 ((FLAG) == HASH_FLAG_DMAS) || \
172 ((FLAG) == HASH_FLAG_BUSY) || \
173 ((FLAG) == HASH_FLAG_DINNE))
175 #define IS_HASH_CLEAR_FLAG(FLAG)(((FLAG) == HASH_FLAG_DINIS) || \
176 ((FLAG) == HASH_FLAG_DCIS))
190 void HASH_DeInit(
void);
195 void HASH_Reset(
void);
198 void HASH_DataIn(uint32_t Data);
199 uint8_t HASH_GetInFIFOWordsNbr(
void);
200 void HASH_SetLastWordValidBitsNbr(uint16_t ValidNumber);
201 void HASH_StartDigest(
void);
206 void HASH_RestoreContext(
HASH_Context* HASH_ContextRestore);
209 void HASH_DMACmd(FunctionalState NewState);
212 void HASH_ITConfig(uint8_t HASH_IT, FunctionalState NewState);
213 FlagStatus HASH_GetFlagStatus(uint16_t HASH_FLAG);
214 void HASH_ClearFlag(uint16_t HASH_FLAG);
215 ITStatus HASH_GetITStatus(uint8_t HASH_IT);
216 void HASH_ClearITPendingBit(uint8_t HASH_IT);
219 ErrorStatus HASH_SHA1(uint8_t *Input, uint32_t Ilen, uint8_t Output[20]);
220 ErrorStatus HMAC_SHA1(uint8_t *Key, uint32_t Keylen,
221 uint8_t *Input, uint32_t Ilen,
225 ErrorStatus HASH_MD5(uint8_t *Input, uint32_t Ilen, uint8_t Output[16]);
226 ErrorStatus HMAC_MD5(uint8_t *Key, uint32_t Keylen,
227 uint8_t *Input, uint32_t Ilen,
uint32_t HASH_HMACKeyType
CMSIS Cortex-M4 Device Peripheral Access Layer Header File. This file contains all the peripheral reg...
uint32_t HASH_AlgoSelection
HASH context swapping structure definition.
HASH message digest result structure definition.
HASH Init structure definition.