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 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("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 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 */ }
}
}
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.
- 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
- An SSL error.
- Error
Code - An 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
SslAcceptor
s. - 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
SslConnector
s. - SslContext
- A context object for TLS streams.
- SslContext
Builder - A builder for
SslContext
s. - SslContext
Ref - A borrowed reference to a
SslContext
. - SslCurve
- A TLS Curve.
- 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
SslContext
will 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
value
argument to an info callback. The most-significant byte is the alert level, while the least significant byte is the alert itself. - SslVerify
Error
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.
- 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§
- BoxCustom
Verify Finish - The type of callbacks returned by
BoxCustomVerifyFuture
methods. - BoxCustom
Verify Future - The type of futures to pass to [
SslContextBuilderExt::set_async_custom_verify_callback
]. - BoxGet
Session Finish - The type of callbacks returned by
BoxSelectCertFuture
methods. - BoxGet
Session Future - The type of futures to pass to [
SslContextBuilderExt::set_async_get_session_callback
]. - BoxPrivate
KeyMethod Finish - The type of callbacks returned by
BoxPrivateKeyMethodFuture
. - BoxPrivate
KeyMethod Future - The type of futures returned by
AsyncPrivateKeyMethod
methods. - BoxSelect
Cert Finish - The type of callbacks returned by
BoxSelectCertFuture
methods. - BoxSelect
Cert Future - The type of futures to pass to [
SslContextBuilderExt::set_async_select_certificate_callback
]. - ExData
Future - Convenience alias for futures stored in
Ssl
ex data by [SslContextBuilderExt
] methods.