aboutsummaryrefslogtreecommitdiff
path: root/openssl
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2016-12-22 11:59:19 -0500
committerGitHub <[email protected]>2016-12-22 11:59:19 -0500
commit7e035a7fd1a39a5f5e4d7fa79da544433fa80684 (patch)
treeeaf669ef88f063ba0872f86d1f4f1100d2946f06 /openssl
parentMerge pull request #539 from alexcrichton/zero-write (diff)
parentAdd Travis build against LibreSSL (diff)
downloadrust-openssl-7e035a7fd1a39a5f5e4d7fa79da544433fa80684.tar.xz
rust-openssl-7e035a7fd1a39a5f5e4d7fa79da544433fa80684.zip
Merge pull request #538 from semarie/libressl
Add LibreSSL support
Diffstat (limited to 'openssl')
-rw-r--r--openssl/build.rs4
-rw-r--r--openssl/src/ssl/mod.rs3
-rw-r--r--openssl/src/ssl/tests/mod.rs8
-rw-r--r--openssl/src/version.rs7
-rwxr-xr-xopenssl/test/build.sh48
-rwxr-xr-xopenssl/test/run.sh16
6 files changed, 58 insertions, 28 deletions
diff --git a/openssl/build.rs b/openssl/build.rs
index 7a0c60dc..954e9b0c 100644
--- a/openssl/build.rs
+++ b/openssl/build.rs
@@ -16,6 +16,10 @@ fn main() {
_ => panic!("Unable to detect OpenSSL version"),
}
+ if let Ok(_) = env::var("DEP_OPENSSL_LIBRESSL") {
+ println!("cargo:rustc-cfg=libressl");
+ }
+
if let Ok(vars) = env::var("DEP_OPENSSL_CONF") {
for var in vars.split(",") {
println!("cargo:rustc-cfg=osslconf=\"{}\"", var);
diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs
index 47c83453..3eead8f2 100644
--- a/openssl/src/ssl/mod.rs
+++ b/openssl/src/ssl/mod.rs
@@ -166,8 +166,11 @@ bitflags! {
const SSL_MODE_AUTO_RETRY = ffi::SSL_MODE_AUTO_RETRY,
const SSL_MODE_NO_AUTO_CHAIN = ffi::SSL_MODE_NO_AUTO_CHAIN,
const SSL_MODE_RELEASE_BUFFERS = ffi::SSL_MODE_RELEASE_BUFFERS,
+ #[cfg(not(libressl))]
const SSL_MODE_SEND_CLIENTHELLO_TIME = ffi::SSL_MODE_SEND_CLIENTHELLO_TIME,
+ #[cfg(not(libressl))]
const SSL_MODE_SEND_SERVERHELLO_TIME = ffi::SSL_MODE_SEND_SERVERHELLO_TIME,
+ #[cfg(not(libressl))]
const SSL_MODE_SEND_FALLBACK_SCSV = ffi::SSL_MODE_SEND_FALLBACK_SCSV,
}
}
diff --git a/openssl/src/ssl/tests/mod.rs b/openssl/src/ssl/tests/mod.rs
index 66f9dca9..e685d658 100644
--- a/openssl/src/ssl/tests/mod.rs
+++ b/openssl/src/ssl/tests/mod.rs
@@ -181,7 +181,7 @@ macro_rules! run_test(
}
#[test]
- #[cfg_attr(any(windows, target_arch = "arm"), ignore)] // FIXME(#467)
+ #[cfg_attr(any(libressl, windows, target_arch = "arm"), ignore)] // FIXME(#467)
fn dtlsv1() {
let (_s, stream) = Server::new_dtlsv1(Some("hello"));
$blk(SslMethod::dtls(), stream);
@@ -442,7 +442,7 @@ run_test!(get_peer_certificate, |method, stream| {
});
#[test]
-#[cfg_attr(any(windows, target_arch = "arm"), ignore)] // FIXME(#467)
+#[cfg_attr(any(libressl, windows, target_arch = "arm"), ignore)] // FIXME(#467)
fn test_write_dtlsv1() {
let (_s, stream) = Server::new_dtlsv1(iter::repeat("y\n"));
let ctx = SslContext::builder(SslMethod::dtls()).unwrap();
@@ -781,7 +781,7 @@ fn test_alpn_server_select_none() {
}
#[test]
-#[cfg_attr(any(windows, target_arch = "arm"), ignore)] // FIXME(#467)
+#[cfg_attr(any(libressl, windows, target_arch = "arm"), ignore)] // FIXME(#467)
fn test_read_dtlsv1() {
let (_s, stream) = Server::new_dtlsv1(Some("hello"));
@@ -859,7 +859,7 @@ fn test_write_nonblocking() {
}
#[test]
-#[cfg_attr(any(windows, target_arch = "arm"), ignore)] // FIXME(#467)
+#[cfg_attr(any(libressl, windows, target_arch = "arm"), ignore)] // FIXME(#467)
fn test_read_nonblocking() {
let (_s, stream) = Server::new();
stream.set_nonblocking(true).unwrap();
diff --git a/openssl/src/version.rs b/openssl/src/version.rs
index d7db39a7..2604914e 100644
--- a/openssl/src/version.rs
+++ b/openssl/src/version.rs
@@ -92,8 +92,13 @@ fn test_versions() {
println!("Platform: '{}'", platform());
println!("Dir: '{}'", dir());
+ #[cfg(not(libressl))]
+ fn expected_name() -> &'static str { "OpenSSL" }
+ #[cfg(libressl)]
+ fn expected_name() -> &'static str { "LibreSSL" }
+
assert!(number() > 0);
- assert!(version().starts_with("OpenSSL"));
+ assert!(version().starts_with(expected_name()));
assert!(c_flags().starts_with("compiler:"));
assert!(built_on().starts_with("built on:"));
assert!(dir().starts_with("OPENSSLDIR:"));
diff --git a/openssl/test/build.sh b/openssl/test/build.sh
index 106a38d3..cd740895 100755
--- a/openssl/test/build.sh
+++ b/openssl/test/build.sh
@@ -3,21 +3,29 @@
set -ex
MAX_REDIRECTS=5
-OPENSSL=openssl-$BUILD_OPENSSL_VERSION.tar.gz
-OUT=/tmp/$OPENSSL
+
+if [ -n "${BUILD_LIBRESSL_VERSION}" ]; then
+ NAME=libressl
+ URL1="http://ftp3.usa.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${BUILD_LIBRESSL_VERSION}.tar.gz"
+ URL2="http://ftp.eu.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${BUILD_LIBRESSL_VERSION}.tar.gz"
+ OUT="/tmp/libressl-${BUILD_OPENSSL_VERSION}.tar.gz"
+elif [ -n "${BUILD_OPENSSL_VERSION}" ]; then
+ NAME=openssl
+ URL1="https://openssl.org/source/openssl-${BUILD_OPENSSL_VERSION}.tar.gz"
+ URL2="http://mirrors.ibiblio.org/openssl/source/openssl-${BUILD_OPENSSL_VERSION}.tar.gz"
+ OUT="/tmp/openssl-${BUILD_OPENSSL_VERSION}.tar.gz"
+else
+ exit 0
+fi
me=$0
-myname=`basename $me`
+myname=`basename ${me}`
-cmp --silent $me $HOME/openssl/$myname && exit 0 || echo "cache is busted"
+cmp --silent ${me} ${HOME}/${NAME}/${myname} && exit 0 || echo "cache is busted"
-rm -rf $HOME/openssl
+rm -rf "${HOME}/${NAME}"
-if [ "$TRAVIS_OS_NAME" == "osx" ]; then
- exit 0
-fi
-
-if [ "$BUILD_OPENSSL_VERSION" == "" ]; then
+if [ "${TRAVIS_OS_NAME}" == "osx" ]; then
exit 0
fi
@@ -32,17 +40,21 @@ else
OS_COMPILER=linux-x86_64
fi
-mkdir -p /tmp/openssl
-cp $me /tmp/openssl/$myname
-cd /tmp/openssl
+mkdir -p /tmp/build
+cp ${me} /tmp/build/${myname}
+cd /tmp/build
-curl -o $OUT -L --max-redirs $MAX_REDIRECTS https://openssl.org/source/$OPENSSL \
- || curl -o $OUT -L --max-redirs ${MAX_REDIRECTS} http://mirrors.ibiblio.org/openssl/source/$OPENSSL
+curl -o ${OUT} -L --max-redirs ${MAX_REDIRECTS} ${URL1} \
+ || curl -o ${OUT} -L --max-redirs ${MAX_REDIRECTS} ${URL2}
-tar --strip-components=1 -xzf $OUT
+tar --strip-components=1 -xzf ${OUT}
-./Configure --prefix=$HOME/openssl $OS_COMPILER -fPIC $OS_FLAGS
+if [ -n "${BUILD_LIBRESSL_VERSION}" ]; then
+ ./configure --prefix=${HOME}/libressl
+else
+ ./Configure --prefix=${HOME}/openssl ${OS_COMPILER} -fPIC ${OS_FLAGS}
+fi
make -j$(nproc)
make install
-cp $myname $HOME/openssl/$myname
+cp ${myname} ${HOME}/${NAME}/${myname}
diff --git a/openssl/test/run.sh b/openssl/test/run.sh
index 4d3397a6..b07b8e4b 100755
--- a/openssl/test/run.sh
+++ b/openssl/test/run.sh
@@ -12,15 +12,21 @@ esac
echo Using features: $FEATURES
-if [ -d "$HOME/openssl/lib" ]; then
- export OPENSSL_DIR=$HOME/openssl
- export PATH=$HOME/openssl/bin:$PATH
+if [ -n "${BUILD_LIBRESSL_VERSION}" -a -d "$HOME/libressl/lib" ]; then
+ echo "Testing build libressl-${BUILD_LIBRESSL_VERSION}"
+ export OPENSSL_DIR=${HOME}/libressl
+ export PATH="${HOME}/libressl/bin:${PATH}"
+
+elif [ -n "${BUILD_OPENSSL_VERSION}" -a -d "$HOME/openssl/lib" ]; then
+ echo "Testing build openssl-${BUILD_LIBRESSL_VERSION}"
+ export OPENSSL_DIR="${HOME}/openssl"
+ export PATH="${HOME}/openssl/bin:${PATH}"
fi
if [ "$TARGET" == "arm-unknown-linux-gnueabihf" ]; then
FLAGS="--no-run"
fi
-cargo run --manifest-path systest/Cargo.toml --target $TARGET
+cargo run --manifest-path systest/Cargo.toml --target $TARGET -v
exec cargo test --manifest-path openssl/Cargo.toml --target $TARGET \
- --features "$FEATURES" $FLAGS
+ --features "$FEATURES" -v $FLAGS