diff options
| author | Steven Fackler <[email protected]> | 2015-02-24 23:01:57 -0800 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2015-02-24 23:01:57 -0800 |
| commit | 6991cc6a30c7f2e480145c4d0c5692924d293043 (patch) | |
| tree | 7077d07e5027dacb26ff86f0b1ed93af2c59f4c4 /openssl/src/crypto/pkey.rs | |
| parent | Switch to cargo liblibc (diff) | |
| download | rust-openssl-6991cc6a30c7f2e480145c4d0c5692924d293043.tar.xz rust-openssl-6991cc6a30c7f2e480145c4d0c5692924d293043.zip | |
Convert to new IO.
Diffstat (limited to 'openssl/src/crypto/pkey.rs')
| -rw-r--r-- | openssl/src/crypto/pkey.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/openssl/src/crypto/pkey.rs b/openssl/src/crypto/pkey.rs index c20fae4f..ac910e0b 100644 --- a/openssl/src/crypto/pkey.rs +++ b/openssl/src/crypto/pkey.rs @@ -1,4 +1,5 @@ use libc::{c_int, c_uint, c_ulong}; +use std::io::prelude::*; use std::iter::repeat; use std::mem; use std::ptr; @@ -142,15 +143,16 @@ impl PKey { /// Stores private key as a PEM // FIXME: also add password and encryption - pub fn write_pem(&self, writer: &mut Writer/*, password: Option<String>*/) -> Result<(), SslError> { + pub fn write_pem<W: Write>(&self, writer: &mut W/*, password: Option<String>*/) -> Result<(), SslError> { let mut mem_bio = try!(MemBio::new()); unsafe { try_ssl!(ffi::PEM_write_bio_PrivateKey(mem_bio.get_handle(), self.evp, ptr::null(), ptr::null_mut(), -1, None, ptr::null_mut())); } - let buf = try!(mem_bio.read_to_end().map_err(StreamError)); - writer.write_all(buf.as_slice()).map_err(StreamError) + let mut buf = vec![]; + try!(mem_bio.read_to_end(&mut buf).map_err(StreamError)); + writer.write_all(&buf).map_err(StreamError) } /** |