1 /* test the multi helpers... */
2 #include <tomcrypt.h>
3
main(void)4 int main(void)
5 {
6 unsigned char key[16], buf[2][MAXBLOCKSIZE];
7 unsigned long len, len2;
8
9
10 /* register algos */
11 register_hash(&sha256_desc);
12 register_cipher(&aes_desc);
13
14 /* HASH testing */
15 len = sizeof(buf[0]);
16 hash_memory(find_hash("sha256"), (unsigned char*)"hello", 5, buf[0], &len);
17 len2 = sizeof(buf[0]);
18 hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"hello", 5, NULL);
19 if (len != len2 || memcmp(buf[0], buf[1], len)) {
20 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
21 return EXIT_FAILURE;
22 }
23 len2 = sizeof(buf[0]);
24 hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL, 0);
25 if (len != len2 || memcmp(buf[0], buf[1], len)) {
26 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
27 return EXIT_FAILURE;
28 }
29 len2 = sizeof(buf[0]);
30 hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL);
31 if (len != len2 || memcmp(buf[0], buf[1], len)) {
32 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
33 return EXIT_FAILURE;
34 }
35
36 /* HMAC */
37 len = sizeof(buf[0]);
38 hmac_memory(find_hash("sha256"), key, 16, (unsigned char*)"hello", 5, buf[0], &len);
39 len2 = sizeof(buf[0]);
40 hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5UL, NULL);
41 if (len != len2 || memcmp(buf[0], buf[1], len)) {
42 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
43 return EXIT_FAILURE;
44 }
45 len2 = sizeof(buf[0]);
46 hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL);
47 if (len != len2 || memcmp(buf[0], buf[1], len)) {
48 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
49 return EXIT_FAILURE;
50 }
51 len2 = sizeof(buf[0]);
52 hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL);
53 if (len != len2 || memcmp(buf[0], buf[1], len)) {
54 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
55 return EXIT_FAILURE;
56 }
57
58 /* OMAC */
59 len = sizeof(buf[0]);
60 omac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len);
61 len2 = sizeof(buf[0]);
62 omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5UL, NULL);
63 if (len != len2 || memcmp(buf[0], buf[1], len)) {
64 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
65 return EXIT_FAILURE;
66 }
67 len2 = sizeof(buf[0]);
68 omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL);
69 if (len != len2 || memcmp(buf[0], buf[1], len)) {
70 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
71 return EXIT_FAILURE;
72 }
73 len2 = sizeof(buf[0]);
74 omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL);
75 if (len != len2 || memcmp(buf[0], buf[1], len)) {
76 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
77 return EXIT_FAILURE;
78 }
79
80 /* PMAC */
81 len = sizeof(buf[0]);
82 pmac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len);
83 len2 = sizeof(buf[0]);
84 pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5, NULL);
85 if (len != len2 || memcmp(buf[0], buf[1], len)) {
86 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
87 return EXIT_FAILURE;
88 }
89 len2 = sizeof(buf[0]);
90 pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL);
91 if (len != len2 || memcmp(buf[0], buf[1], len)) {
92 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
93 return EXIT_FAILURE;
94 }
95 len2 = sizeof(buf[0]);
96 pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL);
97 if (len != len2 || memcmp(buf[0], buf[1], len)) {
98 printf("Failed: %d %lu %lu\n", __LINE__, len, len2);
99 return EXIT_FAILURE;
100 }
101
102
103 printf("All passed\n");
104 return EXIT_SUCCESS;
105 }
106
107
108 /* $Source: /cvs/libtom/libtomcrypt/demos/multi.c,v $ */
109 /* $Revision: 1.3 $ */
110 /* $Date: 2006/06/07 22:25:09 $ */
111