Path: blob/master/scryptjane/scrypt-jane-hash.h
1299 views
#if defined(SCRYPT_BLAKE512)1#include "scrypt-jane-hash_blake512.h"2#elif defined(SCRYPT_BLAKE256)3#include "scrypt-jane-hash_blake256.h"4#elif defined(SCRYPT_SHA512)5#include "scrypt-jane-hash_sha512.h"6#elif defined(SCRYPT_SHA256)7#include "scrypt-jane-hash_sha256.h"8#elif defined(SCRYPT_SKEIN512)9#include "scrypt-jane-hash_skein512.h"10#elif defined(SCRYPT_KECCAK512) || defined(SCRYPT_KECCAK256)11#include "scrypt-jane-hash_keccak.h"12#else13#define SCRYPT_HASH "ERROR"14#define SCRYPT_HASH_BLOCK_SIZE 6415#define SCRYPT_HASH_DIGEST_SIZE 6416typedef struct scrypt_hash_state_t { size_t dummy; } scrypt_hash_state;17typedef uint8_t scrypt_hash_digest[SCRYPT_HASH_DIGEST_SIZE];18static void scrypt_hash_init(scrypt_hash_state *S) {}19static void scrypt_hash_update(scrypt_hash_state *S, const uint8_t *in, size_t inlen) {}20static void scrypt_hash_finish(scrypt_hash_state *S, uint8_t *hash) {}21static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = {0};22#error must define a hash function!23#endif2425#include "scrypt-jane-pbkdf2.h"2627#define SCRYPT_TEST_HASH_LEN 257 /* (2 * largest block size) + 1 */2829static int30scrypt_test_hash() {31scrypt_hash_state st;32scrypt_hash_digest hash, final;33uint8_t msg[SCRYPT_TEST_HASH_LEN];34size_t i;3536for (i = 0; i < SCRYPT_TEST_HASH_LEN; i++)37msg[i] = (uint8_t)i;3839scrypt_hash_init(&st);40for (i = 0; i < SCRYPT_TEST_HASH_LEN + 1; i++) {41scrypt_hash(hash, msg, i);42scrypt_hash_update(&st, hash, sizeof(hash));43}44scrypt_hash_finish(&st, final);45return scrypt_verify(final, scrypt_test_hash_expected, SCRYPT_HASH_DIGEST_SIZE);46}47484950