ruby/test/drb/test_drbssl.rb
Jeremy Evans de07645019 [ruby/drb] Support :SSL{Min,Max}Version config options
These are necessary to get the tests passing with LibreSSL 3.8.1+,
which dropped support for TLSv1.0 and TLSv1.1 for security reasons.

This updates the tests to use TLSv1.2 on OpenBSD.  This is only
strictly necessary on OpenBSD 7.4+, but it will work fine in previous
versions as well.

32707b2db5
2023-10-18 21:13:21 +00:00

84 lines
1.8 KiB
Ruby

# frozen_string_literal: false
require_relative 'drbtest'
begin
require 'drb/ssl'
rescue LoadError
end
module DRbTests
if Object.const_defined?("OpenSSL")
class DRbSSLService < DRbService
%w(ut_drb_drbssl.rb ut_array_drbssl.rb).each do |nm|
add_service_command(nm)
end
def start
config = Hash.new
config[:SSLVerifyMode] = OpenSSL::SSL::VERIFY_PEER
config[:SSLVerifyCallback] = lambda{ |ok,x509_store|
true
}
if RUBY_PLATFORM.match?(/openbsd/)
config[:SSLMinVersion] = OpenSSL::SSL::TLS1_2_VERSION
config[:SSLMaxVersion] = OpenSSL::SSL::TLS1_2_VERSION
end
begin
data = open("sample.key"){|io| io.read }
config[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(data)
data = open("sample.crt"){|io| io.read }
config[:SSLCertificate] = OpenSSL::X509::Certificate.new(data)
rescue
# $stderr.puts "Switching to use self-signed certificate"
config[:SSLCertName] =
[ ["C","JP"], ["O","Foo.DRuby.Org"], ["CN", "Sample"] ]
end
@server = DRb::DRbServer.new('drbssl://localhost:0', manager, config)
end
end
class TestDRbSSLCore < Test::Unit::TestCase
include DRbCore
def setup
if RUBY_PLATFORM.match?(/mswin|mingw/)
@omitted = true
omit 'This test seems to randomly hang on Windows'
end
@drb_service = DRbSSLService.new
super
setup_service 'ut_drb_drbssl.rb'
end
def test_02_unknown
end
def test_01_02_loop
end
def test_05_eq
end
end
class TestDRbSSLAry < Test::Unit::TestCase
include DRbAry
def setup
if RUBY_PLATFORM.match?(/mswin|mingw/)
@omitted = true
omit 'This test seems to randomly hang on Windows'
end
LeakChecker.skip if defined?(LeakChecker)
@drb_service = DRbSSLService.new
super
setup_service 'ut_array_drbssl.rb'
end
end
end
end