Unverified Commit 80606fc0 authored by Steven Fackler's avatar Steven Fackler Committed by GitHub
Browse files

Merge pull request #906 from Ralith/session-der

Expose SslSession <-> DER conversion
parents 6f594060 47431f66
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2635,6 +2635,9 @@ extern "C" {
    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;

    pub fn d2i_SSL_SESSION(a: *mut *mut SSL_SESSION, pp: *mut *const c_uchar, len: c_long) -> *mut SSL_SESSION;
    pub fn i2d_SSL_SESSION(s: *mut SSL_SESSION, pp: *mut *mut c_uchar) -> c_int;

    #[cfg(not(ossl101))]
    pub fn SSL_CTX_set_alpn_protos(s: *mut SSL_CTX, data: *const c_uchar, len: c_uint) -> c_int;

+23 −0
Original line number Diff line number Diff line
@@ -1914,6 +1914,19 @@ impl Clone for SslSession {
    }
}

impl SslSession {
    from_der! {
        /// Deserializes a DER-encoded session structure.
        ///
        /// This corresponds to [`d2i_SSL_SESSION`].
        ///
        /// [`d2i_SSL_SESSION`]: https://www.openssl.org/docs/man1.0.2/ssl/d2i_SSL_SESSION.html
        from_der,
        SslSession,
        ffi::d2i_SSL_SESSION
    }
}

impl ToOwned for SslSessionRef {
    type Owned = SslSession;

@@ -1958,6 +1971,16 @@ impl SslSessionRef {
    pub fn master_key(&self, buf: &mut [u8]) -> usize {
        unsafe { compat::SSL_SESSION_get_master_key(self.as_ptr(), buf.as_mut_ptr(), buf.len()) }
    }

    to_der! {
        /// Serializes the session into a DER-encoded structure.
        ///
        /// This corresponds to [`i2d_SSL_SESSION`].
        ///
        /// [`i2d_SSL_SESSION`]: https://www.openssl.org/docs/man1.0.2/ssl/i2d_SSL_SESSION.html
        to_der,
        ffi::i2d_SSL_SESSION
    }
}

foreign_type! {