From 01cc521c7ee12fb2a907b7b83e372974c3f7c2bf Mon Sep 17 00:00:00 2001 From: Theo Buehler Date: Sat, 21 Oct 2023 00:24:12 +0200 Subject: [PATCH] Enable SHA-3 for LibreSSL 3.8.0 --- openssl-sys/build/cfgs.rs | 3 +++ openssl-sys/src/handwritten/evp.rs | 8 ++++---- openssl-sys/src/obj_mac.rs | 8 ++++++++ openssl/build.rs | 3 +++ openssl/src/hash.rs | 16 ++++++++-------- openssl/src/md.rs | 8 ++++---- openssl/src/nid.rs | 8 ++++---- 7 files changed, 34 insertions(+), 20 deletions(-) diff --git a/openssl-sys/build/cfgs.rs b/openssl-sys/build/cfgs.rs index ac7fe28596..2454ef66a4 100644 --- a/openssl-sys/build/cfgs.rs +++ b/openssl-sys/build/cfgs.rs @@ -53,6 +53,9 @@ pub fn get(openssl_version: Option, libressl_version: Option) -> Vec<& if libressl_version >= 0x3_07_00_00_0 { cfgs.push("libressl370"); } + if libressl_version >= 0x3_08_00_00_0 { + cfgs.push("libressl380"); + } if libressl_version >= 0x3_08_01_00_0 { cfgs.push("libressl381"); } diff --git a/openssl-sys/src/handwritten/evp.rs b/openssl-sys/src/handwritten/evp.rs index 5a112fe8a1..87deae2ac9 100644 --- a/openssl-sys/src/handwritten/evp.rs +++ b/openssl-sys/src/handwritten/evp.rs @@ -294,13 +294,13 @@ extern "C" { pub fn EVP_sha256() -> *const EVP_MD; pub fn EVP_sha384() -> *const EVP_MD; pub fn EVP_sha512() -> *const EVP_MD; - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub fn EVP_sha3_224() -> *const EVP_MD; - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub fn EVP_sha3_256() -> *const EVP_MD; - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub fn EVP_sha3_384() -> *const EVP_MD; - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub fn EVP_sha3_512() -> *const EVP_MD; #[cfg(ossl111)] pub fn EVP_shake128() -> *const EVP_MD; diff --git a/openssl-sys/src/obj_mac.rs b/openssl-sys/src/obj_mac.rs index 1b24c3cbd8..93aa5cdff9 100644 --- a/openssl-sys/src/obj_mac.rs +++ b/openssl-sys/src/obj_mac.rs @@ -976,12 +976,20 @@ pub const NID_sm4_ctr: c_int = 1139; pub const NID_sm4_ctr: c_int = 979; #[cfg(ossl111)] pub const NID_sha3_224: c_int = 1096; +#[cfg(libressl380)] +pub const NID_sha3_224: c_int = 1031; #[cfg(ossl111)] pub const NID_sha3_256: c_int = 1097; +#[cfg(libressl380)] +pub const NID_sha3_256: c_int = 1032; #[cfg(ossl111)] pub const NID_sha3_384: c_int = 1098; +#[cfg(libressl380)] +pub const NID_sha3_384: c_int = 1033; #[cfg(ossl111)] pub const NID_sha3_512: c_int = 1099; +#[cfg(libressl380)] +pub const NID_sha3_512: c_int = 1034; #[cfg(ossl111)] pub const NID_shake128: c_int = 1100; #[cfg(ossl111)] diff --git a/openssl/build.rs b/openssl/build.rs index 4a5b6289ae..93ef534d27 100644 --- a/openssl/build.rs +++ b/openssl/build.rs @@ -66,6 +66,9 @@ fn main() { if version >= 0x3_07_00_00_0 { println!("cargo:rustc-cfg=libressl370"); } + if version >= 0x3_08_00_00_0 { + println!("cargo:rustc-cfg=libressl380"); + } } if let Ok(vars) = env::var("DEP_OPENSSL_CONF") { diff --git a/openssl/src/hash.rs b/openssl/src/hash.rs index 7592758101..9fa9ef3e37 100644 --- a/openssl/src/hash.rs +++ b/openssl/src/hash.rs @@ -127,22 +127,22 @@ impl MessageDigest { unsafe { MessageDigest(ffi::EVP_sha512()) } } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub fn sha3_224() -> MessageDigest { unsafe { MessageDigest(ffi::EVP_sha3_224()) } } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub fn sha3_256() -> MessageDigest { unsafe { MessageDigest(ffi::EVP_sha3_256()) } } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub fn sha3_384() -> MessageDigest { unsafe { MessageDigest(ffi::EVP_sha3_384()) } } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub fn sha3_512() -> MessageDigest { unsafe { MessageDigest(ffi::EVP_sha3_512()) } } @@ -624,7 +624,7 @@ mod tests { ); } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] #[test] fn test_sha3_224() { let tests = [( @@ -644,7 +644,7 @@ mod tests { ); } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] #[test] fn test_sha3_256() { let tests = [( @@ -664,7 +664,7 @@ mod tests { ); } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] #[test] fn test_sha3_384() { let tests = [("416c6c20796f75722062617365206172652062656c6f6e6720746f207573", @@ -684,7 +684,7 @@ mod tests { ); } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] #[test] fn test_sha3_512() { let tests = [("416c6c20796f75722062617365206172652062656c6f6e6720746f207573", diff --git a/openssl/src/md.rs b/openssl/src/md.rs index 8f191afebe..08e4aacf3e 100644 --- a/openssl/src/md.rs +++ b/openssl/src/md.rs @@ -150,25 +150,25 @@ impl Md { unsafe { MdRef::from_ptr(ffi::EVP_sha512() as *mut _) } } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] #[inline] pub fn sha3_224() -> &'static MdRef { unsafe { MdRef::from_ptr(ffi::EVP_sha3_224() as *mut _) } } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] #[inline] pub fn sha3_256() -> &'static MdRef { unsafe { MdRef::from_ptr(ffi::EVP_sha3_256() as *mut _) } } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] #[inline] pub fn sha3_384() -> &'static MdRef { unsafe { MdRef::from_ptr(ffi::EVP_sha3_384() as *mut _) } } - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] #[inline] pub fn sha3_512() -> &'static MdRef { unsafe { MdRef::from_ptr(ffi::EVP_sha3_512() as *mut _) } diff --git a/openssl/src/nid.rs b/openssl/src/nid.rs index 91fcdeca9d..a78d0e660c 100644 --- a/openssl/src/nid.rs +++ b/openssl/src/nid.rs @@ -1078,13 +1078,13 @@ impl Nid { pub const SM2: Nid = Nid(ffi::NID_sm2); #[cfg(any(ossl111, libressl291))] pub const SM3: Nid = Nid(ffi::NID_sm3); - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub const SHA3_224: Nid = Nid(ffi::NID_sha3_224); - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub const SHA3_256: Nid = Nid(ffi::NID_sha3_256); - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub const SHA3_384: Nid = Nid(ffi::NID_sha3_384); - #[cfg(ossl111)] + #[cfg(any(ossl111, libressl380))] pub const SHA3_512: Nid = Nid(ffi::NID_sha3_512); #[cfg(ossl111)] pub const SHAKE128: Nid = Nid(ffi::NID_shake128);