X-Git-Url: https://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_ec_keyx.c;h=457b30880913d0611848c2d23e0e765e46cb88a8;hb=03ff63b67e5b4f3e57f9c462bc073e66dcf20851;hp=af773e2eb39b740408b59e068b78fbf8a77b4e9b;hpb=a170809d792816448cb4c95f3473531a1a917e69;p=openssl-gost%2Fengine.git diff --git a/gost_ec_keyx.c b/gost_ec_keyx.c index af773e2..457b308 100644 --- a/gost_ec_keyx.c +++ b/gost_ec_keyx.c @@ -77,20 +77,26 @@ static int VKO_compute_key(unsigned char *shared_key, size_t shared_key_size, for (i = 0; i < buf_len; i++) { hashbuf[buf_len - 1 - i] = databuf[i]; } + mdctx = EVP_MD_CTX_new(); + if (!mdctx) { + 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, hashbuf, buf_len); EVP_DigestFinal_ex(mdctx, shared_key, NULL); - EVP_MD_CTX_free(mdctx); err: BN_free(UKM); BN_CTX_end(ctx); BN_CTX_free(ctx); + EC_POINT_free(pnt); - if (databuf) - OPENSSL_free(databuf); - if (hashbuf) - OPENSSL_free(hashbuf); + + EVP_MD_CTX_free(mdctx); + + OPENSSL_free(databuf); + OPENSSL_free(hashbuf); return 32; }