aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2011-10-13 13:41:34 +0000
committerBodo Möller <bodo@openssl.org>2011-10-13 13:41:34 +0000
commitbf6d2f986d47fa7f96ab9ede407bc3976a686b0f (patch)
treeb78267ec2c04b63e7ce514c53f6016fdc865a3ca /crypto
parent9d74befd2300ecb1793dd8ba5592b77e613d29f9 (diff)
downloadopenssl-bf6d2f986d47fa7f96ab9ede407bc3976a686b0f.tar.gz
Make CTR mode behaviour consistent with other modes:
- clear ctx->num in EVP_CipherInit_ex - adapt e_eas.c changes from http://cvs.openssl.org/chngview?cn=19816 for eng_aesni.c Submitted by: Emilia Kasper
Diffstat (limited to 'crypto')
-rw-r--r--crypto/engine/eng_aesni.c16
-rw-r--r--crypto/evp/evp.h2
-rw-r--r--crypto/evp/evp_enc.c1
3 files changed, 5 insertions, 14 deletions
diff --git a/crypto/engine/eng_aesni.c b/crypto/engine/eng_aesni.c
index 327a49c53e..1ea65e3f8f 100644
--- a/crypto/engine/eng_aesni.c
+++ b/crypto/engine/eng_aesni.c
@@ -301,16 +301,6 @@ aesni_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *user_key,
return 0;
}
- if (ctx->cipher->flags&EVP_CIPH_CUSTOM_IV)
- {
- if (iv!=NULL)
- memcpy (ctx->iv,iv,ctx->cipher->iv_len);
- else {
- EVPerr(EVP_F_AESNI_INIT_KEY,EVP_R_AES_IV_SETUP_FAILED);
- return 0;
- }
- }
-
return 1;
}
@@ -413,7 +403,7 @@ static int aesni_counter(EVP_CIPHER_CTX *ctx, unsigned char *out,
static const EVP_CIPHER aesni_128_ctr=
{
NID_aes_128_ctr,1,16,16,
- EVP_CIPH_CUSTOM_IV,
+ EVP_CIPH_CTR_MODE,
aesni_init_key,
aesni_counter,
NULL,
@@ -427,7 +417,7 @@ static const EVP_CIPHER aesni_128_ctr=
static const EVP_CIPHER aesni_192_ctr=
{
NID_aes_192_ctr,1,24,16,
- EVP_CIPH_CUSTOM_IV,
+ EVP_CIPH_CTR_MODE,
aesni_init_key,
aesni_counter,
NULL,
@@ -441,7 +431,7 @@ static const EVP_CIPHER aesni_192_ctr=
static const EVP_CIPHER aesni_256_ctr=
{
NID_aes_256_ctr,1,32,16,
- EVP_CIPH_CUSTOM_IV,
+ EVP_CIPH_CTR_MODE,
aesni_init_key,
aesni_counter,
NULL,
diff --git a/crypto/evp/evp.h b/crypto/evp/evp.h
index 2557ad3ab7..3b38ecd6e6 100644
--- a/crypto/evp/evp.h
+++ b/crypto/evp/evp.h
@@ -418,7 +418,7 @@ struct evp_cipher_ctx_st
unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */
unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */
unsigned char buf[EVP_MAX_BLOCK_LENGTH];/* saved partial block */
- int num; /* used by cfb/ofb mode */
+ int num; /* used by cfb/ofb/ctr mode */
void *app_data; /* application stuff */
int key_len; /* May change for variable length cipher */
diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c
index 87af9c4931..8d57d204d6 100644
--- a/crypto/evp/evp_enc.c
+++ b/crypto/evp/evp_enc.c
@@ -215,6 +215,7 @@ skip_to_init:
break;
case EVP_CIPH_CTR_MODE:
+ ctx->num = 0;
/* Don't reuse IV for CTR mode */
if(iv)
memcpy(ctx->iv, iv, EVP_CIPHER_CTX_iv_length(ctx));