]> www.wagner.pp.ru Git - openssl-gost/engine.git/blobdiff - gost_ameth.c
Merge branch 'mgm_impl' of https://github.com/gost-engine/engine into mgm_impl
[openssl-gost/engine.git] / gost_ameth.c
index df595207fadc43d5f7e5a53aa7ac7bb639383a34..50d0804a4f3706311ed0309bb946e7282858c194 100644 (file)
@@ -67,11 +67,18 @@ static ASN1_STRING *encode_gost_algor_params(const EVP_PKEY *key)
     switch (EVP_PKEY_base_id(key)) {
     case NID_id_GostR3410_2012_256:
         pkey_param_nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(key_ptr));
-        gkp->hash_params = OBJ_nid2obj(NID_id_GostR3411_2012_256);
+       switch (pkey_param_nid) {
+           case NID_id_GostR3410_2001_TestParamSet:
+           case NID_id_GostR3410_2001_CryptoPro_A_ParamSet:
+           case NID_id_GostR3410_2001_CryptoPro_B_ParamSet:
+           case NID_id_GostR3410_2001_CryptoPro_C_ParamSet:
+           case NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet:
+           case NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet:
+               gkp->hash_params = OBJ_nid2obj(NID_id_GostR3411_2012_256);
+       }
         break;
     case NID_id_GostR3410_2012_512:
         pkey_param_nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(key_ptr));
-        gkp->hash_params = OBJ_nid2obj(NID_id_GostR3411_2012_512);
         break;
     case NID_id_GostR3410_2001:
         pkey_param_nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(key_ptr));
@@ -766,8 +773,8 @@ static int pub_encode_gost_ec(X509_PUBKEY *pub, const EVP_PKEY *pk)
     }
 
     ret = i2d_ASN1_OCTET_STRING(octet, &buf);
-    ASN1_BIT_STRING_free(octet);
  err:
+    ASN1_BIT_STRING_free(octet);
     if (X)
         BN_free(X);
     if (Y)