aboutsummaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorPatrick Steuer <patrick.steuer@de.ibm.com>2018-02-02 11:09:25 +0100
committerRichard Levitte <levitte@openssl.org>2018-07-12 14:26:29 +0200
commit7da84e0f0088fc9d575039fb173f12af0ae25832 (patch)
treefdb68c799230da29cd1c9e113a1afd978294b756 /apps
parent1b6a0a261e22eb5a574bdb75da208817ffa2fbba (diff)
downloadopenssl-7da84e0f0088fc9d575039fb173f12af0ae25832.zip
openssl-7da84e0f0088fc9d575039fb173f12af0ae25832.tar.gz
openssl-7da84e0f0088fc9d575039fb173f12af0ae25832.tar.bz2
apps/speed.c: let EVP_Update_loop_ccm behave more like EVP_Update_loop
Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com> Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5246)
Diffstat (limited to 'apps')
-rw-r--r--apps/speed.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/apps/speed.c b/apps/speed.c
index 181873c..2c792bd 100644
--- a/apps/speed.c
+++ b/apps/speed.c
@@ -903,14 +903,18 @@ static int EVP_Update_loop(void *args)
if (decrypt) {
for (count = 0; COND(nb_iter); count++) {
rc = EVP_DecryptUpdate(ctx, buf, &outl, buf, lengths[testnum]);
- if (rc != 1)
+ if (rc != 1) {
+ /* reset iv in case of counter overflow */
EVP_CipherInit_ex(ctx, NULL, NULL, NULL, iv, -1);
+ }
}
} else {
for (count = 0; COND(nb_iter); count++) {
rc = EVP_EncryptUpdate(ctx, buf, &outl, buf, lengths[testnum]);
- if (rc != 1)
+ if (rc != 1) {
+ /* reset iv in case of counter overflow */
EVP_CipherInit_ex(ctx, NULL, NULL, NULL, iv, -1);
+ }
}
}
if (decrypt)
@@ -937,20 +941,24 @@ static int EVP_Update_loop_ccm(void *args)
#endif
if (decrypt) {
for (count = 0; COND(nb_iter); count++) {
- EVP_DecryptInit_ex(ctx, NULL, NULL, NULL, iv);
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, sizeof(tag), tag);
- EVP_DecryptUpdate(ctx, NULL, &outl, NULL, lengths[testnum]);
+ /* reset iv */
+ EVP_DecryptInit_ex(ctx, NULL, NULL, NULL, iv);
+ /* counter is reset on every update */
EVP_DecryptUpdate(ctx, buf, &outl, buf, lengths[testnum]);
- EVP_DecryptFinal_ex(ctx, buf, &outl);
}
} else {
for (count = 0; COND(nb_iter); count++) {
- EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, iv);
+ /* restore iv length field */
EVP_EncryptUpdate(ctx, NULL, &outl, NULL, lengths[testnum]);
+ /* counter is reset on every update */
EVP_EncryptUpdate(ctx, buf, &outl, buf, lengths[testnum]);
- EVP_EncryptFinal_ex(ctx, buf, &outl);
}
}
+ if (decrypt)
+ EVP_DecryptFinal_ex(ctx, buf, &outl);
+ else
+ EVP_EncryptFinal_ex(ctx, buf, &outl);
return count;
}