diff options
| author | Steven Fackler <[email protected]> | 2017-03-25 15:45:40 +0000 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2017-03-25 19:30:01 -0700 |
| commit | c8d1698f275d2901a7fd65f318155acbd2dd02d3 (patch) | |
| tree | b0366bd4db7059a7066cef2014152d1eb54b3666 /openssl-sys/src | |
| parent | Merge pull request #601 from pgerber/double_unlock (diff) | |
| download | rust-openssl-c8d1698f275d2901a7fd65f318155acbd2dd02d3.tar.xz rust-openssl-c8d1698f275d2901a7fd65f318155acbd2dd02d3.zip | |
Logic to support client-side session reuse
Diffstat (limited to 'openssl-sys/src')
| -rw-r--r-- | openssl-sys/src/lib.rs | 3 | ||||
| -rw-r--r-- | openssl-sys/src/libressl.rs | 13 | ||||
| -rw-r--r-- | openssl-sys/src/ossl10x.rs | 13 | ||||
| -rw-r--r-- | openssl-sys/src/ossl110.rs | 2 |
4 files changed, 24 insertions, 7 deletions
diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index 3ca5c718..737cb930 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -1356,7 +1356,7 @@ pub unsafe fn SSL_CTX_add_extra_chain_cert(ctx: *mut SSL_CTX, x509: *mut X509) - #[cfg(not(any(ossl101, libressl)))] pub unsafe fn SSL_CTX_set0_verify_cert_store(ctx: *mut SSL_CTX, st: *mut X509_STORE) -> c_long { - SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, st as *mut c_void) + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, st as *mut c_void) } pub unsafe fn SSL_CTX_set_tlsext_servername_callback(ctx: *mut SSL_CTX, @@ -1891,6 +1891,7 @@ extern { client: *const c_uchar, client_len: c_uint) -> c_int; pub fn SSL_get0_next_proto_negotiated(s: *const SSL, data: *mut *const c_uchar, len: *mut c_uint); pub fn SSL_get_session(s: *const SSL) -> *mut SSL_SESSION; + pub fn SSL_set_session(ssl: *mut SSL, session: *mut SSL_SESSION) -> c_int; #[cfg(not(any(ossl101, libressl)))] pub fn SSL_is_server(s: *mut SSL) -> c_int; diff --git a/openssl-sys/src/libressl.rs b/openssl-sys/src/libressl.rs index dc3bfe11..d43587f0 100644 --- a/openssl-sys/src/libressl.rs +++ b/openssl-sys/src/libressl.rs @@ -1,6 +1,7 @@ use std::sync::{Mutex, MutexGuard}; use std::sync::{Once, ONCE_INIT}; use std::mem; +use std::ptr; use libc::{c_int, c_char, c_void, c_long, c_uchar, size_t, c_uint, c_ulong}; use libc::time_t; @@ -500,7 +501,7 @@ pub struct SSL_SESSION { verify_result: c_long, timeout: c_long, time: time_t, - references: c_int, + pub references: c_int, cipher: *const c_void, cipher_id: c_ulong, ciphers: *mut c_void, @@ -533,6 +534,7 @@ pub struct X509_VERIFY_PARAM { pub enum X509_VERIFY_PARAM_ID {} pub enum PKCS12 {} +pub const SSL_CTRL_GET_SESSION_REUSED: c_int = 8; pub const SSL_CTRL_OPTIONS: c_int = 32; pub const SSL_CTRL_CLEAR_OPTIONS: c_int = 77; pub const SSL_CTRL_SET_ECDH_AUTO: c_int = 94; @@ -565,6 +567,7 @@ pub const SSLEAY_DIR : c_int = 5; pub const CRYPTO_LOCK_X509: c_int = 3; pub const CRYPTO_LOCK_SSL_CTX: c_int = 12; +pub const CRYPTO_LOCK_SSL_SESSION: c_int = 14; static mut MUTEXES: *mut Vec<Mutex<()>> = 0 as *mut Vec<Mutex<()>>; static mut GUARDS: *mut Vec<Option<MutexGuard<'static, ()>>> = 0 as *mut Vec<Option<MutexGuard<'static, ()>>>; @@ -622,11 +625,15 @@ fn set_id_callback() {} // macros pub unsafe fn SSL_CTX_set_ecdh_auto(ctx: *mut SSL_CTX, onoff: c_int) -> c_int { - ::SSL_CTX_ctrl(ctx, SSL_CTRL_SET_ECDH_AUTO, onoff as c_long, ::std::ptr::null_mut()) as c_int + ::SSL_CTX_ctrl(ctx, SSL_CTRL_SET_ECDH_AUTO, onoff as c_long, ptr::null_mut()) as c_int } pub unsafe fn SSL_set_ecdh_auto(ssl: *mut ::SSL, onoff: c_int) -> c_int { - ::SSL_ctrl(ssl, SSL_CTRL_SET_ECDH_AUTO, onoff as c_long, ::std::ptr::null_mut()) as c_int + ::SSL_ctrl(ssl, SSL_CTRL_SET_ECDH_AUTO, onoff as c_long, ptr::null_mut()) as c_int +} + +pub unsafe fn SSL_session_reused(ssl: *mut ::SSL) -> c_int { + ::SSL_ctrl(ssl, SSL_CTRL_GET_SESSION_REUSED, 0, ptr::null_mut()) as c_int } extern { diff --git a/openssl-sys/src/ossl10x.rs b/openssl-sys/src/ossl10x.rs index fade0f99..23c0ee72 100644 --- a/openssl-sys/src/ossl10x.rs +++ b/openssl-sys/src/ossl10x.rs @@ -1,6 +1,7 @@ use std::sync::{Mutex, MutexGuard}; use std::sync::{Once, ONCE_INIT}; use std::mem; +use std::ptr; use libc::{c_int, c_char, c_void, c_long, c_uchar, size_t, c_uint, c_ulong}; #[cfg(not(ossl101))] @@ -610,7 +611,7 @@ pub struct SSL_SESSION { sess_cert: *mut c_void, peer: *mut X509, verify_result: c_long, - references: c_int, + pub references: c_int, timeout: c_long, time: c_long, compress_meth: c_uint, @@ -678,6 +679,7 @@ pub struct X509_VERIFY_PARAM { pub enum X509_VERIFY_PARAM_ID {} pub enum PKCS12 {} +pub const SSL_CTRL_GET_SESSION_REUSED: c_int = 8; pub const SSL_CTRL_OPTIONS: c_int = 32; pub const SSL_CTRL_CLEAR_OPTIONS: c_int = 77; #[cfg(ossl102)] @@ -708,6 +710,7 @@ pub const SSLEAY_DIR : c_int = 5; pub const CRYPTO_LOCK_X509: c_int = 3; pub const CRYPTO_LOCK_SSL_CTX: c_int = 12; +pub const CRYPTO_LOCK_SSL_SESSION: c_int = 14; static mut MUTEXES: *mut Vec<Mutex<()>> = 0 as *mut Vec<Mutex<()>>; static mut GUARDS: *mut Vec<Option<MutexGuard<'static, ()>>> = 0 as *mut Vec<Option<MutexGuard<'static, ()>>>; @@ -766,12 +769,16 @@ fn set_id_callback() {} #[cfg(ossl102)] pub unsafe fn SSL_CTX_set_ecdh_auto(ctx: *mut SSL_CTX, onoff: c_int) -> c_int { - ::SSL_CTX_ctrl(ctx, SSL_CTRL_SET_ECDH_AUTO, onoff as c_long, ::std::ptr::null_mut()) as c_int + ::SSL_CTX_ctrl(ctx, SSL_CTRL_SET_ECDH_AUTO, onoff as c_long, ptr::null_mut()) as c_int } #[cfg(ossl102)] pub unsafe fn SSL_set_ecdh_auto(ssl: *mut ::SSL, onoff: c_int) -> c_int { - ::SSL_ctrl(ssl, SSL_CTRL_SET_ECDH_AUTO, onoff as c_long, ::std::ptr::null_mut()) as c_int + ::SSL_ctrl(ssl, SSL_CTRL_SET_ECDH_AUTO, onoff as c_long, ptr::null_mut()) as c_int +} + +pub unsafe fn SSL_session_reused(ssl: *mut ::SSL) -> c_int { + ::SSL_ctrl(ssl, SSL_CTRL_GET_SESSION_REUSED, 0, ptr::null_mut()) as c_int } extern { diff --git a/openssl-sys/src/ossl110.rs b/openssl-sys/src/ossl110.rs index 37564c7a..e83e0454 100644 --- a/openssl-sys/src/ossl110.rs +++ b/openssl-sys/src/ossl110.rs @@ -172,10 +172,12 @@ extern { -> c_int; pub fn X509_up_ref(x: *mut X509) -> c_int; pub fn SSL_CTX_up_ref(x: *mut SSL_CTX) -> c_int; + pub fn SSL_session_reused(ssl: *mut SSL) -> c_int; pub fn SSL_SESSION_get_master_key(session: *const SSL_SESSION, out: *mut c_uchar, outlen: size_t) -> size_t; + pub fn SSL_SESSION_up_ref(ses: *mut SSL_SESSION) -> c_int; pub fn X509_get0_extensions(req: *const ::X509) -> *const stack_st_X509_EXTENSION; pub fn X509_STORE_CTX_get0_chain(ctx: *mut ::X509_STORE_CTX) -> *mut stack_st_X509; pub fn EVP_MD_CTX_new() -> *mut EVP_MD_CTX; |