X-Git-Url: https://git.openssl.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fcasttest.c;h=179d7d56d31310c5d35efa4f8bb341711e568eb1;hb=082193ef2b25cf16ec51af9dc9f0ee890beb38b9;hp=17faf9273ab86ac0ed89e1998eef0ede94a41a0a;hpb=e2a29ad6c5f6b42ce71400595cb504cbf8f3646a;p=openssl.git diff --git a/test/casttest.c b/test/casttest.c index 17faf9273a..179d7d56d3 100644 --- a/test/casttest.c +++ b/test/casttest.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -12,17 +12,10 @@ #include #include /* To see if OPENSSL_NO_CAST is defined */ -#include "e_os.h" -#include "test_main.h" +#include "internal/nelem.h" #include "testutil.h" -#ifdef OPENSSL_NO_CAST -int main(int argc, char *argv[]) -{ - printf("No CAST support\n"); - return (0); -} -#else +#ifndef OPENSSL_NO_CAST # include static unsigned char k[16] = { @@ -41,8 +34,6 @@ static unsigned char c[3][8] = { {0x7A, 0xC8, 0x16, 0xD1, 0x6E, 0x9B, 0x30, 0x2E}, }; -static unsigned char out[80]; - static unsigned char in_a[16] = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9A @@ -63,32 +54,37 @@ static unsigned char c_b[16] = { 0x80, 0xAC, 0x05, 0xB8, 0xE8, 0x3D, 0x69, 0x6E }; -static int cast_test(void) +static int cast_test_vector(int z) { - static char *hex = "0123456789ABCDEF"; - long l; - int i, z, testresult = 1; - CAST_KEY key, key_b; - unsigned char out_a[16], out_b[16]; - - for (z = 0; z < 3; z++) { - CAST_set_key(&key, k_len[z], k); - CAST_ecb_encrypt(in, out, &key, CAST_ENCRYPT); - if (!TEST_mem_eq(out, sizeof(c[z]), c[z], sizeof(c[z]))) - testresult = 0; + int testresult = 1; + CAST_KEY key; + unsigned char out[80]; + + CAST_set_key(&key, k_len[z], k); + CAST_ecb_encrypt(in, out, &key, CAST_ENCRYPT); + if (!TEST_mem_eq(out, sizeof(c[z]), c[z], sizeof(c[z]))) { + TEST_info("CAST_ENCRYPT iteration %d failed (len=%d)", z, k_len[z]); + testresult = 0; + } - CAST_ecb_encrypt(out, out, &key, CAST_DECRYPT); - if (!TEST_mem_eq(out, sizeof(in), in, sizeof(in))) - testresult = 0; + CAST_ecb_encrypt(out, out, &key, CAST_DECRYPT); + if (!TEST_mem_eq(out, sizeof(in), in, sizeof(in))) { + TEST_info("CAST_DECRYPT iteration %d failed (len=%d)", z, k_len[z]); + testresult = 0; } - if (testresult) - TEST_info("ecb cast5 ok"); + return testresult; +} +static int cast_test_iterations(void) +{ + long l; + int testresult = 1; + CAST_KEY key, key_b; + unsigned char out_a[16], out_b[16]; memcpy(out_a, in_a, sizeof(in_a)); memcpy(out_b, in_b, sizeof(in_b)); - i = 1; for (l = 0; l < 1000000L; l++) { CAST_set_key(&key_b, 16, out_b); CAST_ecb_encrypt(&(out_a[0]), &(out_a[0]), &key_b, CAST_ENCRYPT); @@ -96,10 +92,6 @@ static int cast_test(void) CAST_set_key(&key, 16, out_a); CAST_ecb_encrypt(&(out_b[0]), &(out_b[0]), &key, CAST_ENCRYPT); CAST_ecb_encrypt(&(out_b[8]), &(out_b[8]), &key, CAST_ENCRYPT); - if ((l & 0xffff) == 0xffff) { - TEST_info("%c", hex[i & 0x0f]); - i++; - } } if (!TEST_mem_eq(out_a, sizeof(c_a), c_a, sizeof(c_a)) @@ -110,7 +102,11 @@ static int cast_test(void) } #endif -void register_tests(void) +int setup_tests(void) { - ADD_TEST(cast_test); +#ifndef OPENSSL_NO_CAST + ADD_ALL_TESTS(cast_test_vector, OSSL_NELEM(k_len)); + ADD_TEST(cast_test_iterations); +#endif + return 1; }