1 /*********************************************************************
2 * Filename:   sha256.h
3 * Author:     Brad Conte (brad AT bradconte.com)
4 * Copyright:
5 * Disclaimer: This code is presented "as is" without any guarantees.
6 * Details:    Defines the API for the corresponding SHA1 implementation.
7 *********************************************************************/
8 
9 #ifndef SHA256_H
10 #define SHA256_H
11 
12 /*************************** HEADER FILES ***************************/
13 #include <stddef.h>
14 
15 /****************************** MACROS ******************************/
16 #define SHA256_BLOCK_SIZE 32            // SHA256 outputs a 32 unsigned char digest
17 
18 /**************************** DATA TYPES ****************************/
19 
20 typedef struct {
21 	unsigned char data[64];
22 	unsigned int datalen;
23 	unsigned long long bitlen;
24 	unsigned int state[8];
25 } SHA256_CTX;
26 
27 /*********************** FUNCTION DECLARATIONS **********************/
28 void sha256_init(SHA256_CTX *ctx);
29 void sha256_update(SHA256_CTX *ctx, const unsigned char data[], size_t len);
30 void sha256_final(SHA256_CTX *ctx, unsigned char hash[]);
31 
32 #endif   // SHA256_H
33