Major cleanup of makefiles, api tests.
[ccan] / ccan / md4 / test / api.c
1 #include "md4/md4.h"
2 #include <tap/tap.h>
3 #include <stdio.h>
4 #include <string.h>
5
6 static void check_md4(const char *string, const char *expected)
7 {
8         struct md4_ctx ctx;
9         unsigned int i;
10         char result[33];
11
12         md4_init(&ctx);
13         md4_hash(&ctx, string, strlen(string));
14         md4_finish(&ctx);
15         for (i = 0; i < sizeof(ctx.hash.bytes); i++)
16                 sprintf(result+i*2, "%02x", ctx.hash.bytes[i]);
17         ok(strcmp(result, expected) == 0,
18            "Expected %s, got %s", expected, result);
19 }
20
21 int main(int argc, char *argv[])
22 {
23         /* Tests taken from the RFC. */
24         plan_tests(7);
25
26         check_md4("", "31d6cfe0d16ae931b73c59d7e0c089c0");
27         check_md4("a", "bde52cb31de33e46245e05fbdbd6fb24");
28         check_md4("abc", "a448017aaf21d8525fc10ae87aa6729d");
29         check_md4("message digest", "d9130a8164549fe818874806e1c7014b");
30         check_md4("abcdefghijklmnopqrstuvwxyz",
31                   "d79e1c308aa5bbcdeea8ed63df412da9");
32         check_md4("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
33                    "0123456789",
34                   "043f8582f241db351ce627e153e7f0e4");
35         check_md4("1234567890123456789012345678901234567890123456789"
36                    "0123456789012345678901234567890",
37                   "e33b4ddc9c38f2199c3e7b164fcc0536");
38         exit(exit_status());
39 }