aboutsummaryrefslogtreecommitdiff
path: root/gost_pmeth.c
diff options
context:
space:
mode:
authorDmitry Timoshkov <dmitry@baikal.ru>2020-11-27 17:19:59 +0300
committerDmitry Belyavskiy <beldmit@users.noreply.github.com>2020-11-28 19:45:06 +0300
commite1afd2a137a0a4cab89260202fdc1828263d098d (patch)
treee1f58b96dad76fe73ada8bd364fd5955689492f0 /gost_pmeth.c
parent624ddcf67b15d1c5c98b9e9ccd2f66cf7908ecc4 (diff)
downloadgost-engine-e1afd2a137a0a4cab89260202fdc1828263d098d.zip
gost-engine-e1afd2a137a0a4cab89260202fdc1828263d098d.tar.gz
gost-engine-e1afd2a137a0a4cab89260202fdc1828263d098d.tar.bz2
Add explicit support for NID_id_GostR3410_2001DH (GOST R 34.10-2001 DH)
Diffstat (limited to 'gost_pmeth.c')
-rw-r--r--gost_pmeth.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gost_pmeth.c b/gost_pmeth.c
index 9c1d602..b83d88d 100644
--- a/gost_pmeth.c
+++ b/gost_pmeth.c
@@ -39,6 +39,7 @@ static int pkey_gost_init(EVP_PKEY_CTX *ctx)
if (pkey && EVP_PKEY_get0(pkey)) {
switch (EVP_PKEY_base_id(pkey)) {
case NID_id_GostR3410_2001:
+ case NID_id_GostR3410_2001DH:
case NID_id_GostR3410_2012_256:
case NID_id_GostR3410_2012_512:
{
@@ -104,6 +105,7 @@ static int pkey_gost_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
switch (EVP_MD_type((const EVP_MD *)p2)) {
case NID_id_GostR3411_94:
if (pkey_nid == NID_id_GostR3410_2001
+ || pkey_nid == NID_id_GostR3410_2001DH
|| pkey_nid == NID_id_GostR3410_94) {
pctx->md = (EVP_MD *)p2;
return 1;
@@ -492,6 +494,7 @@ static int pkey_gost_ec_cp_sign(EVP_PKEY_CTX *ctx, unsigned char *sig,
switch (EVP_PKEY_base_id(pkey)) {
case NID_id_GostR3410_2001:
+ case NID_id_GostR3410_2001DH:
case NID_id_GostR3410_2012_256:
order = 64;
break;
@@ -1049,6 +1052,7 @@ int register_pmeth_gost(int id, EVP_PKEY_METHOD **pmeth, int flags)
switch (id) {
case NID_id_GostR3410_2001:
+ case NID_id_GostR3410_2001DH:
EVP_PKEY_meth_set_ctrl(*pmeth,
pkey_gost_ctrl, pkey_gost_ec_ctrl_str_256);
EVP_PKEY_meth_set_sign(*pmeth, NULL, pkey_gost_ec_cp_sign);