NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #314 most downloaded on crates.io
OpenSSL bindings
Last release 3 months ago
12 Jun 2026
Release timing varies
gaps range from 2 weeks to 5 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
12 years old
174 releases · first in 2014
Deprecate Asn1StringRef::as_utf8 in favor of a NUL-safe to_string by @alex in #2652
Full Changelog: openssl-v0.10.80...openssl-v0.10.81
One column per quarter.
SslContextRef::verify_mode and SslRef::verify_mode no longer panic when the verify mode contains bits not modeled by SslVerifyMode.SslVerifyMode::CLIENT_ONCE and SslVerifyMode::POST_HANDSHAKE.X509CrlBuilder and X509RevokedBuilder, for building and signing CRLs, along with the CrlNumber extension builder.Nid::BRAINPOOL_P224R1 and Nid::BRAINPOOL_P224T1.Asn1StringRef::to_string, which converts the string to UTF-8 without truncating at interior NUL bytes.Asn1StringRef::as_utf8, which truncates at the first interior NUL byte, in favor of Asn1StringRef::to_string.Prefer Homebrew openssl@4 and stop looking for openssl@1.1 by @alex in #2633
Full Changelog: openssl-v0.10.79...openssl-v0.10.80
CipherCtxRef::cipher_update_inplace when used with AES key-wrap-with-padding ciphers.Bump actions/cache from 5.0.4 to 5.0.5 by @dependabot [bot] in #2610
use libc::*; with targeted imports in openssl-sys by @alex in #2618Full Changelog: openssl-v0.10.78...openssl-v0.10.79
once_cell dependency in favor of std::sync::{LazyLock, OnceLock}.EcPointRef::mul, EcPointRef::mul_generator, and EcPointRef::invert in favor of mul2, mul_generator2, and invert2, which take &mut BigNumContextRef. The deprecated methods accepted a shared reference despite mutating the BN_CTX, which was unsound under Send + Sync.EcGroupRef::generator_opt, which returns Option<&EcPointRef>.PKeyRef::seed_into, which writes the algorithm-defined seed of an ML-DSA or ML-KEM private key into a caller-supplied buffer. The inverse of PKey::private_key_from_seed.PKey::private_key_from_seed, which constructs ML-DSA and ML-KEM private keypairs from a seed OSSL_PARAM via EVP_PKEY_fromdata. Requires OpenSSL 3.5 or newer at runtime.PKeyRef::is_a and the KeyType algorithm-name newtype, for identifying provider-supplied keys (such as ML-DSA) where EVP_PKEY_id returns -1.PKey::public_key_from_raw_bytes_ex and PKey::private_key_from_raw_bytes_ex, which take a KeyType and accept an optional library context and property query string. Required for provider-supplied algorithms with no associated Id, such as ML-DSA.PkeyCtxRef::set_context_string, which binds a context string to an ML-DSA signing or verification operation. Requires OpenSSL 3.5 or newer.EcPointRef::mul2, EcPointRef::mul_generator2, and EcPointRef::invert2, which take &mut BigNumContextRef.EcGroupRef::generator no longer constructs a reference from a NULL pointer when the group has no generator set (e.g. a group built with EcGroup::from_components before set_generator is called), which was immediate undefined behavior. It now panics in that case and has been deprecated in favor of EcGroupRef::generator_opt.X509Ref::ocsp_responders now validates each accessLocation as UTF-8 and returns an ErrorStack if any entry is not, rather than constructing a &str containing invalid UTF-8 (language-level UB triggerable by a malicious certificate).SSL_CTX had been swapped.CipherCtxRef::cipher_update and cipher_update_vec when used with AES key-wrap-with-padding ciphers, which emit up to input.len() + 15 bytes during the update call rather than the previously assumed input.len() + block_size.Fix Suite B flag assignments in verify.rs by @alex in #2592
Full Changelog: openssl-v0.10.77...openssl-v0.10.78
MdCtxRef::digest_final now returns an error when the output buffer is shorter than the digest size.PkeyCtxRef::derive now checks the output buffer length on OpenSSL 1.1.x and LibreSSL, where some key types (X25519, X448, HKDF-extract) ignore the caller-supplied length.Crypter::new now panics, as documented, when an IV is required by the cipher but not provided (previously it silently used an all-zero IV).X509VerifyParam.OPENSSL_malloc in PkeyCtxRef::set_rsa_oaep_label.CI: Hash-pin all action usage, avoid credential persistence in actions/checkout by @woodruffw in #2587
Full Changelog: openssl-v0.10.76...openssl-v0.10.77
MdCtxRef::digest_sign, MdCtxRef::digest_sign_to_vec, MdCtxRef::digest_verify, and MdCtxRef::reset on BoringSSL, LibreSSL, and AWS-LC.Added brainpool curve NID constants.
SubjectAlternativeName::dir_name2 for constructing directoryName SAN entries.UpperHex implementation for BigNum and BigNumRef.add_utf8_string and add_int to OsslParamBuilder.Debug implementation for EcGroup, EcGroupRef, EcdsaSig and EcdsaSigRef.Debug implementation for Nid.PKey::from_raw.from_str_x509() for LibreSSL >= 3.6.0.is_ccm, is_ocb) to use NID instead of unreliable pointer comparison. Added NID constants for AES_*_OCB.BIO_METHOD path for AWS-LC to use BoringSSL codepath.Deprecated OcspStatus::next_update field in favor of the next_update() method.
set_rsa_oaep_label on AWS-LC/BoringSSL.Asn1GeneralizedTime::from_str.OcspStatus::next_update method.find_status handling of optional next_update field. If an OCSP response does not have a nextUpdate, OcspStatus::next_update will store a sentinel value. Use OcspStatus::next_update() instead.OcspStatus::next_update field in favor of the next_update() method.Added parameter generation support (PkeyCtx::paramgen and PkeyCtx::paramgen_init).
PkeyCtx::paramgen and PkeyCtx::paramgen_init).PkeyCtx.Cipher::get_protocol_id.EcPointRef::set_affine_coordinates.EcGroup::order_bits on BoringSSL, LibreSSL, and AWS-LC.X509::append_entry on BoringSSL and AWS-LC.Fixed building on the latest BoringSSL.
Fixed use-after-free in Md::fetch and Cipher::fetch when properties is Some(...). In practice this use-after-free most likely resulted in OpenSSL trea
Md::fetch and Cipher::fetch when properties is Some(...). In practice this use-after-free most likely resulted in OpenSSL treating the properties as b"".Added Cipher::rc2_cbc and Cipher::rc2_40_cbc.
Cipher::rc2_cbc and Cipher::rc2_40_cbc.Fixed improper lifetime constraints in ssl::select_next_proto that allowed a use after free.
ssl::select_next_proto that allowed a use after free.SslMethod::dtls_client and SslMethod::dtls_server.Fixed the version constraint on openssl-macros.
openssl-macros.SslContextBuilder::load_verify_locations.Hasher::squeeze_xof.SslContextBuilder::set_alpn_select_callback support for boringssl.Fixed building on Rust 1.63.0 (our MSRV) with OpenSSL 3.2 or newer.
Added support for LibreSSL 4.0.x.
argon2idMdCtxRef::digest_verify_final could leave an error on the stack.RsaRef::check_key could leave an error on the stack.openssl is now a 2021 edition crateCargo.tomlFixed undefined behavior in MemBio::get_buf when the resulting buffer had a length of 0.
MemBio::get_buf when the resulting buffer had a length of 0.Ensure we are initialized in MessageDigest::from_nid, Md::from_nid, Md::fetch
MessageDigest::from_nid, Md::from_nid, Md::fetchSslContextBuilder::set_keylog_callback on BoringSSLAdded PkeyCtxRef::{nonce_type, set_nonce_type}.
PkeyCtxRef::{nonce_type, set_nonce_type}.X509Ref::alias.Added Pkcs7Ref::{type_,signed}.
Pkcs7Ref::{type_,signed}.Pkcs7SignedRef::certificates.Cipher::{aes_256_xts,des_ede3_ecb,des_ede3_cfb8,des_ede3_ofb,camellia128_ofb,camellia192_ofb,camellia256_ofb,cast5_ofb,idea_ofb}PKey::from_dhxPKey::{public_key_from_pem_passphrase,public_key_from_pem_callback}.Cipher::aes_128_ofb is now available on BoringSSLNid::{BRAINPOOL_P256R1,BRAINPOOL_P320R1,BRAINPOOL_P384R1,BRAINPOOL_P512R1} are now available on LibreSSL.Fixed building on the latest version of BoringSSL
Nid::BRAINPOOL_P320R1rand_priv_bytesSslStream now uses SSL_read_ex, SSL_write_ex, and SSL_peek_ex when available
SslStream now uses SSL_read_ex, SSL_write_ex, and SSL_peek_ex when availableSslStream::{read_uninit, ssl_read_uninit}.Deprecated X509StoreRef::objects. It is unsound. All callers should migrate to using X509StoreRef::all_certificates instead.
X509StoreRef::objects. It is unsound. All callers should migrate to using X509StoreRef::all_certificates instead.SslContextBuilder::set_ex_data and SslRef::set_ex_data multiple times with the same index.X509StoreRef::all_certificatescipher::Cipher::{camellia128_cbc,camellia192_cbc,camellia256_cbc,cast5_cbc,idea_cbc}symm::Cipher::{des_ede3_ecb,des_ede3_cfb8,des_ede3_ofb,camellia_128_ecb,camellia_128_ofb,camellia_128_cfb128,camellia_192_ecb,camellia_192_ofb,camellia_192_cfb128,camellia_256_ecb,camellia_256_ofb,camellia_256_cfb128,cast5_ecb,cast5_ofb,cast5_cfb64,idea_ecb,idea_ofb,idea_cfb64}Crypter::update_uncheckedSslRef::{peer_tmp_key,tmp_key}cipher::Cipher::chacha20 is now available on LibreSSLsymm::Cipher::chacha20 is now available on LibreSSLFixed the availability of Id::RSA_PSS on OpenSSL
Nid::CHACHA20_POLY1305Id::RSA_PSS on OpenSSLAdded Id::{RSA_PSS,DHX} constants
Id::{RSA_PSS,DHX} constantsSslContextBuilder::set_security_levelSslContextRef::security_levelSslRef::set_security_level, SslRef::security_levelCipher::{camellia_128_cbc, camellia_192_cbc, camellia_256_cbc, cast5_cbc, idea_cbc}X509CrlRef::extensionX509PurposeId::CODE_SIGNPkey HKDF functionality now works on LibreSSLBigNum::mod_sqrt is now available on all OpenSSLsMessageDigest::sha3* are now available on LibreSSLAdded X509VerifyParam::set_email
X509VerifyParam::set_emailCipher::chacha20_poly1305 is now available on LibreSSLCipherCtx::copybitflags dependency to the 2.x seriesNothing published for this version
Fixed compilation with the latest version of BoringSSL.
OPENSSL_NO_OCB.X509VerifyParamRef::set_host when called with an empty string.Deriver::set_peer_ex.EcGroupRef::asn1_flag.EcPointRef::affine_coordinates on BoringSSL and LibreSSL.Nid::SM2 and Id::SM2PKey::private_key_to_pkcs8_passphrase no longer panics if a passphrase contains a NUL byte.
PKey::private_key_to_pkcs8_passphrase no longer panics if a passphrase contains a NUL byte.Added Dsa::from_pqg, Dsa::generate_key, and Dsa::generate_params.
Dsa::from_pqg, Dsa::generate_key, and Dsa::generate_params.SslRef::bytes_to_cipher_list.SubjectAlternativeName::other_name2Added X509Ref::subject_key_id, X509Ref::authority_key_id, X509Ref::authority_issuer, and X509Ref::authority_serial.
DhRef::check_key.Id::POLY1305.X509Ref::subject_key_id, X509Ref::authority_key_id, X509Ref::authority_issuer, and X509Ref::authority_serial.Deprecated X509Extension::new and X509Extension::new_nid in favor of X509Extension::new_from_der and the extensions module.
X509RevokedRef::issuer_name and X509RevokedRef::reason_code.Dh::set_key and Dh::set_public_keyAsn1OctetString and Asn1OctetStringRef1X509Extension::new_from_derX509Extension::new and X509Extension::new_nid in favor of X509Extension::new_from_der and the extensions module.X509Extension::add_alias, it is not required with new_from_der or the extensions module.Added CipherCtxRef::cipher_update_inplace.
CipherCtxRef::cipher_update_inplace.SslConnector no longer sets the SNI extension when connecting to an IP address.
SslConnector no longer sets the SNI extension when connecting to an IP address.Ord, PartialOrd, Eq, and PartialEq for Asn1Integer and Asn1IntegerRef.X509Ref::crl_distribution_points, and DistPoint.Fixed injection vulnerabilities where OpenSSL's configuration mini-language could be used via x509::SubjectAlternativeName and x509::ExtendedKeyUsage.…
x509::extension::SubjectAlternativeName and x509::extension::ExtendedKeyUsage. The mini-language can read arbitrary files amongst other things.
SubjectAlternativeName::dir_name and SubjectAlternativeName::other_name are deprecated and their implementations always panic!. If you have a use case for these, please file an issue.x509::X509Extension::new and x509::X509Extension::new_nid. Note that these methods still accept OpenSSL's configuration mini-language, and therefore should not be used with untrusted data.x509::X509Name that are created with x509::X509NameBuilder and then used concurrently.Added support for X25519 and Ed25519 on LibreSSL and BoringSSL.
Error::library_code and Error::reason_code.Deprecated PKcs12Ref::parse in favor of Pkcs12Ref::parse2.
no-cast.GeneralName.PKcs12Ref::parse in favor of Pkcs12Ref::parse2.ParsedPkcs12 in favor of ParsedPkcs12_2.Pkcs12Builder::build in favor of Pkcs12Builder::build2.X509VerifyParamRef::set_auth_level, X509VerifyParamRef::auth_level, and X509VerifyParamRef::set_purpose.X509PurposeId and X509Purpose.X509NameBuilder::append_entry.PKeyRef::private_key_to_pkcs8.X509LookupRef::load_crl_file.Pkcs12Builder::name, Pkcs12Builder::pkey, and Pkcs12Builder::cert.SslRef::set_method, SslRef::set_private_key_file, SslRef::set_private_key, SslRef::set_certificate, SslRef::set_certificate_chain_file, SslRef::add_client_ca, SslRef::set_client_ca_list, SslRef::set_min_proto_version, SslREf::set_max_proto_version, SslRef::set_ciphersuites, SslRef::set_cipher_list, SslRef::set_verify_cert_store.X509NameRef::to_owned.SslContextBuilder::set_num_tickets, SslContextRef::num_tickets, SslRef::set_num_tickets, and SslRef::num_tickets.CmsContentInfo::verify.Added NO_DEPRECATED_3_0 cfg checks for more APIs.
CipherCtxRef::minimal_output_size method, which did not work properly.NO_DEPRECATED_3_0 cfg checks for more APIs.SslRef::add_chain_cert.PKeyRef::security_bits.Provider::set_default_search_path.CipherCtxRef::cipher_final_unchecked.Added CipherCtxRef::num, CipherCtxRef::minimal_output_size, and CipherCtxRef::cipher_update_unchecked.
CipherCtxRef::num, CipherCtxRef::minimal_output_size, and CipherCtxRef::cipher_update_unchecked.CipherCtxRef::cipher_update.X509Lookup::file and X509LookupRef::load_cert_file.Added Nid::BRAINPOOL_P256R1, Nid::BRAINPOOL_P384R1, Nid::BRAINPOOL_P512R1.
Nid::BRAINPOOL_P256R1, Nid::BRAINPOOL_P384R1, Nid::BRAINPOOL_P512R1.BigNumRef::copy_from_slice.Cipher constructors for Camellia, CAST5, and IDEA ciphers.DsaSig.X509StoreBuilderRef::set_param.X509VerifyParam::new, X509VerifyParamRef::set_time, and X509VerifyParamRef::set_depth.Added SslRef::psk_identity_hint and SslRef::psk_identity.
SslRef::psk_identity_hint and SslRef::psk_identity.Nid.SslOptions::PRIORITIZE_CHACHA.X509ReqRef::to_text.MdCtxRef::size.X509NameRef::try_cmp.MdCtxRef::reset.MdCtxRef::digest_verify_init to support PKeys with only public components.Fixed a use-after-free in Error::function and Error::file with OpenSSL 3.x.
Error::function and Error::file with OpenSSL 3.x.MessageDigest::block_size and MdRef::block_size.Ord and Eq for X509 and X509Ref.X509Extension::add_alias.EcGroup::from_components EcGropuRef::set_generator, and EcPointRef::set_affine_coordinates_gfp.Fixed the openssl-sys dependency version.
Deprecated SslContextBuilder::set_tmp_ecdh_callback and SslRef::set_tmp_ecdh_callback.
SslContextBuilder::set_tmp_ecdh_callback and SslRef::set_tmp_ecdh_callback.SslRef::extms_support.Nid::create.CipherCtx, which exposes a more direct interface to EVP_CIPHER_CTX.PkeyCtx, which exposes a more direct interface to EVP_PKEY_CTX.MdCtx, which exposes a more direct interface to EVP_MD_CTX.Pkcs12Builder::mac_md.Provider.X509Ref::issuer_name_hash.Decrypter::set_rsa_oaep_label.X509Ref::to_text.### Added * Added Pkey::ec_gen.
Pkey::ec_gen.Fixed linkage against OpenSSL distributions built with no-chacha.
no-chacha.BigNumRef::to_vec_padded.X509Name::from_der and X509NameRef::to_der.BigNum::new_secure, BigNumReef::set_const_time, BigNumref::is_const_time, and BigNumRef::is_secure.Added PKeyRef::{raw_public_key, raw_private_key, private_key_to_pkcs8_passphrase} and PKey::{private_key_from_raw_bytes, public_key_from_raw_bytes}.
Asn1Object::as_slice.PKeyRef::{raw_public_key, raw_private_key, private_key_to_pkcs8_passphrase} and
PKey::{private_key_from_raw_bytes, public_key_from_raw_bytes}.Cipher::{seed_cbc, seed_cfb128, seed_ecb, seed_ofb}.Fixed a memory leak in Deriver.
Deriver.SslStream::peek.Added Dh::set_private_key and DhRef::private_key.
Dh::set_private_key and DhRef::private_key.EcPointRef::affine_coordinates.TryFrom implementations to convert between PKey and specific key types.X509StoreBuilderRef::set_flags.Dh::generate_params now uses DH_generate_params_ex rather than the deprecated DH_generated_params function.
Dh::generate_params now uses DH_generate_params_ex rather than the deprecated DH_generated_params function.Asn1Type.CmsContentInfoRef::decrypt_without_cert_check.EcPointRef::{is_infinity, is_on_curve}.Encrypter::set_rsa_oaep_label.MessageDigest::sm3.Pkcs7Ref::signers.Cipher::nid.X509Ref::authority_info and AccessDescription::{method, location}.X509NameBuilder::{append_entry_by_text_with_type, append_entry_by_nid_with_type}.Deprecated SslStream::from_raw_parts in favor of Ssl::from_ptr and SslStream::new.
Ssl::new to take a &SslContextRef rather than &SslContext.encrypt module to support asymmetric encryption and decryption with PKeys.MessageDigest::from_name.ConnectConfiguration::into_ssl.SslStreams directly from an Ssl and transport stream
without performing any part of the handshake with SslStream::new.SslStream::{read_early_data, write_early_data, connect, accept, do_handshake, stateless}.ToOwned for SslContextRef.SslRef::{set_connect_state, set_accept_state}.SslStream::from_raw_parts in favor of Ssl::from_ptr and SslStream::new.SslStreamBuilder in favor of methods on Ssl and SslStream.Added Dh::from_pgq, DhRef::prime_p, DhRef::prime_q, DhRef::generator, DhRef::generate_params, DhRef::generate_key, DhRef::public_key, and DhRef::compu
Asn1Object::from_str.Dh::from_pgq, DhRef::prime_p, DhRef::prime_q, DhRef::generator, DhRef::generate_params,
DhRef::generate_key, DhRef::public_key, and DhRef::compute_key.Pkcs7::from_der and Pkcs7Ref::to_der.Id::X25519, Id::X448, PKey::generate_x25519, and PKey::generate_x448.SrtpProfileId::SRTP_AEAD_AES_128_GCM and SrtpProfileId::SRTP_AEAD_AES_256_GCM.SslContextBuilder::verify_param and SslContextBuilder::verify_param_mut.X509Ref::subject_name_hash and X509Ref::version.X509StoreBuilderRef::add_lookup, and the X509Lookup type.X509VerifyFlags, X509VerifyParamRef::set_flags, X509VerifyParamRef::clear_flags
X509VerifyParamRef::get_flags.Deprecated SslStreamBuilder::set_dtls_mtu_size in favor of SslRef::set_mtu.
DsaRef::private_key_to_pem can no longer be called without a private key.Debug implementations of many types.is_empty implementations for Asn1StringRef and Asn1BitStringRef.EcPointRef::{to_pem, to_dir} and EcKeyRef::{public_key_from_pem, public_key_from_der}.Default implementations for many types.Debug implementations for many types.SslStream::from_raw_parts.SslRef::set_mtu.Cipher::{aes_128_ocb, aes_192_ocb, aes_256_ocb}.SslStreamBuilder::set_dtls_mtu_size in favor of SslRef::set_mtu.Fixed a memory leak in X509Builder::append_extension.
X509Builder::append_extension.SslConnector::into_context and SslConnector::context.SslAcceptor::into_context and SslAcceptor::context.SslMethod::tls_client and SslMethod::tls_server.SslContextBuilder::set_cert_store.SslContextRef::verify_mode and SslRef::verify_mode.SslRef::is_init_finished.X509Object.X509StoreRef::objects.Fixed the mutability of Signer::sign_oneshot and Verifier::verify_oneshot. This is unfortunately a breaking change, but a necessary soundness fix.
Signer::sign_oneshot and Verifier::verify_oneshot. This is unfortunately a breaking
change, but a necessary soundness fix.Added PKey::private_key_from_pkcs8.
MessageDigest::null.PKey::private_key_from_pkcs8.SslOptions::NO_RENEGOTIATION.SslStreamBuilder::set_dtls_mtu_size.Fixed improper handling of the IV buffer in envelope::{Seal, Unseal}.
envelope::{Seal, Unseal}.Asn1TimeRef::{diff, compare}.Asn1Time::from_unix.PartialEq and PartialOrd implementations for Asn1Time and Asn1TimeRef.base64::{encode_block, decode_block}.EcGroupRef::order_bits.Clone implementations for Sha1, Sha224, Sha256, Sha384, and Sha512.SslContextBuilder::{set_sigalgs_list, set_groups_list}.Fixed a memory leak in EcdsaSig::from_private_components when using OpenSSL 1.0.x.
EcdsaSig::from_private_components when using OpenSSL 1.0.x.ToOwned for PKeyRef and Clone for PKey.Worked around an OpenSSL 1.0.x bug triggered by code calling SSL_set_app_data.
SSL_set_app_data.aes::{wrap_key, unwrap_key}.CmsContentInfoRef::to_pem and CmsContentInfo::from_pem.DsaRef::private_key_to_pem.EcGroupRef::{cofactor, generator}.EcPointRef::to_owned.Debug implementation for EcKey.SslAcceptor::{mozilla_intermediate_v5, mozilla_modern_v5}.Cipher::{aes_128_ofb, aes_192_ecb, aes_192_cbc, aes_192_ctr, aes_192_cfb1, aes_192_cfb128, aes_192_cfb8, aes_192_gcm, aes_192_ccm, aes_192_ofb, aes_256_ofb}.Fixed session callbacks when an Ssl's context is replaced.
Ssl's context is replaced.SslContextBuilder::add_client_ca.Added support for the LibreSSL 2.9.x series.
Your coding agent can read these notes before it upgrades. Set up the MCP server →