gost_crypt.c | 6 ++++++ gost_lcl.h | 1 + 2 files changed, 7 insertions(+) diff --git a/gost_crypt.c b/gost_crypt.c index 930d40a..6354b7d 100644 --- a/gost_crypt.c +++ b/gost_crypt.c @@ -1190,6 +1190,12 @@ int gost_imit_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr) c->dgst_size = arg; return 1; } + case EVP_MD_CTRL_SET_IV: { + struct ossl_gost_imit_ctx *gost_imit_ctx = EVP_MD_CTX_md_data(ctx); + OPENSSL_assert(ptr != NULL); + memcpy(gost_imit_ctx->buffer, ptr, arg); + return 1; + } default: return 0; diff --git a/gost_lcl.h b/gost_lcl.h index 78c6523..da5c892 100644 --- a/gost_lcl.h +++ b/gost_lcl.h @@ -253,6 +253,7 @@ void inc_counter(unsigned char *buffer, size_t buf_len); # define EVP_MD_CTRL_KEY_LEN (EVP_MD_CTRL_ALG_CTRL+3) # define EVP_MD_CTRL_SET_KEY (EVP_MD_CTRL_ALG_CTRL+4) # define EVP_MD_CTRL_MAC_LEN (EVP_MD_CTRL_ALG_CTRL+5) +# define EVP_MD_CTRL_SET_IV (EVP_MD_CTRL_ALG_CTRL+6) /* EVP_PKEY_METHOD key encryption callbacks */ /* From gost_ec_keyx.c */ int pkey_gost_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out,