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