Recognise DEC C++ as equivalent to DEC C for the definitions of OPENSSL_EXTERN and...
[openssl.git] / crypto / ecdsa / ecdsatest.c
index 339f654516b7b6dfc2b7f576d6bed273cb058f27..18b0ce18b3b9e34ddd37bc604974217c524138cd 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
-#include <openssl/crypto.h>
-#include <openssl/bio.h>
-#include <openssl/evp.h>
-#include <openssl/x509.h>
-#include <openssl/ecdsa.h>
-#include <openssl/engine.h>
-#include <openssl/err.h>
 
 #ifdef CLOCKS_PER_SEC
        /* "To determine the time in seconds, the value returned
 int main(int argc, char * argv[]) { puts("Elliptic curves are disabled."); return 0; }
 #else
 
+#include <openssl/crypto.h>
+#include <openssl/bio.h>
+#include <openssl/evp.h>
+#include <openssl/x509.h>
+#include <openssl/ecdsa.h>
+#include <openssl/engine.h>
+#include <openssl/err.h>
+
 static BIO *bio_err=NULL;
 static const char rnd_seed[] = "string to make the random number generator think it has entropy";
 
@@ -180,7 +181,7 @@ int test_sig_vrf(ECDSA *ecdsa, const unsigned char* dgst)
         int       ret=0,type=0;
         unsigned char *buffer=NULL;
         unsigned int  buf_len;
-        clock_t  time;
+        clock_t  tim;
  
         if (!ecdsa || !ecdsa->group || !ecdsa->pub_key || !ecdsa->priv_key)
                 return 0;
@@ -192,24 +193,24 @@ int test_sig_vrf(ECDSA *ecdsa, const unsigned char* dgst)
         if ((buffer = OPENSSL_malloc(buf_len)) == NULL)
                 goto err;
  
-        time = clock();
+        tim = clock();
         if (!ECDSA_sign(type, dgst , 20, buffer, &buf_len, ecdsa))
         {
                 BIO_printf(bio_err, "ECDSA_sign() FAILED \n");
                 goto err;
         }
-        time = clock() - time;
-        BIO_printf(bio_err, " [ ECDSA_sign() %.2f"UNIT, (double)time/(CLOCKS_PER_SEC));
+        tim = clock() - tim;
+        BIO_printf(bio_err, " [ ECDSA_sign() %.2f"UNIT, (double)tim/(CLOCKS_PER_SEC));
  
-        time = clock();
+        tim = clock();
         ret = ECDSA_verify(type, dgst, 20, buffer, buf_len, ecdsa);
         if (ret != 1)
         {
                 BIO_printf(bio_err, "ECDSA_verify() FAILED \n");
                 goto err;
         }
-        time = clock() - time;
-        BIO_printf(bio_err, " and ECDSA_verify() %.2f"UNIT" ] ", (double)time/(CLOCKS_PER_SEC));
+        tim = clock() - tim;
+        BIO_printf(bio_err, " and ECDSA_verify() %.2f"UNIT" ] ", (double)tim/(CLOCKS_PER_SEC));
  
 err:    OPENSSL_free(buffer);
         return(ret == 1);
@@ -323,24 +324,32 @@ int main(void)
        int             dgst_len=0;
        unsigned char   *dgst=NULL;
        int             ret = 0, i=0;
-       clock_t         time;
+       clock_t         tim;
        unsigned char   *buffer=NULL;
        unsigned char   *pp;
        long            buf_len=0;
-       double          time_d;
+       double          tim_d;
        EVP_MD_CTX      *md_ctx=NULL;
        
+       /* enable memory leak checking unless explicitly disabled */
+       if (!((getenv("OPENSSL_DEBUG_MEMORY") != NULL) && (0 == strcmp(getenv("OPENSSL_DEBUG_MEMORY"), "off"))))
+               {
+               CRYPTO_malloc_debug_init();
+               CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
+               }
+       else
+               {
+               /* OPENSSL_DEBUG_MEMORY=off */
+               CRYPTO_set_mem_debug_functions(0, 0, 0, 0, 0);
+               }
+       CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
 
