ソースを参照

move `compare_testvector()` implementation to the library

Steffen Jaeckel 8 年 前
コミット
b78c5551f7
4 ファイル変更74 行追加23 行削除
  1. 0 1
      src/headers/tomcrypt_misc.h
  2. 74 0
      src/misc/compare_testvector.c
  3. 0 19
      tests/common.c
  4. 0 3
      tests/common.h

+ 0 - 1
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);

+ 74 - 0
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$ */

+ 0 - 19
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;
 
 /*

+ 0 - 3
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);