diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs index 2c56dcb7db54f50cb66cba41f1dfc4e0c1764933..dd4a54badaf0f64ec0524dbc7754cef06334037b 100644 --- a/openssl/src/ssl/mod.rs +++ b/openssl/src/ssl/mod.rs @@ -3474,6 +3474,18 @@ impl SslStream { } } + /// Constructs an `SslStream` from a pointer to the underlying OpenSSL `SSL` struct. + /// + /// This is useful if the handshake has already been completed elsewhere. + /// + /// # Safety + /// + /// The caller must ensure the pointer is valid. + pub unsafe fn from_raw_parts(ssl: *mut ffi::SSL, stream: S) -> Self { + let ssl = Ssl::from_ptr(ssl); + Self::new_base(ssl, stream) + } + /// Like `read`, but returns an `ssl::Error` rather than an `io::Error`. /// /// It is particularly useful with a nonblocking socket, where the error value will identify if