#ifndef _SHA256_H #define _SHA256_H #define SHA256_SUM_LEN 32 #define SHA256_DER_LEN 19 extern const uint8_t sha256_der_prefix[]; /* Reset watchdog each time we process this many bytes */ #define CHUNKSZ_SHA256 (64 * 1024) #define SHA224_DIGEST_SIZE 28 #define SHA256_DIGEST_SIZE 32 #define SHA256_BLOCK_SIZE 64 /* SHA2 context */ typedef struct { /* hardware SHA compile*/ uint32_t h[8]; uint32_t tot_len; uint32_t len; uint32_t digest_len; uint8_t block[2 * SHA256_BLOCK_SIZE]; /* The last 16 bytes is for tmp value from SHA HW */ uint8_t buf[SHA256_DIGEST_SIZE + 16]; /* Used to store the final digest. */ /* software SHA compile*/ uint32_t total[2]; uint32_t state[8]; uint8_t buffer[64]; }sha2_ctx,sha256_context; void sha256_starts(sha256_context * ctx); void sha256_update(sha256_context *ctx, const uint8_t *input, uint32_t length); void sha256_finish(sha256_context * ctx, uint8_t digest[SHA256_SUM_LEN]); void sha256_csum_wd(const unsigned char *input, unsigned int ilen, unsigned char *output, unsigned int chunk_sz); #endif /* _SHA256_H */