Rustls is a modern TLS library written in Rust.
Rustls is used in production at many organizations and projects. We aim to maintain reasonable API surface stability but the API may evolve as we make changes to accommodate new features or performance improvements.
We have a roadmap for our future plans. We also have benchmarks to prevent performance regressions and to let you evaluate rustls on your target hardware.
If you'd like to help out, please see CONTRIBUTING.md.
The maintainers pronounce "rustls" as rustles (rather than rust-TLS), but we don't feel strongly about it.
The detailed list of changes in each release can be found at https://github.com/rustls/rustls/releases.
Rustls is a TLS library that aims to provide a good level of cryptographic security, requires no configuration to achieve that security, and provides no unsafe features or obsolete cryptography by default.
Rustls implements TLS1.2 and TLS1.3 for both clients and servers. See the full list of protocol features.
While Rustls itself is platform independent, it requires the use of cryptography primitives
for implementing the cryptography algorithms used in TLS. In Rustls, a
crypto::CryptoProvider represents a collection of crypto primitive implementations.
By providing a custom instance of the crypto::CryptoProvider struct, you
can replace all cryptography dependencies of rustls. This is a route to being portable
to a wider set of architectures and environments, or compliance requirements. See the
crypto::CryptoProvider documentation for more details.
Since Rustls 0.22 it has been possible to choose the provider of the cryptographic primitives that Rustls uses. This may be appealing if you have specific platform, compliance or feature requirements.
From 0.24, users must explicitly provide a crypto provider when constructing ClientConfig or
ServerConfig instances. See the crypto::CryptoProvider