aboutsummaryrefslogtreecommitdiff
path: root/src/x509/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/x509/mod.rs')
-rw-r--r--src/x509/mod.rs26
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 {