Mercurial > dropbear
view demos/test/test.c @ 15:6362d3854bb4 libtomcrypt-orig
0.96 release of LibTomCrypt
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Tue, 15 Jun 2004 14:07:21 +0000 |
parents | |
children | 5d99163f7e32 |
line wrap: on
line source
#include "test.h" test_entry tests[26]; test_entry test_list[26] = { /* test name provides requires entry */ {"store_test", "a", "", store_test }, {"cipher_hash_test", "b", "a", cipher_hash_test }, {"modes_test", "c", "b", modes_test }, {"mac_test", "d", "c", mac_test }, {"pkcs_1_test", "e", "b", pkcs_1_test }, {"rsa_test", "f", "e", rsa_test }, {"ecc_test", "g", "a", ecc_tests }, {"dsa_test", "h", "a", dsa_test }, {"dh_test", "i", "a", dh_tests }, {NULL, NULL, NULL, NULL} }; prng_state test_yarrow; static int current_test; void run_cmd(int res, int line, char *file, char *cmd) { if (res != CRYPT_OK) { fprintf(stderr, "[%s]: %s (%d)\n%s:%d:%s\n", tests[current_test].name, error_to_string(res), res, file, line, cmd); exit(EXIT_FAILURE); } } void register_algs(void) { #ifdef RIJNDAEL register_cipher (&aes_desc); #endif #ifdef BLOWFISH register_cipher (&blowfish_desc); #endif #ifdef XTEA register_cipher (&xtea_desc); #endif #ifdef RC5 register_cipher (&rc5_desc); #endif #ifdef RC6 register_cipher (&rc6_desc); #endif #ifdef SAFERP register_cipher (&saferp_desc); #endif #ifdef TWOFISH register_cipher (&twofish_desc); #endif #ifdef SAFER register_cipher (&safer_k64_desc); register_cipher (&safer_sk64_desc); register_cipher (&safer_k128_desc); register_cipher (&safer_sk128_desc); #endif #ifdef RC2 register_cipher (&rc2_desc); #endif #ifdef DES register_cipher (&des_desc); register_cipher (&des3_desc); #endif #ifdef CAST5 register_cipher (&cast5_desc); #endif #ifdef NOEKEON register_cipher (&noekeon_desc); #endif #ifdef SKIPJACK register_cipher (&skipjack_desc); #endif #ifdef TIGER register_hash (&tiger_desc); #endif #ifdef MD2 register_hash (&md2_desc); #endif #ifdef MD4 register_hash (&md4_desc); #endif #ifdef MD5 register_hash (&md5_desc); #endif #ifdef SHA1 register_hash (&sha1_desc); #endif #ifdef SHA256 register_hash (&sha256_desc); #endif #ifdef SHA224 register_hash (&sha224_desc); #endif #ifdef SHA384 register_hash (&sha384_desc); #endif #ifdef SHA512 register_hash (&sha512_desc); #endif #ifdef RIPEMD128 register_hash (&rmd128_desc); #endif #ifdef RIPEMD160 register_hash (&rmd160_desc); #endif #ifdef WHIRLPOOL register_hash (&whirlpool_desc); #endif if (register_prng(&yarrow_desc) == -1) { printf("Error registering yarrow PRNG\n"); exit(-1); } if (register_prng(&sprng_desc) == -1) { printf("Error registering sprng PRNG\n"); exit(-1); } } /* sort tests based on their requirement/services. Helps make sure dependencies are tested first */ void sort(void) { unsigned x, y, z, a, pidx[26]; /* find out where things are provided */ zeromem(pidx, sizeof(pidx)); z = 0; do { y = 0; for (x = 0; test_list[x].name != NULL; x++) { if (test_list[x].entry == NULL) continue; if (strlen(test_list[x].prov) == 0) { y = 1; tests[z++] = test_list[x]; test_list[x].entry = NULL; pidx[test_list[x].prov[0]-'a'] = 1; break; } else { for (a = 0; a < strlen(test_list[x].req); a++) { if (pidx[test_list[x].req[a]-'a'] == 0) break; } if (a == strlen(test_list[x].req)) { y = 1; tests[z++] = test_list[x]; test_list[x].entry = NULL; pidx[test_list[x].prov[0]-'a'] = 1; break; } } } } while (y == 1); } int main(void) { printf("Built with\n%s\n", crypt_build_settings); srand(time(NULL)); sort(); register_algs(); // start dummy yarrow for internal use DO(yarrow_start(&test_yarrow)); DO(yarrow_add_entropy("test", 4, &test_yarrow)); DO(yarrow_ready(&test_yarrow)); // do tests for (current_test = 0; tests[current_test].name != NULL; current_test++) { printf("[%-20s]: ", tests[current_test].name); fflush(stdout); printf("\t%s\n", tests[current_test].entry()==0?"passed":"failed"); } return 0; }