From b4f0abd246340b90bb3fa2646814729f0e9d049e Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Sat, 12 Oct 2013 22:10:28 +0200 Subject: evp/e_aes_cbc_hmac_sha*.c: limit multi-block fragmentation to 1KB. Excessive fragmentation put additional burden (of addtional MAC calculations) on the other size and limiting fragments it to 1KB limits the overhead to ~6%. --- crypto/evp/e_aes_cbc_hmac_sha1.c | 3 ++- crypto/evp/e_aes_cbc_hmac_sha256.c | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/crypto/evp/e_aes_cbc_hmac_sha1.c b/crypto/evp/e_aes_cbc_hmac_sha1.c index 15e9638..98ee2bb 100644 --- a/crypto/evp/e_aes_cbc_hmac_sha1.c +++ b/crypto/evp/e_aes_cbc_hmac_sha1.c @@ -719,7 +719,8 @@ static int aesni_cbc_hmac_sha1_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void if (inp_len<4096) return 0; /* too short */ - if (OPENSSL_ia32cap_P[2]&(1<<5)) n4x=2; /* AVX2 */ + if (inp_len>=8192 && OPENSSL_ia32cap_P[2]&(1<<5)) + n4x=2; /* AVX2 */ key->md = key->head; SHA1_Update(&key->md,param->inp,13); diff --git a/crypto/evp/e_aes_cbc_hmac_sha256.c b/crypto/evp/e_aes_cbc_hmac_sha256.c index 602bfa9..e1a21b3 100644 --- a/crypto/evp/e_aes_cbc_hmac_sha256.c +++ b/crypto/evp/e_aes_cbc_hmac_sha256.c @@ -744,9 +744,10 @@ static int aesni_cbc_hmac_sha256_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, vo if ((param->inp[9]<<8|param->inp[10]) < TLS1_1_VERSION) return -1; - if (inp_len<2048) return 0; /* too short */ + if (inp_len<4096) return 0; /* too short */ - if (OPENSSL_ia32cap_P[2]&(1<<5)) n4x=2; /* AVX2 */ + if (inp_len>=8192 && OPENSSL_ia32cap_P[2]&(1<<5)) + n4x=2; /* AVX2 */ key->md = key->head; SHA256_Update(&key->md,param->inp,13); -- cgit v1.1