From 3e268d2717df4f74acddccf2ffe954f63b54b8a0 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Sat, 16 Mar 2002 23:20:05 +0000 Subject: Ensure EVP_CipherInit() uses the correct encode/decode parameter if enc == -1 [Reported by Markus Friedl ] Fix typo in dh_lib.c (use of DSAerr instead of DHerr). --- crypto/evp/evp_enc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'crypto/evp/evp_enc.c') diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c index 22a7b745c1..d28a7d266e 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -85,7 +85,14 @@ int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv, int enc) { - if(enc && (enc != -1)) enc = 1; + if (enc == -1) + enc = ctx->encrypt; + else + { + if (enc) + enc = 1; + ctx->encrypt = enc; + } /* Whether it's nice or not, "Inits" can be used on "Final"'d contexts * so this context may already have an ENGINE! Try to avoid releasing * the previous handle, re-querying for an ENGINE, and having a @@ -184,7 +191,6 @@ skip_to_init: if(key || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT)) { if(!ctx->cipher->init(ctx,key,iv,enc)) return 0; } - if(enc != -1) ctx->encrypt=enc; ctx->buf_len=0; ctx->final_used=0; ctx->block_mask=ctx->cipher->block_size-1; -- cgit v1.2.3