Commit db896db5 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

speed.c: add ghash benchmark [from HEAD].

parent 2357ae17
Loading
Loading
Loading
Loading
+25 −3
Original line number Diff line number Diff line
@@ -183,6 +183,7 @@
#ifndef OPENSSL_NO_ECDH
#include <openssl/ecdh.h>
#endif
#include <openssl/modes.h>

#ifdef OPENSSL_FIPS
#define BF_set_key	private_BF_set_key
@@ -227,7 +228,7 @@ static void print_result(int alg,int run_no,int count,double time_used);
static int do_multi(int multi);
#endif

#define ALGOR_NUM	29
#define ALGOR_NUM	30
#define SIZE_NUM	5
#define RSA_NUM		4
#define DSA_NUM		3
@@ -242,7 +243,7 @@ static const char *names[ALGOR_NUM]={
  "aes-128 cbc","aes-192 cbc","aes-256 cbc",
  "camellia-128 cbc","camellia-192 cbc","camellia-256 cbc",
  "evp","sha256","sha512","whirlpool",
  "aes-128 ige","aes-192 ige","aes-256 ige"};
  "aes-128 ige","aes-192 ige","aes-256 ige","ghash"};
static double results[ALGOR_NUM][SIZE_NUM];
static int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
#ifndef OPENSSL_NO_RSA
@@ -482,6 +483,7 @@ int MAIN(int argc, char **argv)
#define D_IGE_128_AES   26
#define D_IGE_192_AES   27
#define D_IGE_256_AES   28
#define D_GHASH		29
	double d=0.0;
	long c[ALGOR_NUM][SIZE_NUM];
#define	R_DSA_512	0
@@ -907,6 +909,10 @@ int MAIN(int argc, char **argv)
			doit[D_CBC_192_AES]=1;
			doit[D_CBC_256_AES]=1;
			}
		else if (strcmp(*argv,"ghash") == 0)
			{
			doit[D_GHASH]=1;
			}
		else
#endif
#ifndef OPENSSL_NO_CAMELLIA
@@ -1277,6 +1283,7 @@ int MAIN(int argc, char **argv)
	c[D_IGE_128_AES][0]=count;
	c[D_IGE_192_AES][0]=count;
	c[D_IGE_256_AES][0]=count;
	c[D_GHASH][0]=count;

	for (i=1; i<SIZE_NUM; i++)
		{
@@ -1471,7 +1478,7 @@ int MAIN(int argc, char **argv)
# error "You cannot disable DES on systems without SIGALRM."
#endif /* OPENSSL_NO_DES */
#else
#define COND(c)	(run)
#define COND(c)	(run && count<0x7fffffff)
#define COUNT(d) (count)
#ifndef _WIN32
	signal(SIGALRM,sig_done);
@@ -1767,7 +1774,22 @@ int MAIN(int argc, char **argv)
			print_result(D_IGE_256_AES,j,count,d);
			}
		}
	if (doit[D_GHASH])
		{
		GCM128_CONTEXT *ctx = CRYPTO_gcm128_new(&aes_ks1,(block128_f)AES_encrypt);
		CRYPTO_gcm128_setiv (ctx,(unsigned char *)"0123456789ab",12);

		for (j=0; j<SIZE_NUM; j++)
			{
			print_message(names[D_GHASH],c[D_GHASH][j],lengths[j]);
			Time_F(START);
			for (count=0,run=1; COND(c[D_GHASH][j]); count++)
				CRYPTO_gcm128_aad(ctx,buf,lengths[j]);
			d=Time_F(STOP);
			print_result(D_GHASH,j,count,d);
			}
		CRYPTO_gcm128_release(ctx);
		}

#endif
#ifndef OPENSSL_NO_CAMELLIA