From 67d3067dbf152c2431e002cbe39ee13286d6d503 Mon Sep 17 00:00:00 2001 From: Ben Batha Date: Fri, 29 Jul 2016 20:01:54 -0400 Subject: [PATCH] improve error handling in rsa --- openssl/src/crypto/rsa.rs | 42 +++++++++++++-------------------------- 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/openssl/src/crypto/rsa.rs b/openssl/src/crypto/rsa.rs index 3b420fbc3..2b563a7af 100644 --- a/openssl/src/crypto/rsa.rs +++ b/openssl/src/crypto/rsa.rs @@ -110,23 +110,17 @@ impl RSA { { let mut mem_bio = try!(MemBio::new()); - let result = unsafe { - ffi::PEM_write_bio_RSAPrivateKey(mem_bio.get_handle(), + unsafe { + try_ssl!(ffi::PEM_write_bio_RSAPrivateKey(mem_bio.get_handle(), self.0, ptr::null(), ptr::null_mut(), 0, None, - ptr::null_mut()) - }; - - if result == 1 { - try!(io::copy(&mut mem_bio, writer).map_err(StreamError)); - - Ok(()) - } else { - Err(SslError::OpenSslErrors(vec![])) + ptr::null_mut())); } + try!(io::copy(&mut mem_bio, writer).map_err(StreamError)); + Ok(()) } /// Reads an RSA public key from PEM formatted data. @@ -151,15 +145,12 @@ impl RSA { { let mut mem_bio = try!(MemBio::new()); - let result = unsafe { ffi::PEM_write_bio_RSA_PUBKEY(mem_bio.get_handle(), self.0) }; - - if result == 1 { - try!(io::copy(&mut mem_bio, writer).map_err(StreamError)); + unsafe { + try_ssl!(ffi::PEM_write_bio_RSA_PUBKEY(mem_bio.get_handle(), self.0)) + }; - Ok(()) - } else { - Err(SslError::OpenSslErrors(vec![])) - } + try!(io::copy(&mut mem_bio, writer).map_err(StreamError)); + Ok(()) } pub fn size(&self) -> Result { @@ -176,19 +167,14 @@ impl RSA { let mut sig_len = k_len; unsafe { - let result = ffi::RSA_sign(hash.as_nid() as c_int, + try_ssl!(ffi::RSA_sign(hash.as_nid() as c_int, message.as_ptr(), message.len() as u32, sig.as_mut_ptr(), &mut sig_len, - self.0); + self.0)); assert!(sig_len == k_len); - - if result == 1 { - Ok(sig) - } else { - Err(SslError::OpenSslErrors(vec![])) - } + Ok(sig) } } @@ -200,7 +186,7 @@ impl RSA { sig.as_ptr(), sig.len() as u32, self.0); - + try_ssl_if!(result == -1); Ok(result == 1) } } -- GitLab