X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_ec_sign.c;h=3db118af1481d2680aa8f468176a7a4cc8d0935e;hb=9aa10ba25786b585e29c3f396d74bc4b3594467b;hp=be6f9b17e8d703a82bb4419ed5c44951e9814504;hpb=61afc2c3334e7e69598715548401078f350c45d1;p=openssl-gost%2Fengine.git diff --git a/gost_ec_sign.c b/gost_ec_sign.c index be6f9b1..3db118a 100644 --- a/gost_ec_sign.c +++ b/gost_ec_sign.c @@ -42,6 +42,18 @@ static R3410_ec_params *gost_nid2params(int nid) { R3410_ec_params *params; + /* Map tc26-2012 256-bit parameters to cp-2001 parameters */ + switch (nid) { + case NID_id_tc26_gost_3410_2012_256_paramSetB: + nid = NID_id_GostR3410_2001_CryptoPro_A_ParamSet; + break; + case NID_id_tc26_gost_3410_2012_256_paramSetC: + nid = NID_id_GostR3410_2001_CryptoPro_B_ParamSet; + break; + case NID_id_tc26_gost_3410_2012_256_paramSetD: + nid = NID_id_GostR3410_2001_CryptoPro_C_ParamSet; + } + /* Search nid in 2012 paramset */ params = R3410_2012_512_paramset; while (params->nid != NID_undef) { @@ -134,7 +146,7 @@ int fill_GOST_EC_params(EC_KEY *eckey, int nid) GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_INTERNAL_ERROR); goto end; } - EC_GROUP_set_curve_name(grp, params->nid); + EC_GROUP_set_curve_name(grp, nid); if (!EC_KEY_set_group(eckey, grp)) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_INTERNAL_ERROR); goto end;