re-structure tests/common.c
This commit is contained in:
		
							parent
							
								
									4ceb82bf54
								
							
						
					
					
						commit
						da3b61c7b6
					
				
							
								
								
									
										391
									
								
								tests/common.c
									
									
									
									
									
								
							
							
						
						
									
										391
									
								
								tests/common.c
									
									
									
									
									
								
							| @ -62,394 +62,3 @@ void print_hex(const char* what, const void* v, const unsigned long l) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| prng_state yarrow_prng; | prng_state yarrow_prng; | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * unregister ciphers, hashes & prngs |  | ||||||
|  */ |  | ||||||
| static void _unregister_all(void) |  | ||||||
| { |  | ||||||
| #ifdef LTC_RIJNDAEL |  | ||||||
|   unregister_cipher(&aes_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_BLOWFISH |  | ||||||
|   unregister_cipher(&blowfish_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_XTEA |  | ||||||
|   unregister_cipher(&xtea_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RC5 |  | ||||||
|   unregister_cipher(&rc5_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RC6 |  | ||||||
|   unregister_cipher(&rc6_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SAFERP |  | ||||||
|   unregister_cipher(&saferp_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_TWOFISH |  | ||||||
|   unregister_cipher(&twofish_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SAFER |  | ||||||
|   unregister_cipher(&safer_k64_desc); |  | ||||||
|   unregister_cipher(&safer_sk64_desc); |  | ||||||
|   unregister_cipher(&safer_k128_desc); |  | ||||||
|   unregister_cipher(&safer_sk128_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RC2 |  | ||||||
|   unregister_cipher(&rc2_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_DES |  | ||||||
|   unregister_cipher(&des_desc); |  | ||||||
|   unregister_cipher(&des3_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_CAST5 |  | ||||||
|   unregister_cipher(&cast5_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_NOEKEON |  | ||||||
|   unregister_cipher(&noekeon_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SKIPJACK |  | ||||||
|   unregister_cipher(&skipjack_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_KHAZAD |  | ||||||
|   unregister_cipher(&khazad_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_ANUBIS |  | ||||||
|   unregister_cipher(&anubis_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_KSEED |  | ||||||
|   unregister_cipher(&kseed_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_KASUMI |  | ||||||
|   unregister_cipher(&kasumi_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_MULTI2 |  | ||||||
|   unregister_cipher(&multi2_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_CAMELLIA |  | ||||||
|   unregister_cipher(&camellia_desc); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #ifdef LTC_TIGER |  | ||||||
|   unregister_hash(&tiger_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_MD2 |  | ||||||
|   unregister_hash(&md2_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_MD4 |  | ||||||
|   unregister_hash(&md4_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_MD5 |  | ||||||
|   unregister_hash(&md5_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA1 |  | ||||||
|   unregister_hash(&sha1_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA224 |  | ||||||
|   unregister_hash(&sha224_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA256 |  | ||||||
|   unregister_hash(&sha256_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA384 |  | ||||||
|   unregister_hash(&sha384_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA512 |  | ||||||
|   unregister_hash(&sha512_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA512_224 |  | ||||||
|   unregister_hash(&sha512_224_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA512_256 |  | ||||||
|   unregister_hash(&sha512_256_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA3 |  | ||||||
|   unregister_hash(&sha3_224_desc); |  | ||||||
|   unregister_hash(&sha3_256_desc); |  | ||||||
|   unregister_hash(&sha3_384_desc); |  | ||||||
|   unregister_hash(&sha3_512_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RIPEMD128 |  | ||||||
|   unregister_hash(&rmd128_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RIPEMD160 |  | ||||||
|   unregister_hash(&rmd160_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RIPEMD256 |  | ||||||
|   unregister_hash(&rmd256_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RIPEMD320 |  | ||||||
|   unregister_hash(&rmd320_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_WHIRLPOOL |  | ||||||
|   unregister_hash(&whirlpool_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_BLAKE2S |  | ||||||
|   unregister_hash(&blake2s_128_desc); |  | ||||||
|   unregister_hash(&blake2s_160_desc); |  | ||||||
|   unregister_hash(&blake2s_224_desc); |  | ||||||
|   unregister_hash(&blake2s_256_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_BLAKE2B |  | ||||||
|   unregister_hash(&blake2b_160_desc); |  | ||||||
|   unregister_hash(&blake2b_256_desc); |  | ||||||
|   unregister_hash(&blake2b_384_desc); |  | ||||||
|   unregister_hash(&blake2b_512_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_CHC_HASH |  | ||||||
|   unregister_hash(&chc_desc); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|   unregister_prng(&yarrow_desc); |  | ||||||
| #ifdef LTC_FORTUNA |  | ||||||
|   unregister_prng(&fortuna_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RC4 |  | ||||||
|   unregister_prng(&rc4_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_CHACHA20_PRNG |  | ||||||
|   unregister_prng(&chacha20_prng_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SOBER128 |  | ||||||
|   unregister_prng(&sober128_desc); |  | ||||||
| #endif |  | ||||||
| } /* _cleanup() */ |  | ||||||
| 
 |  | ||||||
| #ifdef LTC_PRNG_ENABLE_LTC_RNG |  | ||||||
| 
 |  | ||||||
| static unsigned long my_test_rng_read; |  | ||||||
| 
 |  | ||||||
| static unsigned long my_test_rng(unsigned char *buf, unsigned long len, |  | ||||||
|                              void (*callback)(void)) |  | ||||||
| { |  | ||||||
|    unsigned long n; |  | ||||||
|    LTC_UNUSED_PARAM(callback); |  | ||||||
|    for (n = 0; n < len; ++n) { |  | ||||||
|       buf[n] = 4; |  | ||||||
|    } |  | ||||||
|    my_test_rng_read += n; |  | ||||||
|    return n; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| void register_algs(void) |  | ||||||
| { |  | ||||||
| #ifdef LTC_PRNG_ENABLE_LTC_RNG |  | ||||||
|   unsigned long before; |  | ||||||
| #endif |  | ||||||
|   int err; |  | ||||||
| 
 |  | ||||||
|   atexit(_unregister_all); |  | ||||||
| 
 |  | ||||||
| #ifdef LTC_RIJNDAEL |  | ||||||
| #ifdef ENCRYPT_ONLY |  | ||||||
|   /* alternative would be
 |  | ||||||
|    * register_cipher (&rijndael_enc_desc); |  | ||||||
|    */ |  | ||||||
|    register_cipher (&aes_enc_desc); |  | ||||||
| #else |  | ||||||
|   /* alternative would be
 |  | ||||||
|    * register_cipher (&rijndael_desc); |  | ||||||
|    */ |  | ||||||
|   register_cipher (&aes_desc); |  | ||||||
| #endif |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_BLOWFISH |  | ||||||
|   register_cipher (&blowfish_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_XTEA |  | ||||||
|   register_cipher (&xtea_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RC5 |  | ||||||
|   register_cipher (&rc5_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RC6 |  | ||||||
|   register_cipher (&rc6_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SAFERP |  | ||||||
|   register_cipher (&saferp_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_TWOFISH |  | ||||||
|   register_cipher (&twofish_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SAFER |  | ||||||
|   register_cipher (&safer_k64_desc); |  | ||||||
|   register_cipher (&safer_sk64_desc); |  | ||||||
|   register_cipher (&safer_k128_desc); |  | ||||||
|   register_cipher (&safer_sk128_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RC2 |  | ||||||
|   register_cipher (&rc2_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_DES |  | ||||||
|   register_cipher (&des_desc); |  | ||||||
|   register_cipher (&des3_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_CAST5 |  | ||||||
|   register_cipher (&cast5_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_NOEKEON |  | ||||||
|   register_cipher (&noekeon_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SKIPJACK |  | ||||||
|   register_cipher (&skipjack_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_ANUBIS |  | ||||||
|   register_cipher (&anubis_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_KHAZAD |  | ||||||
|   register_cipher (&khazad_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_KSEED |  | ||||||
|   register_cipher (&kseed_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_KASUMI |  | ||||||
|   register_cipher (&kasumi_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_MULTI2 |  | ||||||
|   register_cipher (&multi2_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_CAMELLIA |  | ||||||
|   register_cipher (&camellia_desc); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #ifdef LTC_TIGER |  | ||||||
|   register_hash (&tiger_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_MD2 |  | ||||||
|   register_hash (&md2_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_MD4 |  | ||||||
|   register_hash (&md4_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_MD5 |  | ||||||
|   register_hash (&md5_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA1 |  | ||||||
|   register_hash (&sha1_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA224 |  | ||||||
|   register_hash (&sha224_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA256 |  | ||||||
|   register_hash (&sha256_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA384 |  | ||||||
|   register_hash (&sha384_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA512 |  | ||||||
|   register_hash (&sha512_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA512_224 |  | ||||||
|   register_hash (&sha512_224_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA512_256 |  | ||||||
|   register_hash (&sha512_256_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SHA3 |  | ||||||
|   register_hash (&sha3_224_desc); |  | ||||||
|   register_hash (&sha3_256_desc); |  | ||||||
|   register_hash (&sha3_384_desc); |  | ||||||
|   register_hash (&sha3_512_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RIPEMD128 |  | ||||||
|   register_hash (&rmd128_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RIPEMD160 |  | ||||||
|   register_hash (&rmd160_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RIPEMD256 |  | ||||||
|   register_hash (&rmd256_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RIPEMD320 |  | ||||||
|   register_hash (&rmd320_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_WHIRLPOOL |  | ||||||
|   register_hash (&whirlpool_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_BLAKE2S |  | ||||||
|   register_hash(&blake2s_128_desc); |  | ||||||
|   register_hash(&blake2s_160_desc); |  | ||||||
|   register_hash(&blake2s_224_desc); |  | ||||||
|   register_hash(&blake2s_256_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_BLAKE2S |  | ||||||
|   register_hash(&blake2b_160_desc); |  | ||||||
|   register_hash(&blake2b_256_desc); |  | ||||||
|   register_hash(&blake2b_384_desc); |  | ||||||
|   register_hash(&blake2b_512_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_CHC_HASH |  | ||||||
|   register_hash(&chc_desc); |  | ||||||
|   if ((err = chc_register(register_cipher(&aes_desc))) != CRYPT_OK) { |  | ||||||
|      fprintf(stderr, "chc_register error: %s\n", error_to_string(err)); |  | ||||||
|      exit(EXIT_FAILURE); |  | ||||||
|   } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #ifndef LTC_YARROW |  | ||||||
|    #error This demo requires Yarrow. |  | ||||||
| #endif |  | ||||||
| register_prng(&yarrow_desc); |  | ||||||
| #ifdef LTC_FORTUNA |  | ||||||
| register_prng(&fortuna_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_RC4 |  | ||||||
| register_prng(&rc4_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_CHACHA20_PRNG |  | ||||||
| register_prng(&chacha20_prng_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SOBER128 |  | ||||||
| register_prng(&sober128_desc); |  | ||||||
| #endif |  | ||||||
| #ifdef LTC_SPRNG |  | ||||||
| register_prng(&sprng_desc); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #ifdef LTC_PRNG_ENABLE_LTC_RNG |  | ||||||
|    ltc_rng = my_test_rng; |  | ||||||
| 
 |  | ||||||
|    before = my_test_rng_read; |  | ||||||
|    if ((err = rng_make_prng(128, find_prng("yarrow"), &yarrow_prng, NULL)) != CRYPT_OK) { |  | ||||||
|       fprintf(stderr, "rng_make_prng with 'my_test_rng' failed: %s\n", error_to_string(err)); |  | ||||||
|       exit(EXIT_FAILURE); |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
|    if (before == my_test_rng_read) { |  | ||||||
|       fprintf(stderr, "somehow there was no read from the ltc_rng! %lu == %lu\n", before, my_test_rng_read); |  | ||||||
|       exit(EXIT_FAILURE); |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
|    ltc_rng = NULL; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|    if ((err = rng_make_prng(128, find_prng("yarrow"), &yarrow_prng, NULL)) != CRYPT_OK) { |  | ||||||
|       fprintf(stderr, "rng_make_prng failed: %s\n", error_to_string(err)); |  | ||||||
|       exit(EXIT_FAILURE); |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
|    if (strcmp("CRYPT_OK", error_to_string(err))) { |  | ||||||
|        exit(EXIT_FAILURE); |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void setup_math(void) |  | ||||||
| { |  | ||||||
| #ifdef USE_LTM |  | ||||||
|    ltc_mp = ltm_desc; |  | ||||||
| #elif defined(USE_TFM) |  | ||||||
|    ltc_mp = tfm_desc; |  | ||||||
| #elif defined(USE_GMP) |  | ||||||
|    ltc_mp = gmp_desc; |  | ||||||
| #elif defined(EXT_MATH_LIB) |  | ||||||
|    extern ltc_math_descriptor EXT_MATH_LIB; |  | ||||||
|    ltc_mp = EXT_MATH_LIB; |  | ||||||
| #else |  | ||||||
|    fprintf(stderr, "No MPI provider available\n"); |  | ||||||
|    exit(EXIT_FAILURE); |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -23,7 +23,4 @@ void run_cmd(int res, int line, char *file, char *cmd, const char *algorithm); | |||||||
| 
 | 
 | ||||||
| void print_hex(const char* what, const void* v, const unsigned long l); | void print_hex(const char* what, const void* v, const unsigned long l); | ||||||
| 
 | 
 | ||||||
| void register_algs(void); |  | ||||||
| void setup_math(void); |  | ||||||
| 
 |  | ||||||
| #endif /* DEMOS_COMMON_H_ */ | #endif /* DEMOS_COMMON_H_ */ | ||||||
|  | |||||||
							
								
								
									
										45
									
								
								tests/prng_test.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								tests/prng_test.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | #include <tomcrypt_test.h> | ||||||
|  | 
 | ||||||
|  | #ifdef LTC_PRNG_ENABLE_LTC_RNG | ||||||
|  | 
 | ||||||
|  | static unsigned long my_test_rng_read; | ||||||
|  | 
 | ||||||
|  | static unsigned long my_test_rng(unsigned char *buf, unsigned long len, | ||||||
|  |                              void (*callback)(void)) | ||||||
|  | { | ||||||
|  |    unsigned long n; | ||||||
|  |    LTC_UNUSED_PARAM(callback); | ||||||
|  |    for (n = 0; n < len; ++n) { | ||||||
|  |       buf[n] = 4; | ||||||
|  |    } | ||||||
|  |    my_test_rng_read += n; | ||||||
|  |    return n; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | int prng_test(void) | ||||||
|  | { | ||||||
|  |    int err = CRYPT_NOP; | ||||||
|  | #ifdef LTC_PRNG_ENABLE_LTC_RNG | ||||||
|  |    unsigned long before; | ||||||
|  | 
 | ||||||
|  |    unsigned long (*previous)(unsigned char *, unsigned long , void (*)(void)) = ltc_rng; | ||||||
|  |    ltc_rng = my_test_rng; | ||||||
|  | 
 | ||||||
|  |    before = my_test_rng_read; | ||||||
|  | 
 | ||||||
|  |    if ((err = rng_make_prng(128, find_prng("yarrow"), &yarrow_prng, NULL)) != CRYPT_OK) { | ||||||
|  |       fprintf(stderr, "rng_make_prng with 'my_test_rng' failed: %s\n", error_to_string(err)); | ||||||
|  |       exit(EXIT_FAILURE); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    if (before == my_test_rng_read) { | ||||||
|  |       fprintf(stderr, "somehow there was no read from the ltc_rng! %lu == %lu\n", before, my_test_rng_read); | ||||||
|  |       exit(EXIT_FAILURE); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    ltc_rng = previous; | ||||||
|  | #endif | ||||||
|  |    return err; | ||||||
|  | } | ||||||
							
								
								
									
										177
									
								
								tests/test.c
									
									
									
									
									
								
							
							
						
						
									
										177
									
								
								tests/test.c
									
									
									
									
									
								
							| @ -30,6 +30,7 @@ static const struct { | |||||||
|       LTC_TEST_FN(katja_test), |       LTC_TEST_FN(katja_test), | ||||||
|       LTC_TEST_FN(file_test), |       LTC_TEST_FN(file_test), | ||||||
|       LTC_TEST_FN(multi_test), |       LTC_TEST_FN(multi_test), | ||||||
|  |       LTC_TEST_FN(prng_test), | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #if defined(_WIN32) | #if defined(_WIN32) | ||||||
| @ -62,6 +63,182 @@ static ulong64 epoch_usec(void) | |||||||
| #endif | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * unregister ciphers, hashes & prngs | ||||||
|  |  */ | ||||||
|  | static void _unregister_all(void) | ||||||
|  | { | ||||||
|  | #ifdef LTC_RIJNDAEL | ||||||
|  |   unregister_cipher(&aes_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_BLOWFISH | ||||||
|  |   unregister_cipher(&blowfish_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_XTEA | ||||||
|  |   unregister_cipher(&xtea_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_RC5 | ||||||
|  |   unregister_cipher(&rc5_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_RC6 | ||||||
|  |   unregister_cipher(&rc6_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SAFERP | ||||||
|  |   unregister_cipher(&saferp_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_TWOFISH | ||||||
|  |   unregister_cipher(&twofish_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SAFER | ||||||
|  |   unregister_cipher(&safer_k64_desc); | ||||||
|  |   unregister_cipher(&safer_sk64_desc); | ||||||
|  |   unregister_cipher(&safer_k128_desc); | ||||||
|  |   unregister_cipher(&safer_sk128_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_RC2 | ||||||
|  |   unregister_cipher(&rc2_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_DES | ||||||
|  |   unregister_cipher(&des_desc); | ||||||
|  |   unregister_cipher(&des3_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_CAST5 | ||||||
|  |   unregister_cipher(&cast5_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_NOEKEON | ||||||
|  |   unregister_cipher(&noekeon_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SKIPJACK | ||||||
|  |   unregister_cipher(&skipjack_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_KHAZAD | ||||||
|  |   unregister_cipher(&khazad_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_ANUBIS | ||||||
|  |   unregister_cipher(&anubis_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_KSEED | ||||||
|  |   unregister_cipher(&kseed_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_KASUMI | ||||||
|  |   unregister_cipher(&kasumi_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_MULTI2 | ||||||
|  |   unregister_cipher(&multi2_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_CAMELLIA | ||||||
|  |   unregister_cipher(&camellia_desc); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef LTC_TIGER | ||||||
|  |   unregister_hash(&tiger_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_MD2 | ||||||
|  |   unregister_hash(&md2_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_MD4 | ||||||
|  |   unregister_hash(&md4_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_MD5 | ||||||
|  |   unregister_hash(&md5_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SHA1 | ||||||
|  |   unregister_hash(&sha1_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SHA224 | ||||||
|  |   unregister_hash(&sha224_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SHA256 | ||||||
|  |   unregister_hash(&sha256_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SHA384 | ||||||
|  |   unregister_hash(&sha384_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SHA512 | ||||||
|  |   unregister_hash(&sha512_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SHA512_224 | ||||||
|  |   unregister_hash(&sha512_224_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SHA512_256 | ||||||
|  |   unregister_hash(&sha512_256_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SHA3 | ||||||
|  |   unregister_hash(&sha3_224_desc); | ||||||
|  |   unregister_hash(&sha3_256_desc); | ||||||
|  |   unregister_hash(&sha3_384_desc); | ||||||
|  |   unregister_hash(&sha3_512_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_RIPEMD128 | ||||||
|  |   unregister_hash(&rmd128_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_RIPEMD160 | ||||||
|  |   unregister_hash(&rmd160_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_RIPEMD256 | ||||||
|  |   unregister_hash(&rmd256_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_RIPEMD320 | ||||||
|  |   unregister_hash(&rmd320_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_WHIRLPOOL | ||||||
|  |   unregister_hash(&whirlpool_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_BLAKE2S | ||||||
|  |   unregister_hash(&blake2s_128_desc); | ||||||
|  |   unregister_hash(&blake2s_160_desc); | ||||||
|  |   unregister_hash(&blake2s_224_desc); | ||||||
|  |   unregister_hash(&blake2s_256_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_BLAKE2B | ||||||
|  |   unregister_hash(&blake2b_160_desc); | ||||||
|  |   unregister_hash(&blake2b_256_desc); | ||||||
|  |   unregister_hash(&blake2b_384_desc); | ||||||
|  |   unregister_hash(&blake2b_512_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_CHC_HASH | ||||||
|  |   unregister_hash(&chc_desc); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |   unregister_prng(&yarrow_desc); | ||||||
|  | #ifdef LTC_FORTUNA | ||||||
|  |   unregister_prng(&fortuna_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_RC4 | ||||||
|  |   unregister_prng(&rc4_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_CHACHA20_PRNG | ||||||
|  |   unregister_prng(&chacha20_prng_desc); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_SOBER128 | ||||||
|  |   unregister_prng(&sober128_desc); | ||||||
|  | #endif | ||||||
|  | } /* _cleanup() */ | ||||||
|  | 
 | ||||||
|  | static void register_algs(void) | ||||||
|  | { | ||||||
|  |   int err; | ||||||
|  | 
 | ||||||
|  |   atexit(_unregister_all); | ||||||
|  | 
 | ||||||
|  | #ifndef LTC_YARROW | ||||||
|  |    #error This demo requires Yarrow. | ||||||
|  | #endif | ||||||
|  |   register_all_ciphers(); | ||||||
|  |   register_all_hashes(); | ||||||
|  |   register_all_prngs(); | ||||||
|  | 
 | ||||||
|  |    if ((err = rng_make_prng(128, find_prng("yarrow"), &yarrow_prng, NULL)) != CRYPT_OK) { | ||||||
|  |       fprintf(stderr, "rng_make_prng failed: %s\n", error_to_string(err)); | ||||||
|  |       exit(EXIT_FAILURE); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    if (strcmp("CRYPT_OK", error_to_string(err))) { | ||||||
|  |        exit(EXIT_FAILURE); | ||||||
|  |    } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int main(int argc, char **argv) | int main(int argc, char **argv) | ||||||
| { | { | ||||||
|    int x, pass = 0, fail = 0, nop = 0; |    int x, pass = 0, fail = 0, nop = 0; | ||||||
|  | |||||||
| @ -51,6 +51,7 @@ int misc_test(void); | |||||||
| int base64_test(void); | int base64_test(void); | ||||||
| int file_test(void); | int file_test(void); | ||||||
| int multi_test(void); | int multi_test(void); | ||||||
|  | int prng_test(void); | ||||||
| 
 | 
 | ||||||
| #ifdef LTC_PKCS_1 | #ifdef LTC_PKCS_1 | ||||||
| extern const struct ltc_prng_descriptor no_prng_desc; | extern const struct ltc_prng_descriptor no_prng_desc; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user