-       RAND_seed(rnd_seed, sizeof(rnd_seed));
+       ERR_load_crypto_strings();
 
        if (bio_err == NULL)
                bio_err=BIO_new_fp(stderr, BIO_NOCLOSE);
 
-       CRYPTO_malloc_debug_init();
-       CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL);
-       CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
-
-       ERR_load_crypto_strings();
+       RAND_seed(rnd_seed, sizeof(rnd_seed));
 
        if ((ecdsa = ECDSA_new()) == NULL)   goto err;
 
@@ -534,20 +543,20 @@ int main(void)
        if ((ecdsa = ECDSA_new()) == NULL) goto err;
        if ((ecdsa->group = EC_GROUP_new_by_name(EC_GROUP_NIST_PRIME_192)) == NULL) goto err;
        if (!ECDSA_generate_key(ecdsa)) goto err;
-        time = clock();
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if ((signatures[i] = ECDSA_do_sign(digest[i], 20, ecdsa)) == NULL) goto err;
-        time = clock() - time;
-       time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+       tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_sign()   in %.2f"UNIT" => average time for ECDSA_do_sign()   %.4f"UNIT"\n"
-               , ECDSA_NIST_TESTS, time_d, time_d / ECDSA_NIST_TESTS);
-       time = clock();
+               , ECDSA_NIST_TESTS, tim_d, tim_d / ECDSA_NIST_TESTS);
+       tim = clock();
        for (i=0; i<ECDSA_NIST_TESTS; i++)
                if (!ECDSA_do_verify(digest[i], 20, signatures[i], ecdsa)) goto err;
