diff options
| author | Yves-Alexis Perez <corsac@corsac.net> | 2017-04-01 16:26:44 +0200 | 
|---|---|---|
| committer | Yves-Alexis Perez <corsac@corsac.net> | 2017-04-01 16:26:44 +0200 | 
| commit | 05ddd767992d68bb38c7f16ece142e8c2e9ae016 (patch) | |
| tree | 302c618be306d4ed3c7f9fc58a1f6aaad4dd252f /scripts/dh_speed.c | |
| parent | 25663e04c3ab01ef8dc9f906608282319cfea2db (diff) | |
| download | vyos-strongswan-05ddd767992d68bb38c7f16ece142e8c2e9ae016.tar.gz vyos-strongswan-05ddd767992d68bb38c7f16ece142e8c2e9ae016.zip  | |
New upstream version 5.5.2
Diffstat (limited to 'scripts/dh_speed.c')
| -rw-r--r-- | scripts/dh_speed.c | 17 | 
1 files changed, 11 insertions, 6 deletions
diff --git a/scripts/dh_speed.c b/scripts/dh_speed.c index 0643ea92a..c2cac0260 100644 --- a/scripts/dh_speed.c +++ b/scripts/dh_speed.c @@ -46,6 +46,7 @@ struct {  	{"ecp521",			ECP_521_BIT},  	{"ecp192",			ECP_192_BIT},  	{"ecp224",			ECP_224_BIT}, +	{"curve25519",		CURVE_25519},  };  static void start_timing(struct timespec *start) @@ -65,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], lsecrets[rounds], rsecrets[rounds];  	struct timespec timing;  	int round; @@ -77,21 +78,21 @@ static void run_test(diffie_hellman_group_t group, int rounds)  		return;  	} -	printf("%N:\t", -			diffie_hellman_group_names, group); +	printf("%N:\t", diffie_hellman_group_names, group);  	start_timing(&timing);  	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])); +		assert(r->get_shared_secret(r, &rsecrets[round])); +		chunk_free(&chunks[round]);  	}  	assert(r->get_my_public_value(r, &chunk)); @@ -99,12 +100,16 @@ static void run_test(diffie_hellman_group_t group, int rounds)  	for (round = 0; round < rounds; round++)  	{  		assert(l[round]->set_other_public_value(l[round], chunk)); +		assert(l[round]->get_shared_secret(l[round], &lsecrets[round]));  	}  	printf(" | S = B^a/s: %8.1f\n", rounds / end_timing(&timing));  	chunk_free(&chunk);  	for (round = 0; round < rounds; round++)  	{ +		assert(chunk_equals(rsecrets[round], lsecrets[round])); +		free(lsecrets[round].ptr); +		free(rsecrets[round].ptr);  		l[round]->destroy(l[round]);  	}  	r->destroy(r);  | 
