X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_ec_keyx.c;h=2b4a96e54664aac98e1f31fc65eac6e6abe4022d;hb=d19a1a820d7be62647bbdd7448d851498bf18968;hp=4a0eb826e5cca3565e0dc9e7b667e3f92711289d;hpb=fba4c338569d27f72ba53d5cbaea0bd989c02748;p=openssl-gost%2Fengine.git diff --git a/gost_ec_keyx.c b/gost_ec_keyx.c index 4a0eb82..2b4a96e 100644 --- a/gost_ec_keyx.c +++ b/gost_ec_keyx.c @@ -86,10 +86,15 @@ int VKO_compute_key(unsigned char *shared_key, GOSTerr(GOST_F_VKO_COMPUTE_KEY, ERR_R_MALLOC_FAILURE); goto err; } - EVP_MD_CTX_init(mdctx); - EVP_DigestInit_ex(mdctx, md, NULL); - EVP_DigestUpdate(mdctx, databuf, buf_len); - EVP_DigestFinal_ex(mdctx, shared_key, NULL); + + if (EVP_MD_CTX_init(mdctx) == 0 + || EVP_DigestInit_ex(mdctx, md, NULL) == 0 + || EVP_DigestUpdate(mdctx, databuf, buf_len) == 0 + || EVP_DigestFinal_ex(mdctx, shared_key, NULL) == 0) { + GOSTerr(GOST_F_VKO_COMPUTE_KEY, ERR_R_EVP_LIB); + goto err; + } + ret = (EVP_MD_size(md) > 0) ? EVP_MD_size(md) : 0; err: