This commit is contained in:
Steven Fackler 2016-11-05 19:28:17 -07:00
parent 8ad1e5565b
commit 79e2004eef
1 changed files with 22 additions and 7 deletions

View File

@ -1,6 +1,6 @@
//! SSL/TLS support. //! SSL/TLS support.
//! //!
//! The `SslConnector` and `SslAcceptor` should be used in most cases - they handle //! `SslConnector` and `SslAcceptor` should be used in most cases - they handle
//! configuration of the OpenSSL primitives for you. //! configuration of the OpenSSL primitives for you.
//! //!
//! # Examples //! # Examples
@ -70,7 +70,9 @@
//! } //! }
//! } //! }
//! ``` //! ```
use ffi;
use libc::{c_int, c_void, c_long, c_ulong}; use libc::{c_int, c_void, c_long, c_ulong};
use libc::{c_uchar, c_uint};
use std::any::Any; use std::any::Any;
use std::any::TypeId; use std::any::TypeId;
use std::cmp; use std::cmp;
@ -79,15 +81,14 @@ use std::ffi::{CStr, CString};
use std::fmt; use std::fmt;
use std::io; use std::io;
use std::io::prelude::*; use std::io::prelude::*;
use std::marker::PhantomData;
use std::mem; use std::mem;
use std::ops::{Deref, DerefMut};
use std::path::Path; use std::path::Path;
use std::ptr; use std::ptr;
use std::slice;
use std::str; use std::str;
use std::sync::Mutex; use std::sync::Mutex;
use libc::{c_uchar, c_uint};
use std::slice;
use std::marker::PhantomData;
use ffi;
use {init, cvt, cvt_p}; use {init, cvt, cvt_p};
use dh::DhRef; use dh::DhRef;
@ -781,6 +782,20 @@ impl OpenSslType for SslCipher {
} }
} }
impl Deref for SslCipher {
type Target = SslCipherRef;
fn deref(&self) -> &SslCipherRef {
unsafe { SslCipherRef::from_ptr(self.0) }
}
}
impl DerefMut for SslCipher {
fn deref_mut(&mut self) -> &mut SslCipherRef {
unsafe { SslCipherRef::from_ptr_mut(self.0) }
}
}
pub struct SslCipherRef(Opaque); pub struct SslCipherRef(Opaque);
impl OpenSslTypeRef for SslCipherRef { impl OpenSslTypeRef for SslCipherRef {
@ -789,7 +804,7 @@ impl OpenSslTypeRef for SslCipherRef {
impl SslCipherRef { impl SslCipherRef {
/// Returns the name of cipher. /// Returns the name of cipher.
pub fn name(&self) -> &'static str { pub fn name(&self) -> &str {
let name = unsafe { let name = unsafe {
let ptr = ffi::SSL_CIPHER_get_name(self.as_ptr()); let ptr = ffi::SSL_CIPHER_get_name(self.as_ptr());
CStr::from_ptr(ptr as *const _) CStr::from_ptr(ptr as *const _)
@ -799,7 +814,7 @@ impl SslCipherRef {
} }
/// Returns the SSL/TLS protocol version that first defined the cipher. /// Returns the SSL/TLS protocol version that first defined the cipher.
pub fn version(&self) -> &'static str { pub fn version(&self) -> &str {
let version = unsafe { let version = unsafe {
let ptr = ffi::SSL_CIPHER_get_version(self.as_ptr()); let ptr = ffi::SSL_CIPHER_get_version(self.as_ptr());
CStr::from_ptr(ptr as *const _) CStr::from_ptr(ptr as *const _)