aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/crypto/pkey.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2015-02-24 23:01:57 -0800
committerSteven Fackler <[email protected]>2015-02-24 23:01:57 -0800
commit6991cc6a30c7f2e480145c4d0c5692924d293043 (patch)
tree7077d07e5027dacb26ff86f0b1ed93af2c59f4c4 /openssl/src/crypto/pkey.rs
parentSwitch to cargo liblibc (diff)
downloadrust-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.rs8
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)
}
/**