commit
a9b9f818a1
|
|
@ -291,7 +291,7 @@ workflows:
|
||||||
name: x86_64-libressl-2.9
|
name: x86_64-libressl-2.9
|
||||||
target: x86_64-unknown-linux-gnu
|
target: x86_64-unknown-linux-gnu
|
||||||
library: libressl
|
library: libressl
|
||||||
version: 2.9.0
|
version: 2.9.1
|
||||||
- macos:
|
- macos:
|
||||||
name: macos
|
name: macos
|
||||||
- macos:
|
- macos:
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ pub fn get(openssl_version: Option<u64>, libressl_version: Option<u64>) -> Vec<&
|
||||||
if libressl_version >= 0x2_07_00_00_0 {
|
if libressl_version >= 0x2_07_00_00_0 {
|
||||||
cfgs.push("libressl270");
|
cfgs.push("libressl270");
|
||||||
}
|
}
|
||||||
|
if libressl_version >= 0x2_07_01_00_0 {
|
||||||
|
cfgs.push("libressl271");
|
||||||
|
}
|
||||||
if libressl_version >= 0x2_07_03_00_0 {
|
if libressl_version >= 0x2_07_03_00_0 {
|
||||||
cfgs.push("libressl273");
|
cfgs.push("libressl273");
|
||||||
}
|
}
|
||||||
|
|
@ -22,6 +25,9 @@ pub fn get(openssl_version: Option<u64>, libressl_version: Option<u64>) -> Vec<&
|
||||||
if libressl_version >= 0x2_08_01_00_0 {
|
if libressl_version >= 0x2_08_01_00_0 {
|
||||||
cfgs.push("libressl281");
|
cfgs.push("libressl281");
|
||||||
}
|
}
|
||||||
|
if libressl_version >= 0x2_09_01_00_0 {
|
||||||
|
cfgs.push("libressl291");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
let openssl_version = openssl_version.unwrap();
|
let openssl_version = openssl_version.unwrap();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,7 @@ See rust-openssl README for more information:
|
||||||
(8, 1) => ('8', '1'),
|
(8, 1) => ('8', '1'),
|
||||||
(8, _) => ('8', 'x'),
|
(8, _) => ('8', 'x'),
|
||||||
(9, 0) => ('9', '0'),
|
(9, 0) => ('9', '0'),
|
||||||
|
(9, _) => ('9', 'x'),
|
||||||
_ => version_error(),
|
_ => version_error(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -239,7 +240,7 @@ fn version_error() -> ! {
|
||||||
"
|
"
|
||||||
|
|
||||||
This crate is only compatible with OpenSSL 1.0.1 through 1.1.1, or LibreSSL 2.5
|
This crate is only compatible with OpenSSL 1.0.1 through 1.1.1, or LibreSSL 2.5
|
||||||
through 2.9.0, but a different version of OpenSSL was found. The build is now aborting
|
through 2.9.x, but a different version of OpenSSL was found. The build is now aborting
|
||||||
due to this version mismatch.
|
due to this version mismatch.
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,13 @@ cfg_if! {
|
||||||
if #[cfg(ossl110)] {
|
if #[cfg(ossl110)] {
|
||||||
pub const CRYPTO_EX_INDEX_SSL: c_int = 0;
|
pub const CRYPTO_EX_INDEX_SSL: c_int = 0;
|
||||||
pub const CRYPTO_EX_INDEX_SSL_CTX: c_int = 1;
|
pub const CRYPTO_EX_INDEX_SSL_CTX: c_int = 1;
|
||||||
|
} else if #[cfg(libressl)] {
|
||||||
|
pub const CRYPTO_EX_INDEX_SSL: c_int = 1;
|
||||||
|
pub const CRYPTO_EX_INDEX_SSL_CTX: c_int = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cfg_if! {
|
||||||
|
if #[cfg(any(ossl110, libressl271))] {
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn OpenSSL_version_num() -> c_ulong;
|
pub fn OpenSSL_version_num() -> c_ulong;
|
||||||
pub fn OpenSSL_version(key: c_int) -> *const c_char;
|
pub fn OpenSSL_version(key: c_int) -> *const c_char;
|
||||||
|
|
@ -64,7 +70,7 @@ pub type CRYPTO_EX_free = unsafe extern "C" fn(
|
||||||
argp: *mut c_void,
|
argp: *mut c_void,
|
||||||
);
|
);
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#[cfg(ossl110)]
|
#[cfg(any(ossl110, libressl))]
|
||||||
pub fn CRYPTO_get_ex_new_index(
|
pub fn CRYPTO_get_ex_new_index(
|
||||||
class_index: c_int,
|
class_index: c_int,
|
||||||
argl: c_long,
|
argl: c_long,
|
||||||
|
|
|
||||||
|
|
@ -1057,7 +1057,7 @@ extern "C" {
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg_if! {
|
cfg_if! {
|
||||||
if #[cfg(ossl110)] {
|
if #[cfg(any(ossl110, libressl291))] {
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn TLS_method() -> *const SSL_METHOD;
|
pub fn TLS_method() -> *const SSL_METHOD;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,10 @@ fn main() {
|
||||||
println!("cargo:rustc-cfg=libressl270");
|
println!("cargo:rustc-cfg=libressl270");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if version >= 0x2_07_01_00_0 {
|
||||||
|
println!("cargo:rustc-cfg=libressl271");
|
||||||
|
}
|
||||||
|
|
||||||
if version >= 0x2_07_03_00_0 {
|
if version >= 0x2_07_03_00_0 {
|
||||||
println!("cargo:rustc-cfg=libressl273");
|
println!("cargo:rustc-cfg=libressl273");
|
||||||
}
|
}
|
||||||
|
|
@ -53,5 +57,9 @@ fn main() {
|
||||||
if version >= 0x2_08_00_00_0 {
|
if version >= 0x2_08_00_00_0 {
|
||||||
println!("cargo:rustc-cfg=libressl280");
|
println!("cargo:rustc-cfg=libressl280");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if version >= 0x2_09_01_00_0 {
|
||||||
|
println!("cargo:rustc-cfg=libressl291");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3831,9 +3831,14 @@ cfg_if! {
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg_if! {
|
cfg_if! {
|
||||||
if #[cfg(ossl110)] {
|
if #[cfg(any(ossl110, libressl291))] {
|
||||||
use ffi::{TLS_method, DTLS_method};
|
use ffi::{TLS_method, DTLS_method};
|
||||||
|
} else {
|
||||||
|
use ffi::{SSLv23_method as TLS_method, DTLSv1_method as DTLS_method};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cfg_if! {
|
||||||
|
if #[cfg(ossl110)] {
|
||||||
unsafe fn get_new_idx(f: ffi::CRYPTO_EX_free) -> c_int {
|
unsafe fn get_new_idx(f: ffi::CRYPTO_EX_free) -> c_int {
|
||||||
ffi::CRYPTO_get_ex_new_index(
|
ffi::CRYPTO_get_ex_new_index(
|
||||||
ffi::CRYPTO_EX_INDEX_SSL_CTX,
|
ffi::CRYPTO_EX_INDEX_SSL_CTX,
|
||||||
|
|
@ -3856,8 +3861,6 @@ cfg_if! {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
use ffi::{SSLv23_method as TLS_method, DTLSv1_method as DTLS_method};
|
|
||||||
|
|
||||||
unsafe fn get_new_idx(f: ffi::CRYPTO_EX_free) -> c_int {
|
unsafe fn get_new_idx(f: ffi::CRYPTO_EX_free) -> c_int {
|
||||||
ffi::SSL_CTX_get_ex_new_index(0, ptr::null_mut(), None, None, Some(f))
|
ffi::SSL_CTX_get_ex_new_index(0, ptr::null_mut(), None, None, Some(f))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -306,6 +306,7 @@ fn state() {
|
||||||
/// lists of supported protocols have an overlap -- with only ONE protocol
|
/// lists of supported protocols have an overlap -- with only ONE protocol
|
||||||
/// being valid for both.
|
/// being valid for both.
|
||||||
#[test]
|
#[test]
|
||||||
|
#[cfg_attr(libressl291, ignore)]
|
||||||
fn test_connect_with_srtp_ctx() {
|
fn test_connect_with_srtp_ctx() {
|
||||||
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
|
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
|
||||||
let addr = listener.local_addr().unwrap();
|
let addr = listener.local_addr().unwrap();
|
||||||
|
|
@ -362,6 +363,7 @@ fn test_connect_with_srtp_ctx() {
|
||||||
/// lists of supported protocols have an overlap -- with only ONE protocol
|
/// lists of supported protocols have an overlap -- with only ONE protocol
|
||||||
/// being valid for both.
|
/// being valid for both.
|
||||||
#[test]
|
#[test]
|
||||||
|
#[cfg_attr(libressl291, ignore)]
|
||||||
fn test_connect_with_srtp_ssl() {
|
fn test_connect_with_srtp_ssl() {
|
||||||
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
|
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
|
||||||
let addr = listener.local_addr().unwrap();
|
let addr = listener.local_addr().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
|
||||||
cfg_if! {
|
cfg_if! {
|
||||||
if #[cfg(ossl110)] {
|
if #[cfg(any(ossl110, libressl271))] {
|
||||||
use ffi::{
|
use ffi::{
|
||||||
OPENSSL_VERSION, OPENSSL_CFLAGS, OPENSSL_BUILT_ON, OPENSSL_PLATFORM, OPENSSL_DIR,
|
OPENSSL_VERSION, OPENSSL_CFLAGS, OPENSSL_BUILT_ON, OPENSSL_PLATFORM, OPENSSL_DIR,
|
||||||
OpenSSL_version_num, OpenSSL_version,
|
OpenSSL_version_num, OpenSSL_version,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue