Fix cipher_name return value

This commit is contained in:
Steven Fackler 2019-02-22 12:33:41 -07:00
parent f97ad04c7f
commit 58ccea26ad
2 changed files with 7 additions and 7 deletions

View File

@ -115,23 +115,21 @@ mod test;
/// Returns the OpenSSL name of a cipher corresponding to an RFC-standard cipher name. /// Returns the OpenSSL name of a cipher corresponding to an RFC-standard cipher name.
/// ///
/// If the cipher has no corresponding OpenSSL name, the string `(NONE)` is returned.
///
/// Requires OpenSSL 1.1.1 or newer. /// Requires OpenSSL 1.1.1 or newer.
/// ///
/// This corresponds to [`OPENSSL_cipher_name`] /// This corresponds to [`OPENSSL_cipher_name`]
/// ///
/// [`OPENSSL_cipher_name`]: https://www.openssl.org/docs/manmaster/man3/SSL_CIPHER_get_name.html /// [`OPENSSL_cipher_name`]: https://www.openssl.org/docs/manmaster/man3/SSL_CIPHER_get_name.html
#[cfg(ossl111)] #[cfg(ossl111)]
pub fn cipher_name(std_name: &str) -> Option<&'static str> { pub fn cipher_name(std_name: &str) -> &'static str {
unsafe { unsafe {
ffi::init(); ffi::init();
let s = CString::new(std_name).unwrap(); let s = CString::new(std_name).unwrap();
let ptr = ffi::OPENSSL_cipher_name(s.as_ptr()); let ptr = ffi::OPENSSL_cipher_name(s.as_ptr());
if ptr.is_null() { CStr::from_ptr(ptr).to_str().unwrap()
None
} else {
Some(CStr::from_ptr(ptr).to_str().unwrap())
}
} }
} }

View File

@ -1844,6 +1844,8 @@ fn client_hello() {
fn openssl_cipher_name() { fn openssl_cipher_name() {
assert_eq!( assert_eq!(
super::cipher_name("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"), super::cipher_name("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"),
Some("ECDHE-RSA-AES256-SHA384") "ECDHE-RSA-AES256-SHA384",
); );
assert_eq!(super::cipher_name("asdf"), "(NONE)");
} }