Skip to content

Commit 7767343

Browse files
committed
[fix] have a useful OPENSSL_VERSION_NUMBER
some gems such as ruby-jwt check this to detect 3.0.0 https://github.com/jwt/ruby-jwt/blob/v2.9.3/lib/jwt/version.rb#L27
1 parent 011aeb7 commit 7767343

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/main/java/org/jruby/ext/openssl/OpenSSL.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,26 @@ public static void createOpenSSL(final Ruby runtime) {
8989

9090
runtime.getLoadService().require("jopenssl/version");
9191

92-
final byte[] version = { '2','.','2','.','3' };
92+
final byte[] version = { '2','.','2','.','3' }; // C OpenSSL gem version
9393

9494
_OpenSSL.setConstant("VERSION", StringHelper.newString(runtime, version));
9595

9696
final RubyModule JOpenSSL = runtime.getModule("JOpenSSL");
9797
final RubyString jVERSION = JOpenSSL.getConstantAt("VERSION").asString();
9898

9999
final byte[] JRuby_OpenSSL_ = { 'J','R','u','b','y','-','O','p','e','n','S','S','L',' ' };
100-
final int OPENSSL_VERSION_NUMBER = 999999999; // NOTE: smt more useful?
101-
102100
ByteList OPENSSL_VERSION = new ByteList( jVERSION.getByteList().getRealSize() + JRuby_OpenSSL_.length );
103101
OPENSSL_VERSION.setEncoding( jVERSION.getEncoding() );
104102
OPENSSL_VERSION.append( JRuby_OpenSSL_ );
105103
OPENSSL_VERSION.append( jVERSION.getByteList() );
106104

105+
// < 3.0.0 until we have decent (full) compatibility
106+
final byte OPENSSL_VERSION_MAJOR = 2;
107+
final byte OPENSSL_VERSION_MINOR = 9;
108+
final byte OPENSSL_VERSION_PATCH = 9;
109+
final byte OPENSSL_VERSION_PRE_RELEASE = 0;
110+
final int OPENSSL_VERSION_NUMBER = OPENSSL_VERSION_MAJOR << 28 | OPENSSL_VERSION_MINOR << 20 | OPENSSL_VERSION_PATCH << 4 | OPENSSL_VERSION_PRE_RELEASE;
111+
107112
final RubyString VERSION;
108113
_OpenSSL.setConstant("OPENSSL_VERSION", VERSION = runtime.newString(OPENSSL_VERSION));
109114
_OpenSSL.setConstant("OPENSSL_VERSION_NUMBER", runtime.newFixnum(OPENSSL_VERSION_NUMBER));

src/test/ruby/test_openssl.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ def test_version
2727
assert /\AOpenSSL +0\./ !~ OpenSSL::OPENSSL_LIBRARY_VERSION
2828
end
2929

30+
# some gems check this - better to be conservative until 3.0.0 APIs are fully supported
31+
def test_version_lt_3_0_0
32+
assert OpenSSL::OPENSSL_VERSION_NUMBER < 3 * 0x10000000
33+
end
34+
3035
def test_debug
3136
debug = OpenSSL.debug
3237
assert (OpenSSL.debug == true || OpenSSL.debug == false)

0 commit comments

Comments
 (0)