From 2be13cb5c7e96d6bdead59b37717c2f49a581e9e Mon Sep 17 00:00:00 2001 From: Vitaly Chikunov Date: Thu, 26 Jul 2018 12:23:55 +0300 Subject: [PATCH] Ensure proper cipher type for EVP_CTRL_KEY_MESH --- gost_grasshopper_cipher.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gost_grasshopper_cipher.c b/gost_grasshopper_cipher.c index 07dfd91..528a7ee 100644 --- a/gost_grasshopper_cipher.c +++ b/gost_grasshopper_cipher.c @@ -659,13 +659,16 @@ int gost_grasshopper_cipher_ctl(EVP_CIPHER_CTX* ctx, int type, int arg, void* pt } break; } - case EVP_CTRL_KEY_MESH: - if (arg <= 1 || ((arg - 1) & arg)) - return -1; + case EVP_CTRL_KEY_MESH: { gost_grasshopper_cipher_ctx_ctr *c = EVP_CIPHER_CTX_get_cipher_data(ctx); + if (c->c.type != GRASSHOPPER_CIPHER_CTRACPKM || + arg <= 1 || + ((arg - 1) & arg)) + return -1; c->section_size = arg; c->skip_sections = 1; break; + } default: GOSTerr(GOST_F_GOST_GRASSHOPPER_CIPHER_CTL, GOST_R_UNSUPPORTED_CIPHER_CTL_COMMAND); return -1; -- 2.39.2