diff options
| author | Steven Fackler <[email protected]> | 2018-02-17 17:41:57 -0800 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2018-02-17 17:49:49 -0800 |
| commit | 2daaf3fdea1002b49779d031aee8e003a34a754c (patch) | |
| tree | edc7ed42ba083b9d3c7f2d91a588650eed2b795b /openssl/src/ssl/callbacks.rs | |
| parent | Add SSL_version binding (diff) | |
| download | rust-openssl-2daaf3fdea1002b49779d031aee8e003a34a754c.tar.xz rust-openssl-2daaf3fdea1002b49779d031aee8e003a34a754c.zip | |
Add some debugging-related bindings
Diffstat (limited to 'openssl/src/ssl/callbacks.rs')
| -rw-r--r-- | openssl/src/ssl/callbacks.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/openssl/src/ssl/callbacks.rs b/openssl/src/ssl/callbacks.rs index 0e7299e3..2fc43ac0 100644 --- a/openssl/src/ssl/callbacks.rs +++ b/openssl/src/ssl/callbacks.rs @@ -4,6 +4,8 @@ use std::ffi::CStr; use std::ptr; use std::slice; use std::mem; +#[cfg(all(feature = "v111", ossl111))] +use std::str; use foreign_types::ForeignTypeRef; use foreign_types::ForeignType; @@ -343,3 +345,19 @@ where None => ptr::null_mut(), } } + +#[cfg(all(feature = "v111", ossl111))] +pub unsafe extern "C" fn raw_keylog<F>(ssl: *const ffi::SSL, line: *const c_char) +where + F: Fn(&SslRef, &str) + 'static + Sync + Send, +{ + let ctx = ffi::SSL_get_SSL_CTX(ssl as *const _); + let callback = ffi::SSL_CTX_get_ex_data(ctx, get_callback_idx::<F>()); + let callback = &*(callback as *mut F); + + let ssl = SslRef::from_ptr(ssl as *mut _); + let line = CStr::from_ptr(line).to_bytes(); + let line = str::from_utf8_unchecked(line); + + callback(ssl, line); +} |