Module ssl
Available on crate feature
boring only.Expand description
SSL/TLS support.
SslConnector and SslAcceptor should be used in most cases - they handle
configuration of the OpenSSL primitives for you.
§Examples
To connect as a client to a remote server:
use rama_boring::ssl::{SslMethod, SslConnector};
use std::io::{Read, Write};
use std::net::TcpStream;
let connector = SslConnector::builder(SslMethod::tls()).unwrap().build();
let stream = TcpStream::connect("google.com:443").unwrap();
let mut stream = connector.connect(Some("google.com"), stream).unwrap();
stream.write_all(b"GET / HTTP/1.0\r\n\r\n").unwrap();
let mut res = vec![];
stream.read_to_end(&mut res).unwrap();
println!("{}", String::from_utf8_lossy(&res));To accept connections as a server from remote clients:
use rama_boring::ssl::{SslMethod, SslAcceptor, SslStream, SslFiletype};
use std::net::{TcpListener, TcpStream};
use std::sync::Arc;
use std::thread;
let mut acceptor = SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap();
acceptor.set_private_key_file("key.pem", SslFiletype::PEM).unwrap();
acceptor.set_certificate_chain_file("certs.pem").unwrap();
acceptor.check_private_key().unwrap();
let acceptor = Arc::new(acceptor.build());
let listener = TcpListener::bind("0.0.0.0:8443").unwrap();
fn handle_client(stream: SslStream<TcpStream>) {
// ...
}
for stream in listener.incoming() {
match stream {
Ok(stream) => {
let acceptor = acceptor.clone();
thread::spawn(move || {
let stream = acceptor.accept(stream).unwrap();
handle_client(stream);
});
}
Err(e) => { /* connection failed */ }
}
}Modules§
- quic
- Transport-independent TLS handshakes for QUIC.
Structs§
- Alpn
Error - An error returned from an ALPN selection callback.
- Async
Private KeyMethod Error - A fatal error to be returned from async private key methods.
- Async
Select Cert Error - A fatal error to be returned from async select certificate callbacks.
- Certificate
Compression Algorithm - Certificate
Selection - Certificate-selection state, available only while the selection callback runs. Copy request metadata before moving it into an asynchronous operation. Borrowed metadata prevents mutating the SSL while that metadata is still used:
- Cipher
Bits - Information about the state of a cipher.
- Client
Hello - Compliance
Policy - A compliance policy.
- Connect
Configuration - A type which allows for configuration of a client-side TLS session before connection.
- Error
- A general SSL error, based on
SSL_ERROR_*error codes. - Error
Code SSL_ERROR_*error code returned from SSL functions.- Extension
Type - Extension types, to be used with
ClientHello::get_extension. - GetSession
Pending Error - Error returned by the callback to get a session when operation could not complete and should be retried later.
- MidHandshake
SslStream - An SSL stream midway through the handshake process.
- Name
Type - An identifier of a session name type.
- Private
KeyMethod Error - An error returned from a private key method.
- Select
Cert Error - An error returned from a certificate selection callback.
- Shutdown
State - The shutdown state of a session.
- SniError
- An error returned from the SNI callback.
- Ssl
- The state of an SSL/TLS session.
- Ssl3
Alert Level - SslAcceptor
- A type which wraps server-side streams in a TLS session.
- SslAcceptor
Builder - A builder for
SslAcceptors. - SslAlert
- An SSL/TLS alert.
- SslCipher
- Information about a cipher.
- SslCipher
Ref - Reference to an
SslCipher. - SslConnector
- A type which wraps client-side streams in a TLS session.
- SslConnector
Builder - A builder for
SslConnectors. - SslContext
- A context object for TLS streams.
- SslContext
Builder - A builder for
SslContexts. - SslContext
Ref - A borrowed reference to a
SslContext. - SslCredential
- A credential.
- SslCredential
Builder - A builder for
SslCredential. - SslCredential
Ref - A borrowed reference to a
SslCredential. - SslCurve
- A TLS Curve.
- SslEch
Keys - SslEch
Keys Ref - A borrowed reference to a
SslEchKeys. - SslFiletype
- An identifier of the format of a certificate or key file.
- SslInfo
Callback Alert - SslInfo
Callback Mode - Options controlling the behavior of the info callback.
- SslMethod
- A type specifying the kind of protocol an
SslContextwill speak. - SslMode
- Options controlling the behavior of an
SslContext. - SslOptions
- Options controlling the behavior of an
SslContext. - SslRef
- A borrowed reference to a
Ssl. - SslSession
- An encoded SSL session.
- SslSession
Cache Mode - Options controlling the behavior of session caching.
- SslSession
Ref - A borrowed reference to a
SslSession. - SslSignature
Algorithm - A signature verification algorithm.
- SslStream
- A TLS session over a stream.
- SslStream
Builder - A partially constructed
SslStream, useful for unusual handshakes. - SslVerify
Mode - Options controlling the behavior of certificate verification.
- SslVersion
- An SSL/TLS protocol version.
- Status
Type - An identifier of a certificate status type.
Enums§
- Handshake
Error - An error or intermediate state after a TLS handshake attempt.
- Shutdown
Result - The result of a shutdown request.
- SslInfo
Callback Value - The
valueargument to an info callback. The most-significant byte is the alert level, while the least significant byte is the alert itself. - SslVerify
Error - Ticket
KeyCallback Result - Ticket key callback status.
Traits§
- Async
Private KeyMethod - Describes async private key hooks. This is used to off-load signing operations to a custom, potentially asynchronous, backend. Metadata about the key such as the type and size are parsed out of the certificate.
- Certificate
Compressor - Describes certificate compression algorithm. Implementation MUST implement transformation at least in one direction.
- Private
KeyMethod - Describes private key hooks. This is used to off-load signing operations to a custom, potentially asynchronous, backend. Metadata about the key such as the type and size are parsed out of the certificate.
Functions§
- select_
next_ proto - A standard implementation of protocol selection for Application Layer Protocol Negotiation (ALPN).
Type Aliases§
- BoxCertificate
Finish - Installs the credentials once a
BoxCertificateFuturecompletes. Runs synchronously on the polling thread, at most once; never after cancellation. - BoxCertificate
Future - Future returned by
SslContextBuilder::set_async_certificate_callback. It owns its inputs; it cannot retain a borrow of the TLS connection or request: - BoxCustom
Verify Finish - The type of callbacks returned by
BoxCustomVerifyFuturemethods. - BoxCustom
Verify Future - The type of futures to pass to
SslContextBuilder::set_async_custom_verify_callback. - BoxGet
Session Finish - The type of callbacks returned by
BoxSelectCertFuturemethods. - BoxGet
Session Future - The type of futures to pass to
SslContextBuilder::set_async_get_session_callback. - BoxPrivate
KeyMethod Finish - The type of callbacks returned by
BoxPrivateKeyMethodFuture. - BoxPrivate
KeyMethod Future - The type of futures returned by
AsyncPrivateKeyMethodmethods. - BoxSelect
Cert Finish - The type of callbacks returned by
BoxSelectCertFuturemethods. - BoxSelect
Cert Future - The type of futures to pass to
SslContextBuilder::set_async_select_certificate_callback. - ExData
Future - Convenience alias for futures stored in
Sslex data bySslContextBuildermethods.