From: Vitaly Chikunov Date: Thu, 26 Jul 2018 09:23:55 +0000 (+0300) Subject: Ensure proper cipher type for EVP_CTRL_KEY_MESH X-Git-Tag: v3.0.0~389 X-Git-Url: http://wagner.pp.ru/gitweb/?a=commitdiff_plain;h=2be13cb5c7e96d6bdead59b37717c2f49a581e9e;p=openssl-gost%2Fengine.git Ensure proper cipher type for EVP_CTRL_KEY_MESH --- 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;