-       time = clock() - time;
-       time_d = (double)time / CLOCKS_PER_SEC;
+       tim = clock() - tim;
+       tim_d = (double)tim / CLOCKS_PER_SEC;
        BIO_printf(bio_err, "%d x ECDSA_do_verify() in %.2f"UNIT" => average time for ECDSA_do_verify() %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d/ECDSA_NIST_TESTS);
+                , ECDSA_NIST_TESTS, tim_d, tim_d/ECDSA_NIST_TESTS);
        for (i=0; i<ECDSA_NIST_TESTS; i++)
        {
                ECDSA_SIG_free(signatures[i]);
@@ -560,20 +569,20 @@ int main(void)
         if ((ecdsa = ECDSA_new()) == NULL) goto err;
         if ((ecdsa->group = EC_GROUP_new_by_name(EC_GROUP_NIST_PRIME_224)) == NULL) goto err;
         if (!ECDSA_generate_key(ecdsa)) goto err;
-        time = clock();
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if ((signatures[i] = ECDSA_do_sign(digest[i], 20, ecdsa)) == NULL) goto err;
-        time = clock() - time;
-        time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+        tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_sign()   in %.2f"UNIT" => average time for ECDSA_do_sign()   %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d / ECDSA_NIST_TESTS);
-        time = clock();
+                , ECDSA_NIST_TESTS, tim_d, tim_d / ECDSA_NIST_TESTS);
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if (!ECDSA_do_verify(digest[i], 20, signatures[i], ecdsa)) goto err;
-        time = clock() - time;
-        time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+        tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_verify() in %.2f"UNIT" => average time for ECDSA_do_verify() %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d/ECDSA_NIST_TESTS);
+                , ECDSA_NIST_TESTS, tim_d, tim_d/ECDSA_NIST_TESTS);
        for (i=0; i<ECDSA_NIST_TESTS; i++)
        {
                ECDSA_SIG_free(signatures[i]);
@@ -586,20 +595,20 @@ int main(void)
         if ((ecdsa = ECDSA_new()) == NULL) goto err;
         if ((ecdsa->group = EC_GROUP_new_by_name(EC_GROUP_NIST_PRIME_256)) == NULL) goto err;
         if (!ECDSA_generate_key(ecdsa)) goto err;
-        time = clock();
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if ((signatures[i] = ECDSA_do_sign(digest[i], 20, ecdsa)) == NULL) goto err;
-        time = clock() - time;
-        time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+        tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_sign()   in %.2f"UNIT" => average time for ECDSA_do_sign()   %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d / ECDSA_NIST_TESTS);
-        time = clock();
+                , ECDSA_NIST_TESTS, tim_d, tim_d / ECDSA_NIST_TESTS);
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if (!ECDSA_do_verify(digest[i], 20, signatures[i], ecdsa)) goto err;
-        time = clock() - time;
-        time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+        tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_verify() in %.2f"UNIT" => average time for ECDSA_do_verify() %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d/ECDSA_NIST_TESTS);
+                , ECDSA_NIST_TESTS, tim_d, tim_d/ECDSA_NIST_TESTS);
        for (i=0; i<ECDSA_NIST_TESTS; i++)
        {
                ECDSA_SIG_free(signatures[i]);
@@ -612,20 +621,20 @@ int main(void)
         if ((ecdsa = ECDSA_new()) == NULL) goto err;
         if ((ecdsa->group = EC_GROUP_new_by_name(EC_GROUP_NIST_PRIME_384)) == NULL) goto err;
         if (!ECDSA_generate_key(ecdsa)) goto err;
-        time = clock();
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if ((signatures[i] = ECDSA_do_sign(digest[i], 20, ecdsa)) == NULL) goto err;
-        time = clock() - time;
-        time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+        tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_sign()   in %.2f"UNIT" => average time for ECDSA_do_sign()   %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d / ECDSA_NIST_TESTS);
-        time = clock();
+                , ECDSA_NIST_TESTS, tim_d, tim_d / ECDSA_NIST_TESTS);
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if (!ECDSA_do_verify(digest[i], 20, signatures[i], ecdsa)) goto err;
-        time = clock() - time;
-        time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+        tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_verify() in %.2f"UNIT" => average time for ECDSA_do_verify() %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d/ECDSA_NIST_TESTS);
+                , ECDSA_NIST_TESTS, tim_d, tim_d/ECDSA_NIST_TESTS);
        for (i=0; i<ECDSA_NIST_TESTS; i++)
        {
                ECDSA_SIG_free(signatures[i]);
@@ -638,20 +647,20 @@ int main(void)
         if ((ecdsa = ECDSA_new()) == NULL) goto err;
         if ((ecdsa->group = EC_GROUP_new_by_name(EC_GROUP_NIST_PRIME_521)) == NULL) goto err;
         if (!ECDSA_generate_key(ecdsa)) goto err;
-        time = clock();
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if ((signatures[i] = ECDSA_do_sign(digest[i], 20, ecdsa)) == NULL) goto err;
-        time = clock() - time;
-        time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+        tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_sign()   in %.2f"UNIT" => average time for ECDSA_do_sign()   %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d / ECDSA_NIST_TESTS);
-        time = clock();
+                , ECDSA_NIST_TESTS, tim_d, tim_d / ECDSA_NIST_TESTS);
+        tim = clock();
         for (i=0; i<ECDSA_NIST_TESTS; i++)
                 if (!ECDSA_do_verify(digest[i], 20, signatures[i], ecdsa)) goto err;
-        time = clock() - time;
-        time_d = (double)time / CLOCKS_PER_SEC;
+        tim = clock() - tim;
+        tim_d = (double)tim / CLOCKS_PER_SEC;
         BIO_printf(bio_err, "%d x ECDSA_do_verify() in %.2f"UNIT" => average time for ECDSA_do_verify() %.4f"UNIT"\n"
-                , ECDSA_NIST_TESTS, time_d, time_d/ECDSA_NIST_TESTS);
+                , ECDSA_NIST_TESTS, tim_d, tim_d/ECDSA_NIST_TESTS);
        ECDSA_free(ecdsa);
        ecdsa = NULL;
        for (i=0; i<ECDSA_NIST_TESTS; i++)