Home | History | Annotate | Download | only in testprof
      1 #include <tomcrypt_test.h>
      2 
      3 /* Test store/load macros with offsets */
      4 int store_test(void)
      5 {
      6   unsigned char buf[256];
      7   int y;
      8   ulong32 L, L1;
      9   ulong64 LL, LL1;
     10 #ifdef LTC_FAST
     11   int x, z;
     12 #endif
     13 
     14   for (y = 0; y < 4; y++) {
     15       L  = 0x12345678UL;
     16       L1 = 0;
     17       STORE32L(L, buf + y);
     18       LOAD32L(L1, buf + y);
     19       if (L1 != L) {
     20          fprintf(stderr, "\n32L failed at offset %d\n", y);
     21          return 1;
     22       }
     23       STORE32H(L, buf + y);
     24       LOAD32H(L1, buf + y);
     25       if (L1 != L) {
     26          fprintf(stderr, "\n32H failed at offset %d\n", y);
     27          return 1;
     28       }
     29   }
     30 
     31   for (y = 0; y < 8; y++) {
     32       LL = CONST64 (0x01020304050607);
     33       LL1 = 0;
     34       STORE64L(LL, buf + y);
     35       LOAD64L(LL1, buf + y);
     36       if (LL1 != LL) {
     37          fprintf(stderr, "\n64L failed at offset %d\n", y);
     38          return 1;
     39       }
     40       STORE64H(LL, buf + y);
     41       LOAD64H(LL1, buf + y);
     42       if (LL1 != LL) {
     43          fprintf(stderr, "\n64H failed at offset %d\n", y);
     44          return 1;
     45       }
     46   }
     47 
     48 /* test LTC_FAST */
     49 #ifdef LTC_FAST
     50   y = 16;
     51 
     52   for (z = 0; z < y; z++) {
     53      /* fill y bytes with random */
     54      yarrow_read(buf+z,   y, &yarrow_prng);
     55      yarrow_read(buf+z+y, y, &yarrow_prng);
     56 
     57      /* now XOR it byte for byte */
     58      for (x = 0; x < y; x++) {
     59          buf[2*y+z+x] = buf[z+x] ^ buf[z+y+x];
     60      }
     61 
     62      /* now XOR it word for word */
     63      for (x = 0; x < y; x += sizeof(LTC_FAST_TYPE)) {
     64         *((LTC_FAST_TYPE*)(&buf[3*y+z+x])) = *((LTC_FAST_TYPE*)(&buf[z+x])) ^ *((LTC_FAST_TYPE*)(&buf[z+y+x]));
     65      }
     66 
     67      if (memcmp(&buf[2*y+z], &buf[3*y+z], y)) {
     68         fprintf(stderr, "\nLTC_FAST failed at offset %d\n", z);
     69         return 1;
     70      }
     71   }
     72 #endif
     73   return 0;
     74 }
     75 
     76 /* $Source: /cvs/libtom/libtomcrypt/testprof/store_test.c,v $ */
     77 /* $Revision: 1.6 $ */
     78 /* $Date: 2005/05/05 14:35:59 $ */
     79