From 621a75ab280c2b04b5bb66c95763e18cce6ee14d Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Tue, 4 Mar 2014 18:04:29 +0100 Subject: [PATCH] base64: add and most important - execute tests --- testprof/base64_test.c | 45 +++++++++++++++++++++++++++++++++++++++--- testprof/misc_test.c | 3 +++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/testprof/base64_test.c b/testprof/base64_test.c index 5ce55dd..04381b8 100644 --- a/testprof/base64_test.c +++ b/testprof/base64_test.c @@ -3,8 +3,47 @@ int base64_test(void) { unsigned char in[64], out[256], tmp[64]; - unsigned long x, l1, l2; - + unsigned long x, l1, l2, slen1; + + /* + TEST CASES SOURCE: + + Network Working Group S. Josefsson + Request for Comments: 4648 SJD + Obsoletes: 3548 October 2006 + Category: Standards Track + */ + const struct { + const char* s; + const char* b64; + } cases[] = { + {"", "" }, + {"f", "Zg==" }, + {"fo", "Zm8=" }, + {"foo", "Zm9v" }, + {"foob", "Zm9vYg==" }, + {"fooba", "Zm9vYmE=" }, + {"foobar", "Zm9vYmFy"} + }; + + for (x = 0; x < sizeof(cases)/sizeof(cases[0]); ++x) { + slen1 = strlen(cases[x].s); + l1 = sizeof(out); + DO(base64_encode(cases[x].s, slen1, out, &l1)); + l2 = sizeof(tmp); + DO(base64_decode(out, l1, tmp, &l2)); + if (l2 != slen1 || l1 != strlen(cases[x].b64) || memcmp(tmp, cases[x].s, l2) || memcmp(out, cases[x].b64, l1)) { + fprintf(stderr, "\nbase64 failed case %lu", x); + fprintf(stderr, "\nbase64 should: %s", cases[x].b64); + out[sizeof(out)-1] = '\0'; + fprintf(stderr, "\nbase64 is: %s", out); + fprintf(stderr, "\nplain should: %s", cases[x].s); + tmp[sizeof(tmp)-1] = '\0'; + fprintf(stderr, "\nplain is: %s\n", tmp); + return 1; + } + } + for (x = 0; x < 64; x++) { yarrow_read(in, x, &yarrow_prng); l1 = sizeof(out); @@ -12,7 +51,7 @@ int base64_test(void) l2 = sizeof(tmp); DO(base64_decode(out, l1, tmp, &l2)); if (l2 != x || memcmp(tmp, in, x)) { - fprintf(stderr, "base64 failed %lu %lu %lu", x, l1, l2); + fprintf(stderr, "base64 failed %lu %lu %lu", x, l1, l2); return 1; } } diff --git a/testprof/misc_test.c b/testprof/misc_test.c index 889ab79..242bb01 100644 --- a/testprof/misc_test.c +++ b/testprof/misc_test.c @@ -7,6 +7,9 @@ int misc_test(void) #endif #ifdef LTC_PKCS_5 DO(pkcs_5_test()); +#endif +#ifdef LTC_BASE64 + DO(base64_test()); #endif return 0; }