dh-speed: Include the get_my_public_value() call in public exponent timing
authorMartin Willi <martin@revosec.ch>
Fri, 8 Aug 2014 14:26:27 +0000 (16:26 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Mon, 14 Nov 2016 15:20:51 +0000 (16:20 +0100)
This fixes results where a DH backend does not generate the public value
in the constructor internally.

scripts/dh_speed.c

index 300a7da..40b8316 100644 (file)
@@ -66,7 +66,7 @@ static double end_timing(struct timespec *start)
 static void run_test(diffie_hellman_group_t group, int rounds)
 {
        diffie_hellman_t *l[rounds], *r;
-       chunk_t chunk;
+       chunk_t chunk, chunks[rounds];
        struct timespec timing;
        int round;
 
@@ -85,14 +85,14 @@ static void run_test(diffie_hellman_group_t group, int rounds)
        for (round = 0; round < rounds; round++)
        {
                l[round] = lib->crypto->create_dh(lib->crypto, group);
+               assert(l[round]->get_my_public_value(l[round], &chunks[round]));
        }
        printf("A = g^a/s: %8.1f", rounds / end_timing(&timing));
 
        for (round = 0; round < rounds; round++)
        {
-               assert(l[round]->get_my_public_value(l[round], &chunk));
-               assert(r->set_other_public_value(r, chunk));
-               chunk_free(&chunk);
+               assert(r->set_other_public_value(r, chunks[round]));
+               chunk_free(&chunks[round]);
        }
 
        assert(r->get_my_public_value(r, &chunk));