Skip to content

Commit c78ca22

Browse files
authored
Merge pull request #32 from github/update-ruby-tests
Support Ruby 3.1 and fix Q size to 160 bits
2 parents e7c2b70 + ff034d5 commit c78ca22

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

.github/workflows/ruby.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ jobs:
88
runs-on: ubuntu-latest
99
strategy:
1010
matrix:
11-
ruby: [ '2.6', '2.7', '3.0' ]
11+
ruby: [ '2.6', '2.7', '3.0', '3.1' ]
1212

1313
steps:
1414
- uses: actions/checkout@master
1515
- name: Set up Ruby ${{ matrix.ruby }}
16-
uses: ruby/setup-ruby@fdcfbcf14ec9672f6f615cb9589a1bc5dd69d262
16+
uses: ruby/setup-ruby@f0971f0dd45a5cbb3f119f7db77cc58057c53530
1717
with:
1818
ruby-version: ${{ matrix.ruby }}
1919
- name: Build and test

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: 7 additions & 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!" }
@@ -17,6 +17,12 @@
1717
}.not_to raise_error
1818
end
1919

20+
it "generates default parameters" do
21+
key = described_class.generate
22+
expect(key.q.num_bits).to eq(160)
23+
expect(key.p.num_bits).to eq(1024)
24+
end
25+
2026
it "can sign messages" do
2127
expect(subject.public_key.verify(message, subject.sign(message))).to eq(true)
2228
end

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)