void sha512_test (const void *msg, int len, void *out) { sha512_ctx ctx; rhash_sha512_init (&ctx); rhash_sha512_update (&ctx, msg, len); rhash_sha512_final (&ctx, out); }
static inline void HashFunction_Final(hash_ctx *const ctx, unsigned char *const result) { switch(ctx->hashType) { case STD_HASHTYPE_CRC_32: rhash_crc32_final(&ctx->data.crc32, result); return; case STD_HASHTYPE_MD5_128: rhash_md5_final(&ctx->data.md5, result); return; case STD_HASHTYPE_SHA1_160: rhash_sha1_final(&ctx->data.sha1, result); return; case STD_HASHTYPE_SHA2_224: case STD_HASHTYPE_SHA2_256: rhash_sha256_final(&ctx->data.sha256, result); return; case STD_HASHTYPE_SHA2_384: case STD_HASHTYPE_SHA2_512: rhash_sha512_final(&ctx->data.sha512, result); return; case STD_HASHTYPE_SHA3_224: case STD_HASHTYPE_SHA3_256: case STD_HASHTYPE_SHA3_384: case STD_HASHTYPE_SHA3_512: rhash_sha3_final(&ctx->data.sha3, result); return; case STD_HASHTYPE_BLK2_224: case STD_HASHTYPE_BLK2_256: case STD_HASHTYPE_BLK2_384: case STD_HASHTYPE_BLK2_512: if(blake2b_final(&ctx->data.balke2, result, Blake2_Size(ctx->hashType)) != 0) { MessageBox(NULL, T("Blake2_Final internal error, going to abort!"), T("StdUtils::HashFunction_Final"), MB_ICONSTOP | MB_TOPMOST); abort(); } return; default: MessageBox(NULL, T("Inconsistent state detected, going to abort!"), T("StdUtils::HashFunction_Final"), MB_ICONSTOP | MB_TOPMOST); abort(); } }