diff --git a/src/headers/tomcrypt_misc.h b/src/headers/tomcrypt_misc.h index 76f4f6b..8bacea8 100644 --- a/src/headers/tomcrypt_misc.h +++ b/src/headers/tomcrypt_misc.h @@ -99,7 +99,6 @@ void crc32_finish(crc32_state *ctx, void *hash, unsigned long size); int crc32_test(void); #endif -/* yeah it's not exactly in misc in the library, but in testprof/x86_prof.c */ #if defined(LTC_TEST) && defined(LTC_TEST_DBG) void print_hex(const char* what, const void* v, const unsigned long l); int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which); diff --git a/src/misc/compare_testvector.c b/src/misc/compare_testvector.c new file mode 100644 index 0000000..2bf02ee --- /dev/null +++ b/src/misc/compare_testvector.c @@ -0,0 +1,74 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + */ + +#include "tomcrypt.h" + +/** + @file compare_testvecotr.c + Function to compare two testvectors and print a (detailed) error-message if required, Steffen Jaeckel +*/ + +#ifndef compare_testvector + +static void _print_hex(const char* what, const void* v, const unsigned long l) +{ + const unsigned char* p = v; + unsigned long x, y = 0, z; + fprintf(stderr, "%s contents: \n", what); + for (x = 0; x < l; ) { + fprintf(stderr, "%02X ", p[x]); + if (!(++x % 16) || x == l) { + if((x % 16) != 0) { + z = 16 - (x % 16); + if(z >= 8) + fprintf(stderr, " "); + for (; z != 0; --z) { + fprintf(stderr, " "); + } + } + fprintf(stderr, " | "); + for(; y < x; y++) { + if((y % 8) == 0) + fprintf(stderr, " "); + if(isgraph(p[y])) + fprintf(stderr, "%c", p[y]); + else + fprintf(stderr, "."); + } + fprintf(stderr, "\n"); + } + else if((x % 8) == 0) { + fprintf(stderr, " "); + } + } +} + +int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which) +{ + int res = 0; + if(is_len != should_len) + res = is_len > should_len ? -1 : 1; + else + res = XMEMCMP(is, should, MAX(is_len, should_len)); + + if (res != 0) { + fprintf(stderr, "Testvector #%i of %s failed:\n", which, what); + _print_hex("SHOULD", should, should_len); + _print_hex("IS ", is, is_len); + } + + return res; +} +#endif + + +/* $Source$ */ +/* $Revision$ */ +/* $Date$ */ diff --git a/tests/common.c b/tests/common.c index 028768f..2486586 100644 --- a/tests/common.c +++ b/tests/common.c @@ -61,25 +61,6 @@ void print_hex(const char* what, const void* v, const unsigned long l) } } -#ifndef compare_testvector -int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which) -{ - int res = 0; - if(is_len != should_len) - res = is_len > should_len ? -1 : 1; - else - res = XMEMCMP(is, should, MAX(is_len, should_len)); - - if (res != 0) { - fprintf(stderr, "Testvector #%i of %s failed:\n", which, what); - print_hex("SHOULD", should, should_len); - print_hex("IS ", is, is_len); - } - - return res; -} -#endif - prng_state yarrow_prng; /* diff --git a/tests/common.h b/tests/common.h index 05a3977..4650d0c 100644 --- a/tests/common.h +++ b/tests/common.h @@ -22,9 +22,6 @@ extern prng_state yarrow_prng; void run_cmd(int res, int line, char *file, char *cmd, const char *algorithm); void print_hex(const char* what, const void* v, const unsigned long l); -#ifndef compare_testvector -int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which); -#endif void register_algs(void); void setup_math(void);