From 2daaf3fdea1002b49779d031aee8e003a34a754c Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sat, 17 Feb 2018 17:41:57 -0800 Subject: Add some debugging-related bindings --- openssl/src/ssl/callbacks.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'openssl/src/ssl/callbacks.rs') 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(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::()); + 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); +} -- cgit v1.2.3