Mercurial > dropbear
comparison libtomcrypt/testprof/store_test.c @ 285:1b9e69c058d2
propagate from branch 'au.asn.ucc.matt.ltc.dropbear' (head 20dccfc09627970a312d77fb41dc2970b62689c3)
to branch 'au.asn.ucc.matt.dropbear' (head fdf4a7a3b97ae5046139915de7e40399cceb2c01)
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 08 Mar 2006 13:23:58 +0000 |
parents | |
children | f849a5ca2efc |
comparison
equal
deleted
inserted
replaced
281:997e6f7dc01e | 285:1b9e69c058d2 |
---|---|
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 $ */ |