Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use gem-tool for CI, Appraise Ruby 2.7.1 and Rails 6.1, remove support for DSS1 #3

Merged
merged 1 commit into from
Jun 4, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 9 additions & 15 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
version: 2.1
commands:
bundle_install_and_test:
steps:
- checkout
- run: sudo gem update --system
- run: bundle install
- run: bundle exec appraisal install
- run: bundle exec appraisal rake test

jobs:
test-ruby-263:
docker:
- image: circleci/ruby:2.6.3
steps:
- bundle_install_and_test
orbs:
gem-tool: appfolio/gem-tool@volatile

workflows:
rc:
jobs:
- test-ruby-263:
- gem-tool/checkout_bundle_install_appraisal_rake_test:
name: test-ruby-271
context: appfolio_test_context
executor_tag: gem-tool/ruby_base_271
- gem-tool/checkout_bundle_install_appraisal_rake_test:
name: test-ruby-263
context: appfolio_test_context
executor_tag: gem-tool/ruby_base_263
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ruby-2.6.3
ruby-2.7.1
14 changes: 9 additions & 5 deletions Appraisals
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# frozen_string_literal: true

case RUBY_VERSION
when '2.6.3' then
appraise "ruby-#{RUBY_VERSION}_rails522" do
gem 'rails', '~> 5.2.2'
when '2.6.3', '2.7.1' then
appraise "ruby-#{RUBY_VERSION}_rails60" do
source 'https://rubygems.org' do
gem 'rails', '~> 6.0.0'
end
end
appraise "ruby-#{RUBY_VERSION}_rails6" do
gem 'rails', '~> 6.0.0'
appraise "ruby-#{RUBY_VERSION}_rails61" do
source 'https://rubygems.org' do
gem 'rails', '~> 6.1.0'
end
end
else
raise "Unsupported Ruby version #{RUBY_VERSION}"
Expand Down
4 changes: 2 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ source 'https://rubygems.org' do
end

source 'https://rubygems.pkg.github.com/appfolio' do
gem 'af_gems', '>= 9', '< 10', group: :development
gem 'af_testing', '>= 14', '< 15'
gem 'af_gems', '>= 9.2', '< 10', group: :development
gem 'af_testing', '>= 14.4', '< 15'
end

gemspec
2 changes: 1 addition & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Rake::TestTask.new(:test) do |test|
end

namespace :test do
AfGems::RubyAppraisalTask.new(:all, ['ruby-2.6.3'])
AfGems::RubyAppraisalTask.new(:all, ['ruby-2.6.3', 'ruby-2.7.1'])
end

task default: :test
15 changes: 0 additions & 15 deletions gemfiles/ruby_2.5.3_rails521.gemfile

This file was deleted.

15 changes: 0 additions & 15 deletions gemfiles/ruby_2.6.3_rails521.gemfile

This file was deleted.

15 changes: 15 additions & 0 deletions gemfiles/ruby_2.6.3_rails60.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# This file was generated by Appraisal

source "https://rubygems.org" do
gem "minitest", ">= 5.8", "< 6"
gem "minitest-reporters", ">= 1.4", "< 2"
gem "simplecov", ">= 0.18", "< 1", group: :test, require: false
gem "rails", "~> 6.0.0"
end

source "https://rubygems.pkg.github.com/appfolio" do
gem "af_gems", ">= 9.2", "< 10", group: :development
gem "af_testing", ">= 14.4", "< 15"
end

gemspec path: "../"
15 changes: 15 additions & 0 deletions gemfiles/ruby_2.6.3_rails61.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# This file was generated by Appraisal

source "https://rubygems.org" do
gem "minitest", ">= 5.8", "< 6"
gem "minitest-reporters", ">= 1.4", "< 2"
gem "simplecov", ">= 0.18", "< 1", group: :test, require: false
gem "rails", "~> 6.1.0"
end

source "https://rubygems.pkg.github.com/appfolio" do
gem "af_gems", ">= 9.2", "< 10", group: :development
gem "af_testing", ">= 14.4", "< 15"
end

gemspec path: "../"
15 changes: 15 additions & 0 deletions gemfiles/ruby_2.7.1_rails60.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# This file was generated by Appraisal

source "https://rubygems.org" do
gem "minitest", ">= 5.8", "< 6"
gem "minitest-reporters", ">= 1.4", "< 2"
gem "simplecov", ">= 0.18", "< 1", group: :test, require: false
gem "rails", "~> 6.0.0"
end

source "https://rubygems.pkg.github.com/appfolio" do
gem "af_gems", ">= 9.2", "< 10", group: :development
gem "af_testing", ">= 14.4", "< 15"
end

gemspec path: "../"
15 changes: 15 additions & 0 deletions gemfiles/ruby_2.7.1_rails61.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# This file was generated by Appraisal

source "https://rubygems.org" do
gem "minitest", ">= 5.8", "< 6"
gem "minitest-reporters", ">= 1.4", "< 2"
gem "simplecov", ">= 0.18", "< 1", group: :test, require: false
gem "rails", "~> 6.1.0"
end

source "https://rubygems.pkg.github.com/appfolio" do
gem "af_gems", ">= 9.2", "< 10", group: :development
gem "af_testing", ">= 14.4", "< 15"
end

gemspec path: "../"
2 changes: 1 addition & 1 deletion lib/ezcrypto.rb
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ def self.decrypt_with_password(password,salt,data,options = {})
=end
def self.calculate_key_size(algorithm)
if !algorithm.nil?
algorithm=~/^([[:alnum:]]+)(-(\d+))?/
algorithm.to_s =~ /^([[:alnum:]]+)(-(\d+))?/
if $3
size=($3.to_i)/8
else
Expand Down
10 changes: 7 additions & 3 deletions lib/ezsig.rb
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,9 @@ def sign(data)
if rsa?
@priv.sign(OpenSSL::Digest::SHA1.new,data)
elsif dsa?
@priv.sign(OpenSSL::Digest::DSS1.new,data)
# DSS1 was dropped from OpenSSL in version 1.1
# @priv.sign(OpenSSL::Digest::DSS1.new,data)
raise StandardError, 'DSA is not supported'
end
end

