diff testprof/store_test.c @ 209:39d5d58461d6 libtomcrypt-orig LTC_1.05

Import of libtomcrypt 1.05
author Matt Johnston <matt@ucc.asn.au>
date Wed, 06 Jul 2005 03:53:40 +0000
parents 1c15b283127b
children
line wrap: on
line diff
--- a/testprof/store_test.c	Fri May 06 13:23:02 2005 +0000
+++ b/testprof/store_test.c	Wed Jul 06 03:53:40 2005 +0000
@@ -3,13 +3,17 @@
 /* Test store/load macros with offsets */
 int store_test(void)
 {
-  unsigned char buf[24];
+  unsigned char buf[256];
   int y;
   ulong32 L, L1;
   ulong64 LL, LL1;
+#ifdef LTC_FAST
+  int x, z;
+#endif
 
-  L = 0x12345678UL;
   for (y = 0; y < 4; y++) {
+      L  = 0x12345678UL;
+      L1 = 0;
       STORE32L(L, buf + y);
       LOAD32L(L1, buf + y);
       if (L1 != L) {
@@ -24,8 +28,9 @@
       }
   }
 
-  LL = CONST64 (0x01020304050607);
   for (y = 0; y < 8; y++) {
+      LL = CONST64 (0x01020304050607);
+      LL1 = 0;
       STORE64L(LL, buf + y);
       LOAD64L(LL1, buf + y);
       if (LL1 != LL) {
@@ -40,5 +45,34 @@
       }
   }
 
+/* test LTC_FAST */
+#ifdef LTC_FAST
+  y = 16;
+
+  for (z = 0; z < y; z++) {
+     /* fill y bytes with random */
+     yarrow_read(buf+z,   y, &yarrow_prng);
+     yarrow_read(buf+z+y, y, &yarrow_prng);
+
+     /* now XOR it byte for byte */
+     for (x = 0; x < y; x++) {
+         buf[2*y+z+x] = buf[z+x] ^ buf[z+y+x];
+     }
+
+     /* now XOR it word for word */
+     for (x = 0; x < y; x += sizeof(LTC_FAST_TYPE)) {
+        *((LTC_FAST_TYPE*)(&buf[3*y+z+x])) = *((LTC_FAST_TYPE*)(&buf[z+x])) ^ *((LTC_FAST_TYPE*)(&buf[z+y+x]));
+     }
+
+     if (memcmp(&buf[2*y+z], &buf[3*y+z], y)) {
+        fprintf(stderr, "\nLTC_FAST failed at offset %d\n", z);
+        return 1;
+     }
+  }
+#endif
   return 0;
 }
+
+/* $Source: /cvs/libtom/libtomcrypt/testprof/store_test.c,v $ */
+/* $Revision: 1.6 $ */
+/* $Date: 2005/05/05 14:35:59 $ */