From 6baa93be806961444d000337366b8ede5deb1c8d Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Thu, 19 Mar 2020 18:13:42 +0300 Subject: [PATCH] gost: restore CMS support Restore CMS support dropped few years ago when CMS support was removed from LibreSSL. Signed-off-by: Dmitry Baryshkov --- src/lib/libcrypto/gost/gostr341001_ameth.c | 14 ++++++++++++++ src/lib/libcrypto/gost/gostr341001_pmeth.c | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c index 6886859fa..087042f0a 100644 --- a/src/lib/libcrypto/gost/gostr341001_ameth.c +++ b/src/lib/libcrypto/gost/gostr341001_ameth.c @@ -59,6 +59,9 @@ #include #include #include +#ifndef OPENSSL_NO_CMS +#include +#endif #include @@ -749,6 +752,17 @@ pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) PKCS7_SIGNER_INFO_get0_algs(arg2, NULL, &alg1, &alg2); break; +#ifndef OPENSSL_NO_CMS + case ASN1_PKEY_CTRL_CMS_SIGN: + if (arg1 == 0) + CMS_SignerInfo_get0_algs(arg2, NULL, NULL, + &alg1, &alg2); + return 1; + case ASN1_PKEY_CTRL_CMS_ENVELOPE: + if (arg1 == 0) + CMS_RecipientInfo_ktri_get0_algs(arg2, NULL, NULL, &alg3); + break; +#endif case ASN1_PKEY_CTRL_PKCS7_ENCRYPT: if (arg1 == 0) PKCS7_RECIP_INFO_get0_alg(arg2, &alg3); diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c index 0e0cae99e..cacbf3de9 100644 --- a/src/lib/libcrypto/gost/gostr341001_pmeth.c +++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c @@ -587,6 +587,11 @@ pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) case EVP_PKEY_CTRL_PKCS7_DECRYPT: case EVP_PKEY_CTRL_PKCS7_SIGN: case EVP_PKEY_CTRL_DIGESTINIT: +#ifndef OPENSSL_NO_CMS + case EVP_PKEY_CTRL_CMS_ENCRYPT: + case EVP_PKEY_CTRL_CMS_DECRYPT: + case EVP_PKEY_CTRL_CMS_SIGN: +#endif return 1; case EVP_PKEY_CTRL_GOST_PARAMSET: -- 2.20.1