114 lines
2.0 KiB
C
114 lines
2.0 KiB
C
#include <fx/hash.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
static void print_digest(
|
|
const char *func_name,
|
|
fx_hash_function func,
|
|
const char *msg,
|
|
size_t msg_len,
|
|
size_t digest_len)
|
|
{
|
|
unsigned char digest[128];
|
|
|
|
fx_hash_ctx ctx;
|
|
if (!FX_OK(fx_hash_ctx_init(&ctx, func))) {
|
|
printf("fx_hash_ctx_init failed\n");
|
|
return;
|
|
}
|
|
|
|
if (!FX_OK(fx_hash_ctx_update(&ctx, msg, msg_len))) {
|
|
printf("fx_hash_ctx_update failed\n");
|
|
return;
|
|
}
|
|
|
|
if (!FX_OK(fx_hash_ctx_finish(&ctx, digest, sizeof digest))) {
|
|
printf("fx_hash_ctx_finish failed\n");
|
|
return;
|
|
}
|
|
|
|
char digest_str[256];
|
|
for (size_t i = 0; i < digest_len; i++) {
|
|
snprintf(
|
|
digest_str + (i * 2),
|
|
sizeof digest_str - (i * 2),
|
|
"%02x",
|
|
digest[i]);
|
|
}
|
|
|
|
printf("%s(%s) = %s\n", func_name, msg, digest_str);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
|
|
const char *msg = "Hello, world!";
|
|
size_t msg_len = strlen(msg);
|
|
|
|
print_digest("MD4", FX_HASH_MD4, msg, msg_len, FX_DIGEST_LENGTH_MD4);
|
|
print_digest("MD5", FX_HASH_MD5, msg, msg_len, FX_DIGEST_LENGTH_MD5);
|
|
print_digest("SHA1", FX_HASH_SHA1, msg, msg_len, FX_DIGEST_LENGTH_SHA1);
|
|
print_digest(
|
|
"SHA224",
|
|
FX_HASH_SHA2_224,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHA2_224);
|
|
print_digest(
|
|
"SHA256",
|
|
FX_HASH_SHA2_256,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHA2_256);
|
|
print_digest(
|
|
"SHA384",
|
|
FX_HASH_SHA2_384,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHA2_384);
|
|
print_digest(
|
|
"SHA512",
|
|
FX_HASH_SHA2_512,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHA2_512);
|
|
print_digest(
|
|
"SHA3-224",
|
|
FX_HASH_SHA3_224,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHA3_224);
|
|
print_digest(
|
|
"SHA3-256",
|
|
FX_HASH_SHA3_256,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHA3_256);
|
|
print_digest(
|
|
"SHA3-384",
|
|
FX_HASH_SHA3_384,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHA3_384);
|
|
print_digest(
|
|
"SHA3-512",
|
|
FX_HASH_SHA3_512,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHA3_512);
|
|
print_digest(
|
|
"SHAKE128",
|
|
FX_HASH_SHAKE128,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHAKE128);
|
|
print_digest(
|
|
"SHAKE256",
|
|
FX_HASH_SHAKE256,
|
|
msg,
|
|
msg_len,
|
|
FX_DIGEST_LENGTH_SHAKE256);
|
|
|
|
return 0;
|
|
}
|