@@ -260,23 +260,22 @@ func newDSA3(params DSAParameters, X, Y BigInt) (C.GO_EVP_PKEY_PTR, error) {
260
260
C .go_openssl_OSSL_PARAM_BLD_push_BN (bld , paramG , g ) != 1 {
261
261
return nil , newOpenSSLError ("OSSL_PARAM_BLD_push_BN" )
262
262
}
263
- selection := C .int (C .GO_EVP_PKEY_KEYPAIR )
263
+ selection := C .int (C .GO_EVP_PKEY_KEY_PARAMETERS )
264
264
if Y != nil {
265
265
pub := bigToBN (Y )
266
266
defer C .go_openssl_BN_free (pub )
267
267
if C .go_openssl_OSSL_PARAM_BLD_push_BN (bld , paramPubKey , pub ) != 1 {
268
268
return nil , newOpenSSLError ("OSSL_PARAM_BLD_push_BN" )
269
269
}
270
- if X == nil {
271
- selection = C .int (C .GO_EVP_PKEY_PUBLIC_KEY )
272
- }
270
+ selection = C .int (C .GO_EVP_PKEY_PUBLIC_KEY )
273
271
}
274
272
if X != nil {
275
273
priv := bigToBN (X )
276
274
defer C .go_openssl_BN_clear_free (priv )
277
275
if C .go_openssl_OSSL_PARAM_BLD_push_BN (bld , paramPrivKey , priv ) != 1 {
278
276
return nil , newOpenSSLError ("OSSL_PARAM_BLD_push_BN" )
279
277
}
278
+ selection = C .int (C .GO_EVP_PKEY_KEYPAIR )
280
279
}
281
280
bldparams := C .go_openssl_OSSL_PARAM_BLD_to_param (bld )
282
281
if bldparams == nil {
@@ -297,7 +296,6 @@ func newDSA3(params DSAParameters, X, Y BigInt) (C.GO_EVP_PKEY_PTR, error) {
297
296
if ctx == nil {
298
297
return nil , newOpenSSLError ("EVP_PKEY_CTX_new_from_pkey" )
299
298
}
300
- defer C .go_openssl_EVP_PKEY_CTX_free (ctx )
301
299
if C .go_openssl_EVP_PKEY_keygen_init (ctx ) != 1 {
302
300
return nil , newOpenSSLError ("EVP_PKEY_keygen_init" )
303
301
}
0 commit comments