Split the CAST tests up.
authorPauli <paul.dale@oracle.com>
Thu, 13 Apr 2017 01:40:35 +0000 (11:40 +1000)
committerRichard Levitte <levitte@openssl.org>
Thu, 13 Apr 2017 08:31:34 +0000 (10:31 +0200)
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3211)

test/casttest.c

index 175085824d42d349203d9ccc3ffe53d0fe0a6b34..fc0c700b47328c033ea0afa78c801e5216ad3eb9 100644 (file)
 #include "test_main.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 <openssl/cast.h>
 
 static unsigned char k[16] = {
@@ -41,8 +35,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,28 +55,34 @@ 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)
+{
+    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))) {
+        TEST_info("CAST_DECRYPT iteration %d failed (len=%d)", z, k_len[z]);
+        testresult = 0;
+    }
+    return testresult;
+}
+
+static int cast_test_iterations(void)
 {
     long l;
-    int z, testresult = 1;
+    int 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]))) {
-            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))) {
-            TEST_info("CAST_DECRYPT iteration %d failed (len=%d)", z, k_len[z]);
-            testresult = 0;
-        }
-    }
-
     memcpy(out_a, in_a, sizeof(in_a));
     memcpy(out_b, in_b, sizeof(in_b));
 
@@ -107,5 +105,8 @@ static int cast_test(void)
 
 void register_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
 }