Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby-openssl
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: cff68a0e2cd2
Choose a base ref
...
head repository: jruby/jruby-openssl
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: c340a3bd4613
Choose a head ref
  • 8 commits
  • 10 files changed
  • 1 contributor

Commits on Jun 1, 2016

  1. make sure initial BC security provider registration works!

    ... when **-Djruby.openssl.provider.register=true**
    kares committed Jun 1, 2016
    Copy the full SHA
    4040772 View commit details
  2. Copy the full SHA
    62326ae View commit details
  3. Copy the full SHA
    4776cb0 View commit details
  4. Copy the full SHA
    25ce1e7 View commit details
  5. Copy the full SHA
    0defef8 View commit details
  6. Copy the full SHA
    db27f46 View commit details
  7. Copy the full SHA
    eee8f36 View commit details
  8. Copy the full SHA
    c340a3b View commit details
47 changes: 34 additions & 13 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
language: ruby
sudo: false
rvm:
- jruby
#rvm:
# - jruby
jdk:
- openjdk6
- oraclejdk7
- oraclejdk8
env:
- TEST_PROFILE=test-1.6.8
- TEST_PROFILE=test-1.7.4
- TEST_PROFILE=test-1.7.13
- TEST_PROFILE=test-1.7.18
- TEST_PROFILE=test-1.7.22
- TEST_PROFILE=test-1.7.24
- TEST_PROFILE=test-1.7.25
#- TEST_PROFILE=test-1.7.22
#- TEST_PROFILE=test-1.7.24
#- TEST_PROFILE=test-1.7.25
- TEST_PROFILE=test-9.0.1.0
- TEST_PROFILE=test-9.0.5.0
- TEST_PROFILE=test-9.1.1.0

install: echo 'no bundle install atm!'
# script: mvn verify -P $TEST_PROFILE
install: if [[ -v BUNDLE_INSTALL ]]; then jruby -S bundle install; else echo ""; fi

script: if [[ -v TEST_COMMAND ]]; then $TEST_COMMAND; else mvn verify -P $TEST_PROFILE; fi

matrix:
@@ -29,14 +28,36 @@ matrix:
rvm: jruby-1.7.24
- env: TEST_COMMAND="jruby -S rake integration:install integration:test"
rvm: jruby-1.7.18
exclude:
include:
- jdk: oraclejdk7
env: TEST_COMMAND="jruby -S rake test" BUNDLE_INSTALL=true
rvm: jruby-1.7.22
- jdk: oraclejdk7
env: TEST_COMMAND="jruby -S rake test" BUNDLE_INSTALL=true
rvm: jruby-1.7.24
- jdk: oraclejdk7
env: TEST_COMMAND="jruby -S rake test" BUNDLE_INSTALL=true
rvm: jruby-1.7.25
#
- jdk: openjdk6
env: TEST_PROFILE=test-9.0.1.0
env: TEST_COMMAND="jruby -rbundler/setup -S rmvn verify -P test-1.6.8" BUNDLE_INSTALL=true RUBY_MAVEN_VERSION=3.3.8
rvm: jruby-1.7.22
- jdk: openjdk6
env: TEST_PROFILE=test-9.0.5.0
env: TEST_COMMAND="jruby -rbundler/setup -S rmvn verify -P test-1.7.4" BUNDLE_INSTALL=true RUBY_MAVEN_VERSION=3.3.8
rvm: jruby-1.7.22
- jdk: openjdk6
env: TEST_PROFILE=test-9.1.1.0
include:
env: TEST_COMMAND="jruby -rbundler/setup -S rmvn verify -P test-1.7.13" BUNDLE_INSTALL=true RUBY_MAVEN_VERSION=3.3.8
rvm: jruby-1.7.22
- jdk: openjdk6
env: TEST_COMMAND="jruby -rbundler/setup -S rmvn verify -P test-1.7.18" BUNDLE_INSTALL=true RUBY_MAVEN_VERSION=3.3.8
rvm: jruby-1.7.22
- jdk: openjdk6
env: TEST_COMMAND="jruby -rbundler/setup -S rmvn verify -P test-1.7.22" BUNDLE_INSTALL=true RUBY_MAVEN_VERSION=3.3.8
rvm: jruby-1.7.22
- jdk: openjdk6
env: TEST_COMMAND="jruby -rbundler/setup -S rmvn verify -P test-1.7.24" BUNDLE_INSTALL=true RUBY_MAVEN_VERSION=3.3.8
rvm: jruby-1.7.22
#
- jdk: oraclejdk8
env: TEST_COMMAND="jruby -S rake integration:install integration:test"
rvm: jruby-1.7.24
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -4,4 +4,4 @@ source 'https://rubygems.org'
gemspec

