aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/ssl/callbacks.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2018-02-17 17:41:57 -0800
committerSteven Fackler <[email protected]>2018-02-17 17:49:49 -0800
commit2daaf3fdea1002b49779d031aee8e003a34a754c (patch)
treeedc7ed42ba083b9d3c7f2d91a588650eed2b795b /openssl/src/ssl/callbacks.rs
parentAdd SSL_version binding (diff)
downloadrust-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.rs18
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);
+}