← Back

Module tls

enum TlsVersion

Source: tls.joule:9

struct TlsConfig

TLS configuration

Source: tls.joule:17

fn default() -> Self

Source: tls.joule:29

struct Certificate

TLS certificate

Source: tls.joule:44

fn from_der(der: Vec<u8>) -> Self

Load from DER bytes

Source: tls.joule:50

fn from_pem(pem: &str) -> Result<Self, TlsError>

Load from PEM string

Source: tls.joule:55

fn from_file(path: &str) -> Result<Self, TlsError>

Load from file

Source: tls.joule:62

fn der(&self) -> &[u8]

Source: tls.joule:71

struct PrivateKey

Private key

Source: tls.joule:77

fn from_der(der: Vec<u8>) -> Self

Load from DER bytes

Source: tls.joule:83

fn from_pem(pem: &str) -> Result<Self, TlsError>

Load from PEM string

Source: tls.joule:88

fn from_file(path: &str) -> Result<Self, TlsError>

Load from file

Source: tls.joule:96

struct TlsConnector

TLS connector for client connections

Source: tls.joule:107

fn new() -> Result<Self, TlsError>

Create new TLS connector

Source: tls.joule:117

fn with_config(config: TlsConfig) -> Result<Self, TlsError>

Create with config

Source: tls.joule:122

fn SSL_CTX_new(method: *const std::ffi::c_void) -> *mut std::ffi::c_void;

Source: tls.joule:136

fn TLS_client_method() -> *const std::ffi::c_void;

Source: tls.joule:137

fn connect(&self, hostname: &str, stream: TcpStream) -> Result<TlsStream, TlsError>

Source: tls.joule:162

struct TlsAcceptor

TLS acceptor for server connections

Source: tls.joule:168

fn new(cert: Certificate, key: PrivateKey) -> Result<Self, TlsError>

Create new TLS acceptor

Source: tls.joule:176

fn with_config(

Create with config

Source: tls.joule:181

fn accept(&self, stream: TcpStream) -> Result<TlsStream, TlsError>

Source: tls.joule:191

struct TlsStream

TLS stream wrapping a TCP stream

Source: tls.joule:197

fn connect(hostname: &str, stream: TcpStream) -> Result<Self, TlsError>

Source: tls.joule:206

fn connect_with_connector(

Source: tls.joule:211

fn SSL_new(ctx: *mut std::ffi::c_void) -> *mut std::ffi::c_void;

Source: tls.joule:219

fn SSL_set_fd(ssl: *mut std::ffi::c_void, fd: i32) -> i32;

Source: tls.joule:220

fn SSL_set_tlsext_host_name(ssl: *mut std::ffi::c_void, name: *const i8) -> i32;

Source: tls.joule:221

fn SSL_connect(ssl: *mut std::ffi::c_void) -> i32;

Source: tls.joule:222

fn SSLCreateContext(

Source: tls.joule:253

fn SSLSetIOFuncs(

Source: tls.joule:259

fn SSLSetPeerDomainName(

Source: tls.joule:265

fn SSLHandshake(context: *mut std::ffi::c_void) -> i32;

Source: tls.joule:271

fn accept_with_acceptor(

Source: tls.joule:307

fn SSL_CTX_new(method: *const std::ffi::c_void) -> *mut std::ffi::c_void;

Source: tls.joule:315

fn TLS_server_method() -> *const std::ffi::c_void;

Source: tls.joule:316

fn SSL_CTX_use_certificate_ASN1(

Source: tls.joule:317

fn SSL_CTX_use_PrivateKey_ASN1(

Source: tls.joule:322

fn SSL_new(ctx: *mut std::ffi::c_void) -> *mut std::ffi::c_void;

Source: tls.joule:328

fn SSL_set_fd(ssl: *mut std::ffi::c_void, fd: i32) -> i32;

Source: tls.joule:329

fn SSL_accept(ssl: *mut std::ffi::c_void) -> i32;

Source: tls.joule:330

fn negotiated_protocol(&self) -> Option<&str>

Get negotiated ALPN protocol

Source: tls.joule:380

fn peer_certificate(&self) -> Option<Certificate>

Get peer certificate

Source: tls.joule:385

fn SSL_get_peer_certificate(ssl: *mut std::ffi::c_void) -> *mut std::ffi::c_void;

Source: tls.joule:389

fn i2d_X509(cert: *mut std::ffi::c_void, out: *mut *mut u8) -> i32;

Source: tls.joule:390

fn X509_free(cert: *mut std::ffi::c_void);

Source: tls.joule:391

fn get_ref(&self) -> &TcpStream

Get underlying TCP stream

Source: tls.joule:420

fn read(&mut self, buf: &mut [u8]) -> Result<usize, std::io::Error>

Source: tls.joule:427

fn SSL_read(ssl: *mut std::ffi::c_void, buf: *mut u8, num: i32) -> i32;

Source: tls.joule:431

fn write(&mut self, buf: &[u8]) -> Result<usize, std::io::Error>

Source: tls.joule:452

fn SSL_write(ssl: *mut std::ffi::c_void, buf: *const u8, num: i32) -> i32;

Source: tls.joule:456

fn flush(&mut self) -> Result<(), std::io::Error>

Source: tls.joule:473

fn drop(&mut self)

Source: tls.joule:479

fn SSL_shutdown(ssl: *mut std::ffi::c_void) -> i32;

Source: tls.joule:483

fn SSL_free(ssl: *mut std::ffi::c_void);

Source: tls.joule:484

enum TlsError

Source: tls.joule:499

fn from(e: std::io::Error) -> Self

Source: tls.joule:509

fn decode_pem(pem: &str, expected_label: &str) -> Result<Vec<u8>, TlsError>

Decode PEM to DER

Source: tls.joule:515