# for the rake task
gem 'ruby-maven', '~> 3.3.8'
gem 'ruby-maven', ENV['RUBY_MAVEN_VERSION'] || '~> 3.3.8'
3 changes: 2 additions & 1 deletion jruby-openssl.gemspec
Original file line number Diff line number Diff line change
@@ -19,7 +19,8 @@ Gem::Specification.new do |s|
s.require_paths = ['lib']

s.files = `git ls-files`.split("\n").
select { |f| f =~ /^(lib)/ || f =~ /^History|LICENSE|README|Rakefile/i } +
select { |f| f =~ /^(lib)/ ||
f =~ /^History|LICENSE|README|Rakefile|Mavenfile|pom.xml/i } +
Dir.glob('lib/**/*.jar') # 'lib/jopenssl.jar' and potentially BC jars

bc_version = version_rb.match( /.*\sBOUNCY_CASTLE_VERSION\s*=\s*['"](.*)['"]/ )[1]
3 changes: 1 addition & 2 deletions src/main/java/org/jruby/ext/openssl/OpenSSL.java
Original file line number Diff line number Diff line change
@@ -56,8 +56,7 @@ public static boolean isProviderAvailable() {
}

public static void createOpenSSL(final Ruby runtime) {
boolean registerProvider = SafePropertyAccessor.getBoolean("jruby.openssl.provider.register");
SecurityHelper.setRegisterProvider( registerProvider );
SecurityHelper.setRegisterProvider( SafePropertyAccessor.getBoolean("jruby.openssl.provider.register") );

final RubyModule _OpenSSL = runtime.getOrCreateModule("OpenSSL");
RubyClass _StandardError = runtime.getClass("StandardError");
15 changes: 9 additions & 6 deletions src/main/java/org/jruby/ext/openssl/SecurityHelper.java
Original file line number Diff line number Diff line change
@@ -99,8 +99,8 @@ public abstract class SecurityHelper {
private static String BC_PROVIDER_CLASS = "org.bouncycastle.jce.provider.BouncyCastleProvider";
static boolean setBouncyCastleProvider = true; // (package access for tests)
static Provider securityProvider; // 'BC' provider (package access for tests)
private static Boolean registerProvider = null;
private static final Map<String, Class> implEngines = new ConcurrentHashMap<String, Class>(16, 0.75f, 1);
private static volatile Boolean registerProvider = null;
static final Map<String, Class> implEngines = new ConcurrentHashMap<String, Class>(16, 0.75f, 1);

/**
* inject under a given name a cipher. also ensures that the registered
@@ -152,8 +152,10 @@ private static Provider newBouncyCastleProvider() {
return null;
}

public static synchronized void setRegisterProvider(boolean register) {
registerProvider = Boolean.valueOf(register); doRegisterProvider();
public static synchronized void setRegisterProvider(final boolean register) {
registerProvider = Boolean.valueOf(register);
if ( register ) getSecurityProvider(); // so that securityProvider != null
// getSecurityProvider does doRegisterProvider();
}

static boolean isProviderAvailable(final String name) {
@@ -168,13 +170,14 @@ static boolean isProviderRegistered() {
private static void doRegisterProvider() {
if ( registerProvider != null ) {
synchronized(SecurityHelper.class) {
if ( registerProvider != null && registerProvider.booleanValue() ) {
final Boolean register = registerProvider;
if ( register != null && register.booleanValue() ) {
if ( securityProvider != null ) {
Security.addProvider(securityProvider);
registerProvider = null;
}
}
}
registerProvider = null;
}
}

2 changes: 1 addition & 1 deletion src/test/ruby/dsa/test_dsa.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# coding: US-ASCII
require File.expand_path('../test_helper', File.dirname(__FILE__))

class TestDsa < TestCase
class TestDSA < TestCase

def setup
super
75 changes: 46 additions & 29 deletions src/test/ruby/pkcs7/test_smime.rb
Original file line number Diff line number Diff line change
@@ -4,8 +4,7 @@ module PKCS7Test
class TestSMIME < TestCase
def test_read_pkcs7_should_raise_error_when_parsing_headers_fails
bio = BIO.new
mime = Mime.new
mime.stubs(:parseHeaders).returns(nil)
mime = Mime.impl { |name, *args| name == :parseHeaders ? nil : raise }

begin
SMIME.new(mime).readPKCS7(bio, nil)
@@ -19,7 +18,7 @@ def test_read_pkcs7_should_raise_error_when_parsing_headers_fails

def test_read_pkcs7_should_raise_error_when_content_type_is_not_there
bio = BIO.new
mime = Mime.new
mime = Mime.impl {}

headers = ArrayList.new
mime.expects(:parseHeaders).with(bio).returns(headers)
@@ -34,7 +33,7 @@ def test_read_pkcs7_should_raise_error_when_content_type_is_not_there
assert_equal PKCS7::R_NO_CONTENT_TYPE, e.get_reason
end

mime = Mime.new
mime = Mime.impl {}
mime.expects(:parseHeaders).with(bio).returns(headers)
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", nil))

@@ -49,20 +48,18 @@ def test_read_pkcs7_should_raise_error_when_content_type_is_not_there
end

def test_read_pkcs7_should_set_the_second_arguments_contents_to_null_if_its_there
mime = Mime.new
mime.stubs(:parseHeaders).raises("getOutOfJailForFree")
mime = Mime.impl { |name, *args| name == :parseHeaders ? raise("parseHeaders") : raise }

bio2 = BIO.new
arr = [bio2].to_java BIO

begin
SMIME.new(mime).readPKCS7(nil, arr)
rescue
rescue => e
assert_equal 'parseHeaders', e.message
end

assert_nil arr[0]


arr = [bio2, bio2].to_java BIO
begin
SMIME.new(mime).readPKCS7(nil, arr)
@@ -75,11 +72,18 @@ def test_read_pkcs7_should_set_the_second_arguments_contents_to_null_if_its_ther

def test_read_pkcs7_should_call_methods_on_mime
bio = BIO.new
mime = Mime.new

headers = ArrayList.new
mime.expects(:parseHeaders).with(bio).returns(headers)
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", "application/pkcs7-mime"))
mime = Mime.impl do |name, *args|
case name
when :parseHeaders then ArrayList.new
when :findHeader then
if args[1] == 'content-type'
MimeHeader.new(args[1], "application/pkcs7-mime")
else
raise args.inspect
end
end
end

begin
SMIME.new(mime).readPKCS7(bio, nil)
@@ -90,11 +94,17 @@ def test_read_pkcs7_should_call_methods_on_mime

def test_read_pkcs7_throws_correct_exception_if_wrong_content_type
bio = BIO.new
mime = Mime.new

headers = ArrayList.new
mime.expects(:parseHeaders).with(bio).returns(headers)
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", "foo"))
mime = Mime.impl do |name, *args|
case name
when :parseHeaders then ArrayList.new
when :findHeader then
if args[1] == 'content-type'
MimeHeader.new(args[1], "foo")
else
raise args.inspect
end
end
end

begin
SMIME.new(mime).readPKCS7(bio, nil)
@@ -109,13 +119,19 @@ def test_read_pkcs7_throws_correct_exception_if_wrong_content_type

def test_read_pkcs7_with_multipart_should_fail_if_no_boundary_found
bio = BIO.new
mime = Mime.new

headers = ArrayList.new
hdr = MimeHeader.new("content-type", "multipart/signed")
mime.expects(:parseHeaders).with(bio).returns(headers)
mime.expects(:findHeader).with(headers, "content-type").returns(hdr)

mime = Mime.impl do |name, *args|
case name
when :parseHeaders then ArrayList.new
when :findHeader then
if args[1] == 'content-type'
hdr
else
raise args.inspect
end
end
end
hdr = MimeHeader.new("content-type", "multipart/signed")
mime.expects(:findParam).with(hdr, "boundary").returns(nil)

begin
@@ -130,7 +146,7 @@ def test_read_pkcs7_with_multipart_should_fail_if_no_boundary_found

def test_read_pkcs7_with_multipart_should_fail_if_null_boundary_value
bio = BIO.new
mime = Mime.new
mime = Mime.impl {}

headers = ArrayList.new
hdr = MimeHeader.new("content-type", "multipart/signed")
@@ -152,7 +168,7 @@ def test_read_pkcs7_with_multipart_should_fail_if_null_boundary_value
# TODO: redo this test to be an integration test
def _test_read_pkcs7_happy_path_without_multipart
bio = BIO.new
mime = Mime.new
mime = Mime.impl {}

headers = ArrayList.new
mime.expects(:parseHeaders).with(bio).returns(headers)
@@ -164,19 +180,20 @@ def _test_read_pkcs7_happy_path_without_multipart
def test_read_pkcs7_happy_path_multipart
bio = BIO::from_string(MultipartSignedString)
mime = Mime::DEFAULT
p7 = SMIME.new(mime).readPKCS7(bio, nil)
SMIME.new(mime).readPKCS7(bio, nil)
end

def test_read_pkcs7_happy_path_without_multipart_enveloped
bio = BIO::from_string(MimeEnvelopedString)
mime = Mime::DEFAULT
p7 = SMIME.new(mime).readPKCS7(bio, nil)
SMIME.new(mime).readPKCS7(bio, nil)
end

def test_read_pkcs7_happy_path_without_multipart_signed
bio = BIO::from_string(MimeSignedString)
mime = Mime::DEFAULT
p7 = SMIME.new(mime).readPKCS7(bio, nil)
SMIME.new(mime).readPKCS7(bio, nil)
end

end
end
2 changes: 1 addition & 1 deletion src/test/ruby/rsa/test_rsa.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# coding: US-ASCII
require File.expand_path('../test_helper', File.dirname(__FILE__))

class TestRsa < TestCase
class TestRSA < TestCase

def setup
super
2 changes: 2 additions & 0 deletions src/test/ruby/ssl/test_context.rb
Original file line number Diff line number Diff line change
@@ -103,6 +103,8 @@ def test_context_set_ssl_version
end

def test_context_ciphers
return skip('on Java 6') if defined?(ENV_JAVA) && ENV_JAVA['java.version'] < '1.7'

context = OpenSSL::SSL::SSLContext.new
context.ciphers = "ALL"

2 changes: 1 addition & 1 deletion src/test/ruby/test_helper.rb
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@
require_jar 'org.bouncycastle', 'bcprov-jdk15on', bc_version
Jars.freeze_loading if defined? Jars.freeze_loading

puts Java::OrgBouncycastleJceProvider::BouncyCastleProvider.new.info
puts Java::OrgBouncycastleJceProvider::BouncyCastleProvider.new.info if $VERBOSE
else
base_dir = File.expand_path('../../..', File.dirname(__FILE__))