Opened 3 weeks ago
Closed 3 weeks ago
#6061 closed enhancement (fixed)
openssl-4.1.0
| Reported by: | Bruce Dubbs | Owned by: | lfs-book |
|---|---|---|---|
| Priority: | normal | Milestone: | 13.2 |
| Component: | Book | Version: | git |
| Severity: | normal | Keywords: | |
| Cc: |
Description
New minor version.
Note:
See TracTickets
for help on using tickets.

Changes between 4.0 and 4.1.0 [23 Oct 2026]
fips=yesexplicitly exposes thefips-indicatoras a gettable context parameter and returns 1 for an approved operation. The absence of an indicator is no longer interpreted as approval. Algorithms advertised withfips=no, including X448MLKEM1024, remain unapproved and return 0 when they expose the indicator.SSL_R_INCONSISTENT_EARLY_DATA_ALPN.ossl-guide-dtlsv13(7)manual page for details.SSL_OP_GREASEis set, the TLS client injects reserved GREASE values into cipher suites, supported versions, supported groups, signature algorithms, key share, and extensions in theClientHelloto prevent ecosystem ossification. Added-greaseoption toopenssl s_clientto enable this.SSL_new_listener()can now create a DTLS listener that demultiplexes incoming datagrams into per-peer connections accepted withSSL_accept_connection(). The listener performs address validation (HelloVerifyRequestfor DTLS 1.0/1.2,HelloRetryRequestcookie for DTLS 1.3) by default; passSSL_LISTENER_FLAG_NO_VALIDATEto disable it. Refer to theSSL_new_listener(3)manual page for details.SSL_get_value_uint()/SSL_set_value_uint():SSL_VALUE_DTLS_LISTENER_MAX_PENDING_CONNS,SSL_VALUE_DTLS_LISTENER_PENDING_TIMEOUT, andSSL_VALUE_DTLS_LISTENER_MAX_DGRAM_SIZE. Refer to theSSL_get_value_uint(3)manual page for details.SSL_get_value_uint()/SSL_set_value_uint()functions:max_udp_payload_size,initial_max_data,initial_max_stream_data_bidi_local,initial_max_stream_data_uni,ack_delay_exponent, andmax_ack_delay.X509_V_ERR_DUPLICATE_EXTENSION, with a descriptive message for certificates containing duplicate X.509 extensions, which are explicitly prohibited by [RFC 5280].EVP_SKEY).CMS_VERIFY_PARTIALflag toCMS_verify(),-verify_partialoption toopenssl cms -verifyoperation, andCMS_SignerInfo_get_verification_result()andCMS_SignerInfo_get0_signer_cert()functions.OSSL_CMP_OPT_NONMATCHED_ERROR_NONCESoption forOSSL_CMP_CTXand a corresponding-nonmatched_error_noncesoption for theopenssl cmpcommand.-disabledoption for theopenssl listcommand to display disabled features, protocols, and algorithms, in relevant sections.-noption for theopenssl randcommand to suppress the trailing newline in hexadecimal output mode.-testmodeoption for theopenssl s_timecommand.openssl pkeyutlcommand on platforms that support it (Unix-like). Theopenssl dgstcommand uses the same approach for one-shot sign/verify when the input is from a file, removing the previous 16 MB limit for file-based input. This improves performance and supports large files without doubling memory use. Other platforms andstdininput continue to use the existing buffer-based implementation.seed_strictoption to therandomconfiguration section, which makes the configured random seed source strictly enforced when a provider (such as the FIPS provider) requests entropy or a nonce.EVP_KDF-IKEV2KDF) toEVP_KDF.CRYPTO_atomic_load_ptr,CRYPTO_atomic_store_ptr, andCRYPTO_atomic_cmp_exch_ptrfunctions tolibcrypto, that implement the respective atomic operations with a locking-based fallback on platforms that do not support them.EVP_EC_affine2oct()function, that converts the affine coordinates of an EC point to an octet string conforming to [Section 2.3.4 of SECG SEC 1][SECG SEC 1 Section 2.3.4] ("Elliptic Curve Cryptography") standard.EVP_KDF_CTX_get0_kdf()andEVP_KDF_CTX_get1_kdf()functions as a replacement for the now deprecatedEVP_KDF_CTX_kdf().ASN1_STRING_new_not_owned()function tolibcrypto. It provides the ability to construct anASN1_STRINGwith data for which ownership is not taken by the createdASN1_STRINGobject.ASN1_STRING_set1_data(),ASN1_STRING_set1_string(), andASN1_STRING_get_length()API functions, and deprecatedASN1_STRING_set()andASN1_STRING_length().CMS_add_standard_smimecap_ex()API function, which populates anSMIMECapabilitieslist usingEVP_CIPHER_fetch()andEVP_MD_fetch()so that only algorithms available in the active providers are advertised.PKCS7_sign_add_signer()was updated in the same way, so that legacy ciphers, such as RC2 and DES, are no longer included inSMIMECapabilitiesby default when only the default provider is loaded.CTLOG_STORE_add0_log()function to add individual CT logs to aCTLOG_STORE.FIPS_mode()macro as a convenience alias toEVP_default_properties_is_fips_enabled(NULL), which is a shorthand to check whether thefips=yesproperty is currently enabled in the default library context.OSSL_PARAMname parsing so that automatically generated parsers are used instead ofOSSL_PARAM_locate()calls. This should ensure that the list of acceptable parameters better matches those which are actually processed. It should also provide a small performance improvement, because repeated iteration over passed parameter arrays is avoided.SubjectPublicKeyInfoblobs whoseAlgorithmIdentifierusesid-RSAES-OAEP(NID_rsaesOaep, 1.2.840.113549.1.1.7) with a plainRSAPublicKeybody are now decoded as RSA keys. The OAEPAlgorithmIdentifierparameters are not interpreted.SSL_OP_NO_TICKETand also turned off the session cache withSSL_SESS_CACHE_OFF. Both conditions together indicate a clear intent to suppress resumption, so sendingNewSessionTicketmessages would be wasteful and misleading. TLS 1.3 client that does not send thepsk_key_exchange_modesextension, or that sends it together with [RFC 9149] parameters such asnew_session_count = 0orresumption_count = 0, is effectively signaling no interest in session tickets and session resumption.ChangeCipherSpec(CCS) records at the expected state.VC-WIN32-MSVC2013andVC-WIN64A-MSVC2013build targets to provide internal functions for bridging the gaps in C99 standard support that are present in MSVC 2013.mdocformat for the manual pages output, which can be selected via--manpage-format=mdocconfiguration option. It requires presence ofpod2mdocutility in order for it to work.enable-unit-testsoption. This works only on platforms with ld--wrapsupport (Linux, BSD).SSL_listen_ex()to correctly adopt a QUIC connection and to preserve queued connections on allocation failure. Invalid arguments, including non-QUIC SSL objects, and internal failures now return-1, reserving0for "no connection available".SSL_get0_domain()now reports that domain for connections and streams in the hierarchy.basicConstraints,basicAttConstraints, andpolicyConstraintsX.509v3 extension configurations, instead of silently using the last value.dsa_with_SHA384anddsa_with_SHA512in the signature-algorithm cross-reference table.CMS_SignerInfo_verify()to no longer accept signature algorithm identifiers as validdigestAlgorithms, in violation of [RFC 5652].opensslcommand fromstdinon Windows.issuerAltNameof the certificate is now accepted, as required by the default distribution point rule at the end of [RFC 5280 Section 6.3.3], instead of being rejected withX509_V_ERR_DIFFERENT_CRL_SCOPE.SSL_OP_TLSEXT_PADDINGwas set, to work around aClientHellolength bug in F5 middleboxes; the fix shipped long ago and the affected hardware is long out of support, so nothing should still be running the problematic version.SSL_OP_TLSEXT_PADDINGis now a no-op retained for compatibility, and is no longer included inSSL_OP_ALL.tsgetutility to useNet::Curl::Easy(from theNet-CurlCPAN distribution) instead of the abandonedWWW::Curl::Easy. Users who rely ontsgetshould installNet::Curl::Easybefore upgrading.enable-unit-testconfigure option and theSSL_test_functions()function. Both will be removed in OpenSSL 5.0.BIO_snprintf()andBIO_vsnprintf().snprintf(), being part of C99 standard, that is the baseline for OpenSSL since version 3.6, is now considered universally available; moreover, the fact thatBIO_*()functions return -1 on truncation, rather than the would-have-been length, makes their usage error-prone. Usesnprintf()andvsnprintf()directly.UTF8_putc()andUTF8_getc(). No public replacement is planned.EVP_CIPHER_CTX_get_num()andEVP_CIPHER_CTX_set_num()functions. Refer toossl-migration-guide(7)for more info.ASN1_BIT_STRING_name_print(),ASN1_BIT_STRING_num_asc(), andASN1_BIT_STRING_set_asc()functions. Refer to the manual pages for more information.ASN1_BIT_STRING_set()function in favour ofASN1_BIT_STRING_set1().CMS_stream()andPKCS7_stream()API functions. These are internal plumbing that was unintentionally exposed as the public API, and they no longer return a streaming boundary. UseBIO_new_CMS()orBIO_new_PKCS7()to stream CMS and PKCS#7 content.X509_check_host(),X509_check_email(),X509_check_ip(), andX509_check_ip_asc()functions. Applications should migrate to setting a reference identifier to check usingX509_VERIFY_PARAM_set1_host(),X509_VERIFY_PARAM_set1_email(), orX509_VERIFY_PARAM_set1_ip_asc(), and usingX509_verify_cert().VC-WIN64I) and Windows CE (VC-CE) targets from Configurations.no-ecdsaandno-ecdhoptions fromConfigure, as these options did not really disable the implementations. Useno-ecto disable the elliptic curve support.