Closed
Description
OpenSSL 3.0 is scheduled to be released later this year. It is a major version bump from 1.1 and contains architecture changes that affect Ruby/OpenSSL.
From https://www.openssl.org/policies/releasestrat.html:
The following alpha and beta releases for OpenSSL 3.0 are currently scheduled. Note that these dates are subject to change and alpha or beta releases may be inserted or removed as required:
alpha1, 2020-03-31: Basic functionality plus basic FIPS module alpha2, 2020-04-21: Complete external provider support (serialization, support for new algs, support for providers which only include operations in a class) alpha3, 2020-05-21: Aiming to test the API completeness before beta1 freezes it) beta1, 2020-06-02: Code complete (API stable, feature freeze) betaN: Other beta releases TBD Final: 2020 early Q4
The design is outlined in the web page:
https://www.openssl.org/docs/OpenSSL300Design.html
Unlike OpenSSL 1.0 -> 1.1, not so many changes are required to make it just compile, but a lot of deprecation warnings are generated while compiling and many test cases are currently failing when compiled against OpenSSL's master.
- OpenSSL::HMAC needs a rewrite with the EVP API as it currently uses the low-level HMAC_*() functions.
- Subclasses of OpenSSL::PKey, such as RSA or DSA, provide access to those low-level functions. The following methods need rewrite:
- PKey::*#generate (and an overload of .new)
- This can probably be implemented in pure-Ruby with PKey.generate_parameters and PKey.generate_key.
- Low-level sign/verify methods that take prehashed values.
- RSA#{private,public}_{encrypt,decrypt}
- DSA#syssign and #sysverify
- EC#dsa_sign_asn1 and #dsa_verify_asn1
- PKey::*#generate (and an overload of .new)
- The ENGINE API is deprecated in favor of "Provider"s.
Metadata
Metadata
Assignees
Labels
No labels