From: Boris Pismenny Date: Thu, 1 Jun 2017 05:54:55 +0000 (+0300) Subject: evp/e_aes: Expose IV X-Git-Tag: openssl-3.0.0-alpha1~2751 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=ecd1557fb4589103316c65b1fd1d4217a30900c0 evp/e_aes: Expose IV This commit exposes the cipher's IV to applications. Signed-off-by: Boris Pismenny Reviewed-by: Tim Hudson Reviewed-by: Paul Yang Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/5253) --- diff --git a/crypto/evp/e_aes.c b/crypto/evp/e_aes.c index 7b35575f0a..09f6598b6c 100644 --- a/crypto/evp/e_aes.c +++ b/crypto/evp/e_aes.c @@ -2866,6 +2866,14 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) memcpy(ptr, c->buf, arg); return 1; + case EVP_CTRL_GET_IV: + if (gctx->iv_gen != 1) + return 0; + if (gctx->ivlen != arg) + return 0; + memcpy(ptr, gctx->iv, arg); + return 1; + case EVP_CTRL_GCM_SET_IV_FIXED: /* Special case: -1 length restores whole IV */ if (arg == -1) { diff --git a/include/openssl/evp.h b/include/openssl/evp.h index f381a5760f..636ed1b680 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -350,6 +350,8 @@ int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, # define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 /* Set the input buffer lengths to use for a pipelined operation */ # define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 +/* Get the IV used by the cipher */ +# define EVP_CTRL_GET_IV 0x25 /* Padding modes */ #define EVP_PADDING_PKCS7 1