14 static uint8_t to_bin(
char c)
16 if (c >=
'0' && c <=
'9')
21 if (c >=
'A' && c <=
'F')
26 if (c >=
'a' && c <=
'f')
34 status_e hash_compare_ascii(
const struct heivs_hash_t *hash,
const void *state,
const char *str)
36 uint8_t orig[
strlen(str)/2];
37 size_t str_len =
strlen(str);
45 if (str_len/2 != hash->hash_size)
52 orig[i] = to_bin(str[2*i+0]) << 4;
53 orig[i] |= to_bin(str[2*i+1]) << 0;
56 if (
memcmp(state, orig,
sizeof(orig)))
64 status_e hash_test(
struct heivs_hash_t *hash,
const void *data,
size_t size,
const char *reference)
67 hash_declare_state(hash, state);
69 status = hash_init(hash, &state,
sizeof(state));
75 status = hash_run(hash, &state, data, size);
81 status = hash_finish(hash, state);
87 status = hash_compare_ascii(hash, state, reference);
96 status_e hash_test_zeroes(
struct heivs_hash_t *hash,
size_t size,
const char *reference)
98 uint32_t data[512/
sizeof(uint32_t)];
100 hash_declare_state(hash, state);
102 memset(data, 0x0,
sizeof(data));
104 status = hash_init(hash, &state,
sizeof(state));
112 uint32_t block_size = min(size,
sizeof(data));
113 status = hash_run(hash, &state, data, block_size);
122 status = hash_finish(hash, state);
128 status = hash_compare_ascii(hash, state, reference);
void * memset(void *dest, int n, size_t n)
int memcmp(const void *s1, const void *s2, size_t n)
#define ARRAY_SIZE(x)
Number of elements in the array.
size_t strlen(const char *str)