Skip to content

Commit c7972ee

Browse files
committed
[release] prepare for 0.19.0 (beta)
1 parent e7d40e5 commit c7972ee

5 files changed

Lines changed: 114 additions & 7 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ build.log
99
lib/org
1010
vendor
1111
!test/vendor
12+
.polyglot.Mavenfile

History.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,107 @@
1+
## 0.19.0
2+
3+
FIPS support, distributed as a **separate, dual GPL/commercial artifact**.
4+
5+
Alongside FIPS, this release switches TLS to BouncyCastle's JSSE provider by
6+
default (session reuse, ChaCha20-Poly1305, session/servername callbacks), and
7+
lands an extensive X.509 verification hardening (name constraints, CRL scope,
8+
path-length, partial-chain handling and improved hostname verification).
9+
10+
NOTE: due considerable amount of changes please treat 0.19 as a beta release.
11+
12+
- [feat] FIPS support as a separate `jruby-openssl` artifact bundling BC-FIPS
13+
- [feat] leverage BouncyCastle's JSSE provider by default for SSL/TLS
14+
- [build] restore binary compatibility with BC < 1.84
15+
- [feat] `to_java` conversions (`X500Principal`, `KeyPair`, `MessageDigest`, `Mac`)
16+
- [feat] pluggable internal logging via a logger interface
17+
- [feat] route logs through `java.util.logging` (`jruby.openssl.log.logger=jul`)
18+
- [chore] remove long-deprecated methods and legacy JRuby/JOpenSSL constants
19+
20+
### SSL / TLS
21+
22+
- [feat] proper TLS session reuse with the BC provider
23+
- [compat] add `SSLSession#to_der`, `#to_pem` and `#to_text`
24+
- [feat] (re)implement SSLContext session callbacks
25+
- [feat] start calling `servername_cb`
26+
- [feat] server-only `renegotiation_cb`
27+
- [feat] TLS 1.2 ChaCha20-Poly1305 cipher suites
28+
- [fix] `read_nonblock(exception: false)` throwing on TLS 1.3
29+
- [fix] SSL write data loss on non-blocking partial flush
30+
- [fix] keep TLS 1.3 with `ciphers=` and a default timeout
31+
- [fix] `SSLSocket#cipher` returns `[name, version, bits, alg_bits]`
32+
- [fix] raise on `sysread`/`syswrite` before handshake
33+
- [fix] `session_reused?` raises before handshake
34+
- [fix] close connection on hostname-verification failure
35+
- [compat] emulate early `verify_hostname` during `SSLSocket#connect`
36+
- [compat] normalize IP address in SAN verify to match MRI
37+
- [compat] `undef` `SSLContext#dup`/`clone` and reject option writers
38+
- [compat] `set_params` must OR options (not overwrite them)
39+
- [fix] serialize concurrent SSL reads/writes to avoid buffer corruption
40+
- [fix] grow the application read buffer on TLS unwrap `BUFFER_OVERFLOW`
41+
- [compat] honor `verify_callback` on the `ca_file`/`ca_path` lookup path
42+
43+
### X.509 / certificate verification
44+
45+
- [compat] implement `nameConstraints` verification
46+
- [fix] properly encode `nameConstraints` extension
47+
- [compat] enforce dNSName name constraints against EE subject CN
48+
- [compat] enforce CRL issuing-distribution-point scope
49+
- [fix] align `cert_crl` critical-extension and `removeFromCRL` handling
50+
- [fix] proper path-length constraint on self-signed roots
51+
- [fix] make `V_FLAG_PARTIAL_CHAIN` verify correctly
52+
- [fix] canonicalize X.509 name before hashed-dir lookup
53+
- [fix] `StoreContext#getExtraData` IndexOutOfBoundsException
54+
- [fix] cert time checks when not-before/after are equal
55+
- [compat] `StoreContext#verify` raises on internal error
56+
- [compat] implement `Store#add_path` for cert lookup
57+
- [compat] `verify_result` reporting with `VERIFY_NONE` (#25)
58+
- [compat] set `V_ERR_HOSTNAME_MISMATCH` on hostname fail
59+
- [compat] expose missing `V_ERR`/`V_FLAG` constants to Ruby
60+
- [compat] keep X.509 extension order for certs
61+
- [fix] don't clobber shared (store) verify settings
62+
- [compat] drop `V_FLAG_CRL_CHECK_ALL` on `DEFAULT_CERT_STORE`
63+
- [fix] report a malformed `subjectAltName` as an invalid extension
64+
- [fix] avoid false revocation from `certificateIssuer` CRL entries
65+
- [fix] proper escaping in `X509::Name`
66+
- [fix] ASCII-only X.509 name canonicalization
67+
- [compat] align `X509::StoreContext` state exposure
68+
- [fix] `subjectAltName` with an `otherName` entry breaking hostname verification (#324)
69+
- [fix] format the `nameConstraints` extension value like OpenSSL does
70+
71+
### PKey / Cipher / ASN.1
72+
73+
- [feat] AES-CCM cipher mode support (#96)
74+
- [feat] implement `OpenSSL::PKey::EC::Point#invert!`
75+
- [compat] `PKey.generate_key`/`generate_parameters` (with params/String)
76+
- [compat] support HMAC key with the generic PKey API
77+
- [compat] implement `PKey::EC#check_key` validation
78+
- [compat] support `PKey::EC.new` with 4 args
79+
- [fix] RSA-PSS reject negative salt and align `sign_pss` default
80+
- [fix] handle mismatched PSS content/MGF1 digests via fallback
81+
- [fix] `Cipher#key=` rejects any length mismatch
82+
- [fix] reject over-length IV for AEAD ciphers
83+
- [compat] align `Cipher#iv=` and AEAD-only writers
84+
- [fix] manual block cipher (buffer/padding) edge cases under CBC/ECB
85+
- [compat] match MRI no-salt cipher derivation
86+
- [compat] derive cipher IV length from the real block size
87+
- [fix] PBKDF2 raw password bytes and reject `< 0` iterations
88+
- [compat] OpenSSL default PBKDF2 iterations for key export
89+
- [fix] bound ASN.1 nesting depth and fix truncated-input error class
90+
- [fix] add missing ASN.1 object-ids for SHA-2
91+
- [compat] switch `BN.pseudo_rand` to secure random
92+
- [compat] allow CRT parameter setters on RSA
93+
- [fix] Cipher authentication-tag reset behavior
94+
- [fix] break `OpenSSL::Config` `.include` reference cycles
95+
96+
### PKCS7 / PKCS12 / OCSP
97+
98+
- [feat] implement missing PKCS7 wrapper methods
99+
- [feat] implement `X509::Request#to_text`
100+
- [fix] protect PKCS12 key entries with password
101+
- [fix] wrap mode for PKCS7 key transport
102+
- [compat] handle `File` object in `PKCS7.obj2bio`
103+
- [fix] preserve OCSP `NOCERTS` with explicit flags
104+
1105
## 0.16.2
2106

3107
- [fix] PKey.generate_key accepts key as parameters (#366)

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,14 @@ Please report it on the [bug tracker][2], ideally with a test case.
123123

124124
## FIPS
125125

126-
A FIPS 140-3 build of jruby-openssl (separate gem), is available on request.
126+
A FIPS 140-3 build of jruby-openssl is available as a separate gem.
127127
It's the very same library but uses the NIST-validated BC FIPS module (BC-FJA) instead of
128-
the regular Bouncy Castle, for deployments that need a validated cryptographic module.
129-
Ships separately (under GPL 3.0) - reach out to `jossl+fips@kares.org` if you're interested.
128+
regular Bouncy Castle, for deployments that need a validated cryptographic module.
129+
Ships separately under GPL 3.0, with commercial licensing available - see the
130+
[FIPS variant][6] wiki page for details.
130131

131-
NOTE: unlike C OpenSSL, `OpenSSL.fips_mode` cannot be changed at runtime, the flag reports which
132-
gem variant is activated (`true` under the FIPS gem, `false` otherwise).
132+
NOTE: unlike C OpenSSL, `OpenSSL.fips_mode` cannot be changed at runtime, the flag reports
133+
which gem variant is activated (`true` under the FIPS gem, `false` otherwise).
133134

134135
## License
135136

@@ -141,3 +142,4 @@ gem variant is activated (`true` under the FIPS gem, `false` otherwise).
141142
[3]: https://github.com/jruby/jruby-openssl/tree/master/integration
142143
[4]: https://repo1.maven.org/maven2/org/jruby/
143144
[5]: https://www.jruby.org/nightly
145+
[6]: https://github.com/jruby/jruby-openssl/wiki/FIPS

lib/jopenssl/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22
module JOpenSSL
3-
VERSION = '0.19.0.dev'
3+
VERSION = '0.19.0'
44
BOUNCY_CASTLE_VERSION = '1.85'
55
end

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ DO NOT MODIFY - GENERATED CODE
1111
<modelVersion>4.0.0</modelVersion>
1212
<groupId>org.jruby.openssl</groupId>
1313
<artifactId>jruby-openssl</artifactId>
14-
<version>0.19.0.dev-SNAPSHOT</version>
14+
<version>0.19.0</version>
1515
<packaging>gem</packaging>
1616
<name>SSL/TLS and general-purpose cryptography for JRuby</name>
1717
<description>Ruby OpenSSL compatibility for JRuby, based on Java JCA/JCE and Bouncy Castle libraries (does not depend on native OpenSSL).</description>

0 commit comments

Comments
 (0)