blob: c8eb2be92464dc7621adb43e16bc6284604a1f09 [file] [log] [blame] [raw]
#include <ndk_hash.h>
// openssl hashes
#define NDK_OPENSSL_HASH(type,ctxt_type,upper) \
u_char md [ctxt_type ## _DIGEST_LENGTH]; \
ctxt_type ##_CTX c; \
\
type ## _Init (&c); \
type ## _Update (&c, data, len); \
type ## _Final (md, &c); \
\
ndk_hex_dump (p, (u_char *) md, ctxt_type ## _DIGEST_LENGTH); \
if (upper) { \
ndk_strtoupper (p, (ctxt_type ## _DIGEST_LENGTH) *2); \
}
#ifdef NDK_MD5
void
ndk_md5_hash (u_char *p, char *data, size_t len)
{
NDK_OPENSSL_HASH (MD5, MD5, 0);
}
void
ndk_md5_hash_upper (u_char *p, char *data, size_t len)
{
NDK_OPENSSL_HASH (MD5, MD5, 1);
}
#endif
#ifdef NDK_SHA1
void
ndk_sha1_hash (u_char *p, char *data, size_t len)
{
NDK_OPENSSL_HASH (SHA1, SHA, 0);
}
void
ndk_sha1_hash_upper (u_char *p, char *data, size_t len)
{
NDK_OPENSSL_HASH (SHA1, SHA, 1);
}
#endif
// non-openssl hashes
#ifdef NDK_MURMUR2
#include "hash/murmurhash2.c"
void
ndk_murmur2_hash (u_char *p, char *data, size_t len)
{
uint32_t hash;
hash = MurmurHash2 (data, len, 47);
ndk_hex_dump (p, (u_char*) &hash, 4);
}
void
ndk_murmur2_hash_upper (u_char *p, char *data, size_t len)
{
uint32_t hash;
hash = MurmurHash2 (data, len, 47);
ndk_hex_dump (p, (u_char*) &hash, 4);
ndk_strtoupper (p, 8);
}
#endif