15
|
1 /* test the ciphers and hashes using their built-in self-tests */ |
|
2 |
|
3 #include "test.h" |
|
4 |
|
5 int cipher_hash_test(void) |
|
6 { |
143
|
7 int x; |
|
8 unsigned char buf[4096]; |
|
9 unsigned long n; |
|
10 prng_state nprng; |
15
|
11 |
|
12 /* test ciphers */ |
|
13 for (x = 0; cipher_descriptor[x].name != NULL; x++) { |
|
14 DO(cipher_descriptor[x].test()); |
|
15 } |
|
16 |
|
17 /* test hashes */ |
|
18 for (x = 0; hash_descriptor[x].name != NULL; x++) { |
|
19 DO(hash_descriptor[x].test()); |
|
20 } |
143
|
21 |
|
22 /* test prngs (test, import/export */ |
|
23 for (x = 0; prng_descriptor[x].name != NULL; x++) { |
|
24 DO(prng_descriptor[x].test()); |
|
25 DO(prng_descriptor[x].start(&nprng)); |
|
26 DO(prng_descriptor[x].add_entropy((unsigned char *)"helloworld12", 12, &nprng)); |
|
27 DO(prng_descriptor[x].ready(&nprng)); |
|
28 n = sizeof(buf); |
|
29 DO(prng_descriptor[x].pexport(buf, &n, &nprng)); |
|
30 prng_descriptor[x].done(&nprng); |
|
31 DO(prng_descriptor[x].pimport(buf, n, &nprng)); |
|
32 DO(prng_descriptor[x].ready(&nprng)); |
|
33 if (prng_descriptor[x].read(buf, 100, &nprng) != 100) { |
|
34 fprintf(stderr, "Error reading from imported PRNG!\n"); |
|
35 exit(EXIT_FAILURE); |
|
36 } |
|
37 prng_descriptor[x].done(&nprng); |
|
38 } |
15
|
39 |
|
40 return 0; |
|
41 } |