aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2018-01-01 11:55:05 -0800
committerGitHub <[email protected]>2018-01-01 11:55:05 -0800
commit0dd0df84d7167eeda1e69c83b4c4efba3b78b470 (patch)
tree4fb0a6bab4f4d3e980a8e94b6057ec8e1b871349 /openssl/src
parentMerge pull request #812 from Eijebong/bump_hex (diff)
parentMove X509Filetype to SslFiletype (diff)
downloadrust-openssl-0dd0df84d7167eeda1e69c83b4c4efba3b78b470.tar.xz
rust-openssl-0dd0df84d7167eeda1e69c83b4c4efba3b78b470.zip
Merge pull request #813 from sfackler/ssl-filetype
Move X509Filetype to SslFiletype
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/ssl/mod.rs65
-rw-r--r--openssl/src/ssl/test.rs44
-rw-r--r--openssl/src/x509/mod.rs12
3 files changed, 65 insertions, 56 deletions
diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs
index cebb23b2..6d71943a 100644
--- a/openssl/src/ssl/mod.rs
+++ b/openssl/src/ssl/mod.rs
@@ -26,17 +26,14 @@
//! To accept connections as a server from remote clients:
//!
//! ```no_run
-//! use openssl::ssl::{SslMethod, SslAcceptor, SslStream};
-//! use openssl::x509::X509Filetype;
-//! use std::fs::File;
-//! use std::io::{Read, Write};
+//! use openssl::ssl::{SslMethod, SslAcceptor, SslStream, SslFiletype};
//! use std::net::{TcpListener, TcpStream};
//! use std::sync::Arc;
//! use std::thread;
//!
//!
//! let mut acceptor = SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap();
-//! acceptor.set_private_key_file("key.pem", X509Filetype::PEM).unwrap();
+//! acceptor.set_private_key_file("key.pem", SslFiletype::PEM).unwrap();
//! acceptor.set_certificate_chain_file("certs.pem").unwrap();
//! acceptor.check_private_key().unwrap();
//! let acceptor = Arc::new(acceptor.build());
@@ -86,7 +83,7 @@ use dh::{Dh, DhRef};
use ec::EcKeyRef;
#[cfg(any(all(feature = "v101", ossl101), all(feature = "v102", ossl102)))]
use ec::EcKey;
-use x509::{X509, X509Filetype, X509Name, X509Ref, X509StoreContextRef, X509VerifyResult};
+use x509::{X509, X509Name, X509Ref, X509StoreContextRef, X509VerifyResult};
use x509::store::{X509StoreBuilderRef, X509StoreRef};
#[cfg(any(all(feature = "v102", ossl102), all(feature = "v110", ossl110)))]
use x509::store::X509Store;
@@ -314,6 +311,32 @@ bitflags! {
}
}
+/// An identifier of the format of a certificate or key file.
+#[derive(Copy, Clone)]
+pub struct SslFiletype(c_int);
+
+impl SslFiletype {
+ /// Constructs an `SslFiletype` from a raw OpenSSL value.
+ pub fn from_raw(raw: c_int) -> SslFiletype {
+ SslFiletype(raw)
+ }
+
+ /// Returns the raw OpenSSL value represented by this type.
+ pub fn as_raw(&self) -> c_int {
+ self.0
+ }
+
+ /// The PEM format.
+ ///
+ /// This corresponds to `SSL_FILETYPE_PEM`.
+ pub const PEM: SslFiletype = SslFiletype(ffi::SSL_FILETYPE_PEM);
+
+ /// The ASN1 format.
+ ///
+ /// This corresponds to `SSL_FILETYPE_ASN1`.
+ pub const ASN1: SslFiletype = SslFiletype(ffi::SSL_FILETYPE_ASN1);
+}
+
/// An identifier of a certificate status type.
#[derive(Copy, Clone)]
pub struct StatusType(c_int);
@@ -778,7 +801,7 @@ impl SslContextBuilder {
pub fn set_certificate_file<P: AsRef<Path>>(
&mut self,
file: P,
- file_type: X509Filetype,
+ file_type: SslFiletype,
) -> Result<(), ErrorStack> {
let file = CString::new(file.as_ref().as_os_str().to_str().unwrap()).unwrap();
unsafe {
@@ -847,7 +870,7 @@ impl SslContextBuilder {
pub fn set_private_key_file<P: AsRef<Path>>(
&mut self,
file: P,
- file_type: X509Filetype,
+ file_type: SslFiletype,
) -> Result<(), ErrorStack> {
let file = CString::new(file.as_ref().as_os_str().to_str().unwrap()).unwrap();
unsafe {
@@ -2041,9 +2064,10 @@ impl Ssl {
ErrorCode::WANT_READ | ErrorCode::WANT_WRITE => Err(HandshakeError::WouldBlock(
MidHandshakeSslStream { stream, error },
)),
- _ => Err(HandshakeError::Failure(
- MidHandshakeSslStream { stream, error },
- )),
+ _ => Err(HandshakeError::Failure(MidHandshakeSslStream {
+ stream,
+ error,
+ })),
}
}
}
@@ -2072,9 +2096,10 @@ impl Ssl {
ErrorCode::WANT_READ | ErrorCode::WANT_WRITE => Err(HandshakeError::WouldBlock(
MidHandshakeSslStream { stream, error },
)),
- _ => Err(HandshakeError::Failure(
- MidHandshakeSslStream { stream, error },
- )),
+ _ => Err(HandshakeError::Failure(MidHandshakeSslStream {
+ stream,
+ error,
+ })),
}
}
}
@@ -2319,10 +2344,8 @@ impl<S: Read + Write> Read for SslStream<S> {
}
Err(ref e) if e.code() == ErrorCode::WANT_READ && e.io_error().is_none() => {}
Err(e) => {
- return Err(
- e.into_io_error()
- .unwrap_or_else(|e| io::Error::new(io::ErrorKind::Other, e)),
- )
+ return Err(e.into_io_error()
+ .unwrap_or_else(|e| io::Error::new(io::ErrorKind::Other, e)))
}
}
}
@@ -2336,10 +2359,8 @@ impl<S: Read + Write> Write for SslStream<S> {
Ok(n) => return Ok(n),
Err(ref e) if e.code() == ErrorCode::WANT_READ && e.io_error().is_none() => {}
Err(e) => {
- return Err(
- e.into_io_error()
- .unwrap_or_else(|e| io::Error::new(io::ErrorKind::Other, e)),
- )
+ return Err(e.into_io_error()
+ .unwrap_or_else(|e| io::Error::new(io::ErrorKind::Other, e)))
}
}
}
diff --git a/openssl/src/ssl/test.rs b/openssl/src/ssl/test.rs
index bc989c35..99c0e1f2 100644
--- a/openssl/src/ssl/test.rs
+++ b/openssl/src/ssl/test.rs
@@ -19,8 +19,8 @@ use hash::MessageDigest;
use ocsp::{OcspResponse, OcspResponseStatus};
use ssl;
use ssl::{Error, HandshakeError, ShutdownResult, Ssl, SslAcceptor, SslConnector, SslContext,
- SslMethod, SslStream, SslVerifyMode, StatusType};
-use x509::{X509, X509Filetype, X509Name, X509StoreContext, X509VerifyResult};
+ SslFiletype, SslMethod, SslStream, SslVerifyMode, StatusType};
+use x509::{X509, X509Name, X509StoreContext, X509VerifyResult};
#[cfg(any(all(feature = "v102", ossl102), all(feature = "v110", ossl110)))]
use x509::verify::X509CheckFlags;
use pkey::PKey;
@@ -347,9 +347,9 @@ fn test_write_hits_stream() {
let mut ctx = SslContext::builder(SslMethod::tls()).unwrap();
ctx.set_verify(SslVerifyMode::PEER);
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.unwrap();
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
let stream = listener.accept().unwrap().0;
let mut stream = Ssl::new(&ctx.build()).unwrap().accept(stream).unwrap();
@@ -552,10 +552,10 @@ fn test_alpn_server_advertise_multiple() {
ssl::select_next_proto(b"\x08http/1.1\x08spdy/3.1", client).ok_or(ssl::AlpnError::NOACK)
});
assert!(
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.is_ok()
);
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
ctx.build()
};
@@ -595,10 +595,10 @@ fn test_alpn_server_select_none_fatal() {
.ok_or(ssl::AlpnError::ALERT_FATAL)
});
assert!(
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.is_ok()
);
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
ctx.build()
};
@@ -628,10 +628,10 @@ fn test_alpn_server_select_none() {
ssl::select_next_proto(b"\x08http/1.1\x08spdy/3.1", client).ok_or(ssl::AlpnError::NOACK)
});
assert!(
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.is_ok()
);
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
ctx.build()
};
@@ -962,9 +962,9 @@ fn shutdown() {
thread::spawn(move || {
let stream = listener.accept().unwrap().0;
let mut ctx = SslContext::builder(SslMethod::tls()).unwrap();
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.unwrap();
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
let ssl = Ssl::new(&ctx.build()).unwrap();
let mut stream = ssl.accept(stream).unwrap();
@@ -1020,9 +1020,9 @@ fn tmp_dh_callback() {
thread::spawn(move || {
let stream = listener.accept().unwrap().0;
let mut ctx = SslContext::builder(SslMethod::tls()).unwrap();
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.unwrap();
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
ctx.set_tmp_dh_callback(|_, _, _| {
CALLED_BACK.store(true, Ordering::SeqCst);
@@ -1057,9 +1057,9 @@ fn tmp_ecdh_callback() {
thread::spawn(move || {
let stream = listener.accept().unwrap().0;
let mut ctx = SslContext::builder(SslMethod::tls()).unwrap();
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.unwrap();
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
ctx.set_tmp_ecdh_callback(|_, _, _| {
CALLED_BACK.store(true, Ordering::SeqCst);
@@ -1088,9 +1088,9 @@ fn tmp_dh_callback_ssl() {
thread::spawn(move || {
let stream = listener.accept().unwrap().0;
let mut ctx = SslContext::builder(SslMethod::tls()).unwrap();
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.unwrap();
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
let mut ssl = Ssl::new(&ctx.build()).unwrap();
ssl.set_tmp_dh_callback(|_, _, _| {
@@ -1125,9 +1125,9 @@ fn tmp_ecdh_callback_ssl() {
thread::spawn(move || {
let stream = listener.accept().unwrap().0;
let mut ctx = SslContext::builder(SslMethod::tls()).unwrap();
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.unwrap();
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
let mut ssl = Ssl::new(&ctx.build()).unwrap();
ssl.set_tmp_ecdh_callback(|_, _, _| {
@@ -1180,9 +1180,9 @@ fn status_callbacks() {
let guard = thread::spawn(move || {
let stream = listener.accept().unwrap().0;
let mut ctx = SslContext::builder(SslMethod::tls()).unwrap();
- ctx.set_certificate_file(&Path::new("test/cert.pem"), X509Filetype::PEM)
+ ctx.set_certificate_file(&Path::new("test/cert.pem"), SslFiletype::PEM)
.unwrap();
- ctx.set_private_key_file(&Path::new("test/key.pem"), X509Filetype::PEM)
+ ctx.set_private_key_file(&Path::new("test/key.pem"), SslFiletype::PEM)
.unwrap();
ctx.set_status_callback(|ssl| {
CALLED_BACK_SERVER.store(true, Ordering::SeqCst);
diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs
index 9491afce..98d4aed5 100644
--- a/openssl/src/x509/mod.rs
+++ b/openssl/src/x509/mod.rs
@@ -40,18 +40,6 @@ pub mod store;
#[cfg(test)]
mod tests;
-pub struct X509Filetype(c_int);
-
-impl X509Filetype {
- pub fn as_raw(&self) -> c_int {
- self.0
- }
-
- pub const PEM: X509Filetype = X509Filetype(ffi::X509_FILETYPE_PEM);
- pub const ASN1: X509Filetype = X509Filetype(ffi::X509_FILETYPE_ASN1);
- pub const DEFAULT: X509Filetype = X509Filetype(ffi::X509_FILETYPE_DEFAULT);
-}
-
foreign_type_and_impl_send_sync! {
type CType = ffi::X509_STORE_CTX;
fn drop = ffi::X509_STORE_CTX_free;