diff options
author | Andy Polyakov <appro@openssl.org> | 2011-11-14 21:09:30 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2011-11-14 21:09:30 +0000 |
commit | db896db5a75f30ed5b46c89ba1d4272cbc145d6b (patch) | |
tree | d22ddaec30385fc526e60c8f90613ae36ff5819f /apps/speed.c | |
parent | 2357ae17e71dbd9dc82c2ccb874f3971f3d3e2a1 (diff) |
speed.c: add ghash benchmark [from HEAD].
Diffstat (limited to 'apps/speed.c')
-rw-r--r-- | apps/speed.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/apps/speed.c b/apps/speed.c index e4e84a5200..b397c85095 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -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 |