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:
{
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;
static int pkey_gost_ec_ctrl_str_common(EVP_PKEY_CTX *ctx,
const char *type, const char *value)
{
- if (0 == strcmp(type, ukm_ctrl_string)) {
- unsigned char ukm_buf[32], *tmp = NULL;
- long len = 0;
- tmp = OPENSSL_hexstr2buf(value, &len);
- if (tmp == NULL)
- return 0;
-
- if (len > 32) {
- OPENSSL_free(tmp);
- GOSTerr(GOST_F_PKEY_GOST_EC_CTRL_STR_COMMON, GOST_R_CTRL_CALL_FAILED);
- return 0;
- }
- memcpy(ukm_buf, tmp, len);
-
- return pkey_gost_ctrl(ctx, EVP_PKEY_CTRL_SET_IV, len, ukm_buf);
- }
+ if (0 == strcmp(type, ukm_ctrl_string)) {
+ unsigned char ukm_buf[32], *tmp = NULL;
+ long len = 0;
+ tmp = OPENSSL_hexstr2buf(value, &len);
+ if (tmp == NULL)
+ return 0;
+
+ if (len > 32) {
+ OPENSSL_free(tmp);
+ GOSTerr(GOST_F_PKEY_GOST_EC_CTRL_STR_COMMON, GOST_R_CTRL_CALL_FAILED);
+ return 0;
+ }
+ memcpy(ukm_buf, tmp, len);
+ OPENSSL_free(tmp);
+
+ return pkey_gost_ctrl(ctx, EVP_PKEY_CTRL_SET_IV, len, ukm_buf);
+ }
return -2;
}
param_nid, NULL);
}
- return pkey_gost_ec_ctrl_str_common(ctx, type, value);
+ return pkey_gost_ec_ctrl_str_common(ctx, type, value);
}
static int pkey_gost_ec_ctrl_str_512(EVP_PKEY_CTX *ctx,
int param_nid = NID_undef;
if (strcmp(type, param_ctrl_string))
- return pkey_gost_ec_ctrl_str_common(ctx, type, value);
+ return pkey_gost_ec_ctrl_str_common(ctx, type, value);
if (!value)
return 0;
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;
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);