Commit 5d534055 authored by Steven Fackler's avatar Steven Fackler
Browse files

Provide access to the session ID

parent 88a7032f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+13 −2
Original line number Diff line number Diff line
@@ -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 {