diff testprof/der_tests.c @ 191:1c15b283127b libtomcrypt-orig

Import of libtomcrypt 1.02 with manual path rename rearrangement etc
author Matt Johnston <matt@ucc.asn.au>
date Fri, 06 May 2005 13:23:02 +0000
parents
children 39d5d58461d6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testprof/der_tests.c	Fri May 06 13:23:02 2005 +0000
@@ -0,0 +1,94 @@
+#include <tomcrypt_test.h>
+
+#ifndef LTC_DER
+
+int der_tests(void)
+{
+   printf("NOP");
+   return 0;
+}
+
+#else
+
+int der_tests(void)
+{
+   unsigned long x, y, z, zz;
+   unsigned char buf[2][4096];
+   mp_int a, b, c, d, e, f, g;
+
+   DO(mpi_to_ltc_error(mp_init_multi(&a, &b, &c, &d, &e, &f, &g, NULL)));
+   for (zz = 0; zz < 16; zz++) {
+      for (z = 0; z < 1024; z++) {
+         if (yarrow_read(buf[0], z, &yarrow_prng) != z) {
+            printf("Failed to read %lu bytes from yarrow\n", z);
+            return 1;
+         }
+         DO(mpi_to_ltc_error(mp_read_unsigned_bin(&a, buf[0], z)));
+         x = sizeof(buf[0]);
+         DO(der_encode_integer(&a, buf[0], &x));
+         y = x;
+         mp_zero(&b);
+         DO(der_decode_integer(buf[0], &y, &b));
+         if (y != x || mp_cmp(&a, &b) != MP_EQ) {
+            printf("%lu: %lu vs %lu\n", z, x, y);
+#ifdef BN_MP_TORADIX_C
+            mp_todecimal(&a, buf[0]);
+            mp_todecimal(&b, buf[1]);
+            printf("a == %s\nb == %s\n", buf[0], buf[1]);
+#endif
+            mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL);
+            return 1;
+         }
+      }
+   }
+   
+
+/* test the multi */
+   mp_set(&a, 1);
+   x = sizeof(buf[0]);
+   DO(der_put_multi_integer(buf[0], &x, &a, NULL));
+   y = x;
+   mp_zero(&a);
+   DO(der_get_multi_integer(buf[0], &y, &a, NULL));   
+   if (x != y || mp_cmp_d(&a, 1)) {
+      printf("%lu, %lu, %d\n", x, y, mp_cmp_d(&a, 1));
+      mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL);
+      return 1;
+   }   
+
+   mp_set(&a, 1);
+   mp_set(&b, 2);
+   x = sizeof(buf[0]);
+   DO(der_put_multi_integer(buf[0], &x, &a, &b, NULL));
+   y = x;
+   mp_zero(&a);
+   mp_zero(&b);
+   DO(der_get_multi_integer(buf[0], &y, &a, &b, NULL));   
+   if (x != y || mp_cmp_d(&a, 1) || mp_cmp_d(&b, 2)) {
+      printf("%lu, %lu, %d, %d\n", x, y, mp_cmp_d(&a, 1), mp_cmp_d(&b, 2));
+      mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL);
+      return 1;
+   }   
+
+   mp_set(&a, 1);
+   mp_set(&b, 2);
+   mp_set(&c, 3);
+   x = sizeof(buf[0]);
+   DO(der_put_multi_integer(buf[0], &x, &a, &b, &c, NULL));
+   y = x;
+   mp_zero(&a);
+   mp_zero(&b);
+   mp_zero(&c);
+   DO(der_get_multi_integer(buf[0], &y, &a, &b, &c, NULL));   
+   if (x != y || mp_cmp_d(&a, 1) || mp_cmp_d(&b, 2) || mp_cmp_d(&c, 3)) {
+      printf("%lu, %lu, %d, %d, %d\n", x, y, mp_cmp_d(&a, 1), mp_cmp_d(&b, 2), mp_cmp_d(&c, 3));
+      mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL);
+      return 1;
+   }   
+
+
+   mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL);
+   return 0;
+}
+
+#endif