Provide access to the session ID

This commit is contained in:
Steven Fackler 2017-01-04 21:07:51 -08:00
parent 88a7032f4b
commit 5d53405597
2 changed files with 14 additions and 2 deletions

View File

@ -1751,6 +1751,7 @@ extern {
pub fn SSL_get_session(s: *const SSL) -> *mut SSL_SESSION;
pub fn SSL_SESSION_free(s: *mut SSL_SESSION);
pub fn SSL_SESSION_get_id(s: *const SSL_SESSION, len: *mut c_uint) -> *const c_uchar;
#[cfg(not(ossl101))]
pub fn SSL_CTX_set_alpn_protos(s: *mut SSL_CTX, data: *const c_uchar, len: c_uint) -> c_int;

View File

@ -1029,6 +1029,19 @@ impl SslCipherRef {
}
}
type_!(SslSession, SslSessionRef, ffi::SSL_SESSION, ffi::SSL_SESSION_free);
impl SslSessionRef {
/// Returns the SSL session ID.
pub fn id(&self) -> &[u8] {
unsafe {
let mut len = 0;
let p = ffi::SSL_SESSION_get_id(self.as_ptr(), &mut len);
slice::from_raw_parts(p as *const u8, len as usize)
}
}
}
type_!(Ssl, SslRef, ffi::SSL, ffi::SSL_free);
impl fmt::Debug for SslRef {
@ -1350,8 +1363,6 @@ impl fmt::Debug for Ssl {
}
}
type_!(SslSession, SslSessionRef, ffi::SSL_SESSION, ffi::SSL_SESSION_free);
impl Ssl {
pub fn new(ctx: &SslContext) -> Result<Ssl, ErrorStack> {
unsafe {