void mget_md5_printf_hex(char *digest_hex, const char *fmt, ...) { char *plaintext; va_list args; int size; va_start(args, fmt); size = vasprintf(&plaintext, fmt, args); va_end(args); if (plaintext) { unsigned char digest[mget_hash_get_len(MGET_DIGTYPE_MD5)]; if (mget_hash_fast(MGET_DIGTYPE_MD5, plaintext, size, digest) == 0) { mget_memtohex(digest, sizeof(digest), digest_hex, sizeof(digest) * 2 +1); } xfree(plaintext); } }
static void test_utils(void) { int it; unsigned char src[1]; char dst1[3], dst2[3]; for (int ndst = 1; ndst <= 3; ndst++) { for (it = 0; it <= 255; it++) { src[0] = (unsigned char) it; mget_memtohex(src, 1, dst1, ndst); snprintf(dst2, ndst, "%02x", src[0]); if (strcmp(dst1, dst2)) { info_printf("buffer_to_hex failed: '%s' instead of '%s' (ndst=%d)\n", dst1, dst2, ndst); failed++; break; } } if (it >= 256) ok++; else failed++; } }