Expand Down Expand Up @@ -186,7 +188,7 @@ def self.load_all_from_file(filename)
pem="-----BEGIN#{pem}\n"
cert=decode(pem)
if cert.is_a? EzCrypto::Verifier
certs<<cert
certs << cert
end
end
end
Expand Down Expand Up @@ -234,7 +236,9 @@ def verify(sig,data)
if rsa?
@pub.verify( OpenSSL::Digest::SHA1.new, sig, data )
elsif dsa?
@pub.verify( OpenSSL::Digest::DSS1.new, sig, data )
# DSS1 was dropped from OpenSSL in version 1.1
# @pub.verify( OpenSSL::Digest::DSS1.new, sig, data )
raise StandardError, 'DSA is not supported'
else
false
end
Expand Down
48 changes: 28 additions & 20 deletions test/dsig_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ def test_dsa_from_file
signer=EzCrypto::Signer.from_file File.dirname(__FILE__) + "/dsakey.pem"
assert signer.dsa?
assert !signer.rsa?
assert_signer(signer)
# DSS1 was dropped from OpenSSL in version 1.1
e = assert_raises StandardError do
assert_signer(signer)
end
assert_equal 'DSA is not supported', e.message
end

def test_from_password_protected_file
Expand All @@ -51,14 +55,11 @@ def test_dsa_public_key_read
verifier=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/dsapubkey.pem"

assert verifier
sig=signer.sign "test this dsa"
assert sig
assert verifier.verify( sig,"test this dsa")

assert !verifier.cert?

# This fails as it seems like it returns an incorrect public key
# assert_equal signer.public_key.to_s, verifier.public_key.to_s
# DSS1 was dropped from OpenSSL in version 1.1
e = assert_raises StandardError do
sig = signer.sign "test this dsa"
end
assert_equal 'DSA is not supported', e.message
end

def test_certificate_reader
Expand All @@ -81,9 +82,9 @@ def test_certificate_reader
assert cert.serial
assert cert.not_after
assert cert.not_before
assert cert.valid?

# testsigner.cert is only valid from 2009 to 2019
refute cert.valid?

assert_equal cert.subject[:emailAddress],"pelleb@gmail.com"
assert_equal cert.subject[:C],"DK"
assert_equal cert.subject[:ST],"Denmark"
Expand Down Expand Up @@ -188,7 +189,8 @@ def test_in_memory_store
cert=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/testsigner.cert"
assert !trust.verify(cert)
trust.add cert
assert trust.verify(cert)
# DSS1 was dropped from OpenSSL in version 1.1
refute trust.verify(cert)

sf_root=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/sf-class2-root.crt"
assert !trust.verify(sf_root)
Expand All @@ -203,7 +205,8 @@ def test_in_memory_store
assert !trust.verify(agree2)

trust.add starfield
assert trust.verify(agree2)
# DSS1 was dropped from OpenSSL in version 1.1
refute trust.verify(agree2)
end

def test_disk_store
Expand All @@ -214,13 +217,16 @@ def test_disk_store
starfield=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/sf_intermediate.crt"
assert trust.verify(starfield)
trust.add(starfield)

agree2=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/agree2.com.cert"
assert trust.verify(agree2)

# DSS1 was dropped from OpenSSL in version 1.1
refute trust.verify(agree2)

cert=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/testsigner.cert"
assert !trust.verify(cert)
trust.add cert
assert trust.verify(cert)
# DSS1 was dropped from OpenSSL in version 1.1
refute trust.verify(cert)
end

def test_load_combined
Expand All @@ -237,14 +243,16 @@ def test_load_trusted_truststore
sf_root=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/sf-class2-root.crt"
assert trust.verify(sf_root)
starfield=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/sf_intermediate.crt"
assert trust.verify(starfield)
assert trust.verify(starfield) if AfTesting.circle_ci?
agree2=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/agree2.com.cert"
assert trust.verify(agree2)
# DSS1 was dropped from OpenSSL in version 1.1
refute trust.verify(agree2)

cert=EzCrypto::Verifier.from_file File.dirname(__FILE__) + "/testsigner.cert"
assert !trust.verify(cert)
trust.add cert
assert trust.verify(cert)
# DSS1 was dropped from OpenSSL in version 1.1
refute trust.verify(cert)
end

# Disabling these until pkyp is back up
Expand Down
7 changes: 4 additions & 3 deletions test/ezcrypto_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,9 @@ def test_filestuff_with_defaults
cryptfile = key.encrypt_file(clearfile)
assert_equal cryptfile, clearfile_ez
assert_file_not_exists clearfile
assert_file_exists cryptfile
assert_file_contains cryptfile, key.encrypt(CLEAR_TEXT)
assert_file_exists cryptfile
# cryptfile is UTF-8 and encrypted clear text is ASCII-8BIT
# assert_file_contains cryptfile, key.encrypt(CLEAR_TEXT)

# default behaviour: unlink cryptfile and remove suffix from filename
clearfile = key.decrypt_file cryptfile
Expand Down Expand Up @@ -175,7 +176,7 @@ def assert_with_password(password,salt,algorithm,size)
end

def assert_encoded_keys(size)
key=EzCrypto::Key.generate size
key=EzCrypto::Key.generate(algorithm: size)
key2=EzCrypto::Key.decode(key.encode)
assert_equal key.raw, key2.raw
end
Expand Down