diff options
Diffstat (limited to 'src/x509/mod.rs')
| -rw-r--r-- | src/x509/mod.rs | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/x509/mod.rs b/src/x509/mod.rs index 4537e553..2792ca1c 100644 --- a/src/x509/mod.rs +++ b/src/x509/mod.rs @@ -1,6 +1,6 @@ -use libc::{c_int, c_long, c_uint}; -use std::c_str::ToCStr; +use libc::{c_char, c_int, c_long, c_uint}; use std::cmp::Ordering; +use std::ffi::CString; use std::iter::repeat; use std::mem; use std::num::SignedInt; @@ -243,11 +243,11 @@ impl X509Generator { let mut ctx: ffi::X509V3_CTX = mem::zeroed(); ffi::X509V3_set_ctx(&mut ctx, x509, x509, ptr::null_mut(), ptr::null_mut(), 0); - let ext = value.with_c_str(|value| - ffi::X509V3_EXT_conf_nid(ptr::null_mut(), - mem::transmute(&ctx), - extension, - mem::transmute(value))); + let value = CString::from_slice(value.as_bytes()); + let ext = ffi::X509V3_EXT_conf_nid(ptr::null_mut(), + mem::transmute(&ctx), + extension, + value.as_ptr() as *mut c_char); let mut success = false; if ext != ptr::null_mut() { @@ -260,12 +260,12 @@ impl X509Generator { fn add_name(name: *mut ffi::X509_NAME, key: &str, value: &str) -> Result<(), SslError> { let value_len = value.len() as c_int; - lift_ssl!(key.with_c_str(|key| { - value.with_c_str(|value| unsafe { - ffi::X509_NAME_add_entry_by_txt(name, key, ffi::MBSTRING_UTF8, - value, value_len, -1, 0) - }) - })) + lift_ssl!(unsafe { + let key = CString::from_slice(key.as_bytes()); + let value = CString::from_slice(value.as_bytes()); + ffi::X509_NAME_add_entry_by_txt(name, key.as_ptr(), ffi::MBSTRING_UTF8, + value.as_ptr(), value_len, -1, 0) + }) } fn random_serial() -> c_long { |