SHA-1 Hash (sha1)
SHA-1 secure hash algorithm, 160-bit digest computation. Supports one-shot and streaming interfaces.
Constants and Data Structure
#define SHA1_DIGEST_SIZE (20)
struct sha1_ctx_t {
uint64_t count;
uint8_t buf[64];
uint32_t state[5];
};
API
One-shot
const uint8_t * sha1_hash(const void * data, int len, uint8_t * digest);
data— Input datalen— Data lengthdigest— Output 20-byte digest
Returns digest pointer.
Streaming
void sha1_init(struct sha1_ctx_t * ctx);
void sha1_update(struct sha1_ctx_t * ctx, const void * data, int len);
const uint8_t * sha1_final(struct sha1_ctx_t * ctx);
sha1_init— Initialize contextsha1_update— Feed data, may be called multiple timessha1_final— Finalize and return digest pointer (points to internal context buffer)
Example
One-shot
uint8_t msg[] = { 'x', 'b', 'o', 'o', 't' };
uint8_t digest[SHA1_DIGEST_SIZE];
sha1_hash(msg, sizeof(msg), digest);
/* digest = 0x7182df07 c7f20675 0fe2ed98 580ab526 cb839f5d */
Streaming
struct sha1_ctx_t ctx;
uint8_t digest[SHA1_DIGEST_SIZE];
sha1_init(&ctx);
sha1_update(&ctx, chunk1, len1);
sha1_update(&ctx, chunk2, len2);
sha1_final(&ctx);