Skip to content

Commit 6e1bb8e

Browse files
committed
Fix DSA key generation to use a 160 Q bit value in Ruby 3.1 / OpenSSL 3.0.
1 parent 51dfdff commit 6e1bb8e

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

lib/ssh_data/private_key/dsa.rb

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,19 @@ class DSA < Base
77
#
88
# Returns a PublicKey::Base subclass instance.
99
def self.generate
10-
from_openssl(OpenSSL::PKey::DSA.generate(1024))
10+
openssl_key =
11+
if defined?(OpenSSL::PKey.generate_parameters)
12+
dsa_parameters = OpenSSL::PKey.generate_parameters("DSA", {
13+
dsa_paramgen_bits: 1024,
14+
dsa_paramgen_q_bits: 160
15+
})
16+
17+
OpenSSL::PKey.generate_key(dsa_parameters)
18+
else
19+
OpenSSL::PKey::DSA.generate(1024)
20+
end
21+
22+
from_openssl(openssl_key)
1123
end
1224

1325
# Import an openssl private key.

spec/private_key/dsa_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
require_relative "../spec_helper"
22

33
describe SSHData::PrivateKey::DSA do
4-
let(:private_key) { OpenSSL::PKey::DSA.generate(1024) }
4+
let(:private_key) { SSHData::PrivateKey::DSA.generate.openssl }
55
let(:public_key) { private_key.public_key }
66
let(:params) { private_key.params }
77
let(:message) { "hello, world!" }

spec/public_key/dsa_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
require_relative "../spec_helper"
22

33
describe SSHData::PublicKey::DSA do
4-
let(:private_key) { OpenSSL::PKey::DSA.generate(1024) }
4+
let(:private_key) { SSHData::PrivateKey::DSA.generate.openssl }
55
let(:public_key) { private_key.public_key }
66
let(:params) { public_key.params }
77

0 commit comments

Comments
 (0)