jruby-openssl 0.19.2-java → 0.19.4-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 333ea31e2b8e97fe3952c679a5c7e4518d5044bb4022015db9307481ee1a8bb8
4
- data.tar.gz: 7439667603e352d2158e3778e9060664c94e529cb2c205578613169b7cea45e8
3
+ metadata.gz: 5bb2aa94792608481396a74fa230379ae8316e9dc58d5752680001bbb6e01999
4
+ data.tar.gz: 9de9c267a793e3fb3d0eadcdb5517917df1240b9c67a69538c51071ff439ed16
5
5
  SHA512:
6
- metadata.gz: 636424c4fe4bd18e956cdb93e6c4cf9397531b5cc3d5c56d791a3759a036f2848ded320fee858a18516d3010f2d2cffab567fde6e7186ec3fa3a60def96f9451
7
- data.tar.gz: d5520d35c471b83aaf32b64fa534f7268d2b6d0d6873289cf28286eb35bdf3c4f41546d4ee46674c449c8d92d238d5f5d490d70409bfb8b0db3615d495aae1c1
6
+ metadata.gz: 3fa4d17673050c372774ac8fd44513e21124eea59b82d2b46896ddb9d8ccc52a811502fbb4c1d3c4d06290d3e5f97f0fa798c243f039c2ff0ca5c1596b134f33
7
+ data.tar.gz: d0b29d49eeb671d47e8e11a463214e17a10c43be969dd4130e6e5c65046ae5bc683e33e35a5b4afd3f59f1a2e88e7dd8d9c27060c6495caa9259270bd8baaaa2
data/History.md CHANGED
@@ -1,3 +1,47 @@
1
+ ## 0.19.4
2
+
3
+ TLS compatibility, cipher selection and key-handling (regression) fixes.
4
+
5
+ - [fix] match BCJSSE credential key in TLS handshakes (#383)
6
+ - [fix] keep CTR (and OFB) cipher state after final (#392)
7
+ - [fix] report 1.3 ciphers independently of legacy selectors
8
+ - [fix] support AES128, AES256 and CHACHA20 cipher aliases (#390)
9
+ - [fix] translate unchecked RSA provider errors
10
+ - [fix] return `false` for out-of-range RSA-PSS signatures
11
+ - [fix] finalize buffered TLS EOF handling (#388)
12
+ - [fix] deliver buffered data before EOF (#388)
13
+ - [fix] support ECDHE cipher selectors (#387)
14
+ - [fix] reject incomplete PEM end markers (#385)
15
+
16
+ ## 0.19.3
17
+
18
+ Broader OpenSSL compatibility across PKCS7, X.509, key handling and big numbers,
19
+ with new DH validation and digest enumeration support.
20
+
21
+ - [feat] implement `Digest.digests` algorithm enumeration
22
+ - [feat] add `PKey::DH#params_ok?` parameter validation
23
+ - [compat] add `PKey::DH#public_key`
24
+ - [feat] add EC `on_curve?` checks and hybrid point serialization
25
+ - [compat] align PKCS7 behavior with OpenSSL
26
+ - [compat] align PKCS12 MAC handling (PKCS12KDF & PBMAC1) with OpenSSL
27
+ - [compat] support configured X.509 extensions
28
+ - [compat] load X.509 certificate chains
29
+ - [compat] support multiple CRL distribution point URIs
30
+ - [compat] format X.509 names like OpenSSL
31
+ - [compat] validate X.509 attribute values
32
+ - [compat] suppress X.509 store callback exceptions
33
+ - [compat] parse DER certificates before trying PEM
34
+ - [compat] align Netscape SPKI serialization with OpenSSL
35
+ - [compat] align OCSP signing with OpenSSL
36
+ - [compat] align BN modular arithmetic and negative string conversion
37
+ - [compat] raise `BNError` for invalid arithmetic
38
+ - [compat] reject `nil` BN values
39
+ - [compat] map invalid X.509 extension values to `ExtensionError`
40
+ - [compat] copy X.509 collection arguments to avoid retaining caller-owned arrays
41
+ - [fix] format zero BN as single hex digit
42
+ - [fix] report BouncyCastle `SecureRandom` initialization errors
43
+ - [fix] reset TLS output buffer after shutdown
44
+
1
45
  ## 0.19.2
2
46
 
3
47
  ASN.1 and X.509 compatibility improvements, new OpenSSL::Timestamp support &
data/README.md CHANGED
@@ -85,9 +85,13 @@ Bouncy Castle libraries, so some entry points are unavailable, behave differentl
85
85
 
86
86
  **SSL / TLS** (backed by JSSE)
87
87
  - `SSLSocket#state` and NPN (`#npn_protocol`) are unimplemented and return `nil` - use ALPN instead
88
+ - `SSLSocket#close_write` closes both TLS directions even on TLS 1.3; reading a peer response afterward
89
+ is unsupported, use message lengths or delimiters to frame requests instead of TLS EOF
90
+ NOTE: that you can enforce the half-close when using the JDK built-in SunJSSE provider
88
91
  - Forced session resumption (`SSLSocket#session=`) is best-effort and only fully works with the
89
92
  BouncyCastle JSSE provider; `session_reused?` may return `nil` ("can't decide")
90
- - `SSL::Session#id=` / `#time=` are no-ops; `SSL::Session.new` on a non-socket raises `NotImplementedError`
93
+ - `SSL::Session#id=` / `#time=` are no-ops
94
+ - `SSL::Session.new` on a non-socket raises `NotImplementedError`
91
95
  - Hostname / `subjectAltName` matching runs over Java's certificate parsing and can differ from
92
96
  MRI's `GeneralName` handling in edge cases
93
97
 
@@ -99,9 +103,8 @@ Bouncy Castle libraries, so some entry points are unavailable, behave differentl
99
103
 
100
104
  **PKey** (EC / DH / EdDSA)
101
105
  - EC is limited to prime curves (`:GFp`); binary-field curves (`:GF2m`) fail
102
- - `EC::Point#mul` with array arguments, `:hybrid` point compression, and encrypted EC private-key
103
- export are not implemented
104
- - `DH#set_pqg` accepts but silently ignores the `q` parameter
106
+ - `EC::Point#mul` with array arguments and encrypted EC private-key export are not implemented
107
+ - `DH#set_pqg` ignores the `q` parameter (and warns when it is non-`nil`)
105
108
  - EdDSA (`Ed25519` / `Ed448`) rejects digest arguments
106
109
 
107
110
  **X509**
data/Rakefile CHANGED
@@ -95,21 +95,25 @@ task :test => ['lib/jopenssl.jar', 'pkg/test-classes/org/jruby/ext/openssl/Secur
95
95
  require_relative 'tasks/vendor_tests'
96
96
  define_vendor_test_tasks # root + jopenssl_lib default to this tree
97
97
 
98
+ require_relative 'tasks/mri_tests'
99
+ define_mri_test_task
100
+
98
101
  require_relative 'tasks/provider_tests'
99
102
  namespace :test do
100
103
  namespace :provider do
101
104
  define_provider_test_task :bc_all,
102
- description: 'Run tests with BC providers registered through java.security',
105
+ description: 'Run tests with BC providers registered',
103
106
  providers: [
104
107
  { name: 'BC', class: 'org.bouncycastle.jce.provider.BouncyCastleProvider' },
105
108
  { name: 'BCJSSE', class: 'org.bouncycastle.jsse.provider.BouncyCastleJsseProvider' }
106
109
  ],
107
110
  jars: -> { FileList['vendor/**/*.jar'].map { |path| File.expand_path(path) } }
108
- define_provider_test_task :bc_wout_jsse,
109
- description: 'Run tests with only BC provider registered (without BC-JSSE)',
111
+ define_provider_test_task :bc_wout_jsse, # BC registered but BC-JSSE n/a
112
+ description: 'Run tests with BC provider and default SSL engine',
110
113
  providers: [
111
114
  { name: 'BC', class: 'org.bouncycastle.jce.provider.BouncyCastleProvider' },
112
115
  ],
116
+ extra_ruby_opts: ['-J-Djruby.openssl.provider.ssl=false'], # use built-in SunJSSE
113
117
  jdk_providers: ['SUN', 'SunJSSE', 'SunJCE', 'SunEC'],
114
118
  jars: -> { FileList['vendor/**/*.jar'].map { |path| File.expand_path(path) } }
115
119
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module JOpenSSL
3
- VERSION = '0.19.2'
3
+ VERSION = '0.19.4'
4
4
  BOUNCY_CASTLE_VERSION = '1.86'
5
5
 
6
6
  # @private
data/lib/jopenssl.jar CHANGED
Binary file
data/lib/openssl/ssl.rb CHANGED
@@ -489,6 +489,8 @@ YoaOffgTf5qxiwkjnlVZQc3whgnEt9FpVMvQ9eknyeGB5KHfayAc3+hUAvI3/Cr3
489
489
  # Therefore, on TLS 1.2, this method will cause the connection to be
490
490
  # completely shut down. On TLS 1.3, the connection will remain open for
491
491
  # reading only.
492
+ #
493
+ # NOTE: JRuby, when using BC-JSSE, closes both directions even on TLS 1.3
492
494
  def close_write
493
495
  stop
494
496
  end
data/lib/openssl/x509.rb CHANGED
@@ -135,19 +135,19 @@ module OpenSSL
135
135
  raise ASN1::ASN1Error, "invalid extension"
136
136
  end
137
137
 
138
- crl_uris = cdp_asn1.map do |crl_distribution_point|
138
+ crl_uris = cdp_asn1.flat_map do |crl_distribution_point|
139
139
  distribution_point = crl_distribution_point.value.find do |v|
140
140
  v.tag_class == :CONTEXT_SPECIFIC && v.tag == 0
141
141
  end
142
142
  full_name = distribution_point&.value&.find do |v|
143
143
  v.tag_class == :CONTEXT_SPECIFIC && v.tag == 0
144
144
  end
145
- full_name&.value&.find do |v|
145
+ full_name&.value&.select do |v|
146
146
  v.tag_class == :CONTEXT_SPECIFIC && v.tag == 6 # uniformResourceIdentifier
147
147
  end
148
148
  end
149
149
 
150
- crl_uris&.map(&:value)
150
+ crl_uris.empty? ? nil : crl_uris.map(&:value)
151
151
  end
152
152
  end
153
153
 
data/pom.xml CHANGED
@@ -11,7 +11,7 @@ DO NOT MODIFY - GENERATED CODE
11
11
  <modelVersion>4.0.0</modelVersion>
12
12
  <groupId>org.jruby.openssl</groupId>
13
13
  <artifactId>jruby-openssl</artifactId>
14
- <version>0.19.2</version>
14
+ <version>0.19.4</version>
15
15
  <packaging>gem</packaging>
16
16
  <name>SSL/TLS and general-purpose cryptography for JRuby</name>
17
17
  <description>Ruby OpenSSL compatibility for JRuby, based on Java JCA/JCE and Bouncy Castle libraries (does not depend on native OpenSSL).</description>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jruby-openssl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.2
4
+ version: 0.19.4
5
5
  platform: java
6
6
  authors:
7
7
  - Karol Bucek
@@ -9,7 +9,7 @@ authors:
9
9
  - JRuby contributors
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-09-25 00:00:00.000000000 Z
12
+ date: 2026-10-27 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Ruby OpenSSL compatibility for JRuby, based on Java JCA/JCE and Bouncy
15
15
  Castle libraries (does not depend on native OpenSSL).