105 SHA1_Message_Block_Size = 64, SHA224_Message_Block_Size = 64,
106 SHA256_Message_Block_Size = 64, SHA384_Message_Block_Size = 128,
107 SHA512_Message_Block_Size = 128,
108 USHA_Max_Message_Block_Size = SHA512_Message_Block_Size,
109 SHA1HashSize = 20, SHA224HashSize = 28, SHA256HashSize = 32,
110 SHA384HashSize = 48, SHA512HashSize = 64,
111 USHAMaxHashSize = SHA512HashSize,
113 SHA1HashSizeBits = 160, SHA224HashSizeBits = 224,
114 SHA256HashSizeBits = 256, SHA384HashSizeBits = 384,
115 SHA512HashSizeBits = 512, USHAMaxHashSizeBits = SHA512HashSizeBits
121 typedef enum SHAversion {
122 SHA1, SHA224, SHA256, SHA384, SHA512
130 uint32_t Intermediate_Hash[SHA1HashSize/4];
132 uint32_t Length_High;
135 int_least16_t Message_Block_Index;
137 uint8_t Message_Block[SHA1_Message_Block_Size];
148 uint32_t Intermediate_Hash[SHA256HashSize/4];
150 uint32_t Length_High;
153 int_least16_t Message_Block_Index;
155 uint8_t Message_Block[SHA256_Message_Block_Size];
165 #ifdef USE_32BIT_ONLY
166 uint32_t Intermediate_Hash[SHA512HashSize/4];
169 uint64_t Intermediate_Hash[SHA512HashSize/8];
170 uint64_t Length_High, Length_Low;
173 int_least16_t Message_Block_Index;
175 uint8_t Message_Block[SHA512_Message_Block_Size];
215 unsigned char k_opad[USHA_Max_Message_Block_Size];
230 unsigned char prk[USHAMaxHashSize];
243 unsigned int bytecount);
245 unsigned int bit_count);
247 uint8_t Message_Digest[SHA1HashSize]);
250 extern int SHA224Input(
SHA224Context *,
const uint8_t *bytes,
251 unsigned int bytecount);
253 unsigned int bit_count);
255 uint8_t Message_Digest[SHA224HashSize]);
259 extern int SHA256Input(
SHA256Context *,
const uint8_t *bytes,
260 unsigned int bytecount);
262 unsigned int bit_count);
264 uint8_t Message_Digest[SHA256HashSize]);
268 extern int SHA384Input(
SHA384Context *,
const uint8_t *bytes,
269 unsigned int bytecount);
271 unsigned int bit_count);
273 uint8_t Message_Digest[SHA384HashSize]);
277 extern int SHA512Input(
SHA512Context *,
const uint8_t *bytes,
278 unsigned int bytecount);
280 unsigned int bit_count);
282 uint8_t Message_Digest[SHA512HashSize]);
285 extern int USHAReset(
USHAContext *context, SHAversion whichSha);
287 const uint8_t *bytes,
unsigned int bytecount);
289 uint8_t bits,
unsigned int bit_count);
291 uint8_t Message_Digest[USHAMaxHashSize]);
292 extern int USHABlockSize(
enum SHAversion whichSha);
293 extern int USHAHashSize(
enum SHAversion whichSha);
294 extern int USHAHashSizeBits(
enum SHAversion whichSha);
295 extern const char *USHAHashName(
enum SHAversion whichSha);
307 #ifndef USE_MODIFIED_MACROS
308 #define SHA_Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z)))
309 #define SHA_Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
315 #define SHA_Ch(x, y, z) (((x) & ((y) ^ (z))) ^ (z))
316 #define SHA_Maj(x, y, z) (((x) & ((y) | (z))) | ((y) & (z)))
320 #define SHA_Parity(x, y, z) ((x) ^ (y) ^ (z))
int SHA1FinalBits(SHA1Context *context, uint8_t message_bits, unsigned int length)
SHA1FinalBits Add in any final bits of the message.
int SHA1Result(SHA1Context *context, uint8_t Message_Digest[SHA1HashSize])
SHA1Result Returns the resulting 160-bit digest.
int SHA1Reset(SHA1Context *context)
SHA1Reset.
int SHA1Input(SHA1Context *context, const uint8_t *message_array, unsigned length)
SHA1Input.