#include #include "util.h" #include "sha2.h" /* Hashes: * SHA-224 * SHA-256 * SHA-384 * SHA-512 * SHA-512/224 * SHA-512/256 */ /* From Fitz */ typedef struct { unsigned int state[8]; unsigned int count[2]; union { unsigned char u8[64]; unsigned int u32[16]; } buffer; } fz_sha256; void fz_sha256_init(fz_sha256 *state); void fz_sha256_update(fz_sha256 *state, const unsigned char *input, unsigned int inlen); void fz_sha256_final(fz_sha256 *state, unsigned char digest[32]); /* SHA-256 */ void sha256_hash(uint8_t out[32], const uint8_t *data, int len) { fz_sha256 state = {}; fz_sha256_init(&state); fz_sha256_update(&state, data, len); fz_sha256_final(&state, out); } /* Test */ void sha256_test(void) { uint8_t in[] = "hello"; uint8_t out[32] = {}; sha256_hash(out, in, sizeof(in)-1); hexdump("Input:", "\t%04x: ", in, sizeof(in)-1); hexdump("Output:", "\t%04x: ", out, sizeof(out)); }