void hb_hmac_sha512_final(hmac_sha512_ctx *ctx, unsigned char *mac, unsigned int mac_size) { unsigned char digest_inside[SHA512_DIGEST_SIZE]; unsigned char mac_temp[SHA512_DIGEST_SIZE]; hb_sha512_final(&ctx->ctx_inside, digest_inside); hb_sha512_update(&ctx->ctx_outside, digest_inside, SHA512_DIGEST_SIZE); hb_sha512_final(&ctx->ctx_outside, mac_temp); memcpy(mac, mac_temp, mac_size); }
void hb_sha512( const void * message, unsigned int len, unsigned char * digest ) { sha512_ctx ctx; hb_sha512_init( &ctx ); hb_sha512_update( &ctx, message, len ); hb_sha512_final( &ctx, digest ); }