void blakecoinhash(void *state, const void *input) { sph_blake256_context ctx; uint8_t *ending = (uint8_t*) input; ending += 64; // do one memcopy to get a fresh context if (!ctx_midstate_done) { blakecoin_init(&blake_mid); blakecoin(&blake_mid, input, 64); ctx_midstate_done = true; } memcpy(&ctx, &blake_mid, sizeof(blake_mid)); blakecoin(&ctx, ending, 16); blakecoin_close(&ctx, state); }
void blakecoinhash(void *state, const void *input) { sph_blake256_context ctx; uint8_t hash[64]; uint8_t *ending = (uint8_t*) input; ending += 64; // do one memcopy to get a fresh context if (!ctx_midstate_done) { init_blake_hash(); blakecoin(&blake_mid, input, 64); } memcpy(&ctx, &blake_mid, sizeof(blake_mid)); blakecoin(&ctx, ending, 16); blakecoin_close(&ctx, hash); memcpy(state, hash, 32); }