diff options
| author | Steven Fackler <[email protected]> | 2016-12-22 11:59:19 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-12-22 11:59:19 -0500 |
| commit | 7e035a7fd1a39a5f5e4d7fa79da544433fa80684 (patch) | |
| tree | eaf669ef88f063ba0872f86d1f4f1100d2946f06 /openssl | |
| parent | Merge pull request #539 from alexcrichton/zero-write (diff) | |
| parent | Add Travis build against LibreSSL (diff) | |
| download | rust-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.rs | 4 | ||||
| -rw-r--r-- | openssl/src/ssl/mod.rs | 3 | ||||
| -rw-r--r-- | openssl/src/ssl/tests/mod.rs | 8 | ||||
| -rw-r--r-- | openssl/src/version.rs | 7 | ||||
| -rwxr-xr-x | openssl/test/build.sh | 48 | ||||
| -rwxr-xr-x | openssl/test/run.sh | 16 |
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 |