diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 196f41f450..54e7fd2e84 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -157,6 +157,9 @@ jobs: version: bcecc7d834fc44ad257b2f23f88e1cf597ab2736 - name: openssl version: vendored + - name: openssl + version: 3.2.0-alpha1 + dl-path: / - name: openssl version: 3.1.2 dl-path: / diff --git a/openssl-sys/build/cfgs.rs b/openssl-sys/build/cfgs.rs index 34a58f7d68..8ee6f62373 100644 --- a/openssl-sys/build/cfgs.rs +++ b/openssl-sys/build/cfgs.rs @@ -59,6 +59,9 @@ pub fn get(openssl_version: Option, libressl_version: Option) -> Vec<& } else { let openssl_version = openssl_version.unwrap(); + if openssl_version >= 0x3_02_00_00_0 { + cfgs.push("ossl320"); + } if openssl_version >= 0x3_00_00_00_0 { cfgs.push("ossl300"); } diff --git a/openssl-sys/src/x509v3.rs b/openssl-sys/src/x509v3.rs index d2ff53489e..230dea1736 100644 --- a/openssl-sys/src/x509v3.rs +++ b/openssl-sys/src/x509v3.rs @@ -89,8 +89,16 @@ pub const X509_PURPOSE_CRL_SIGN: c_int = 6; pub const X509_PURPOSE_ANY: c_int = 7; pub const X509_PURPOSE_OCSP_HELPER: c_int = 8; pub const X509_PURPOSE_TIMESTAMP_SIGN: c_int = 9; +#[cfg(ossl320)] +pub const X509_PURPOSE_CODE_SIGN: c_int = 10; pub const X509_PURPOSE_MIN: c_int = 1; -pub const X509_PURPOSE_MAX: c_int = 9; +cfg_if! { + if #[cfg(ossl320)] { + pub const X509_PURPOSE_MAX: c_int = 10; + } else { + pub const X509_PURPOSE_MAX: c_int = 9; + } +} pub const CRL_REASON_UNSPECIFIED: c_int = 0; pub const CRL_REASON_KEY_COMPROMISE: c_int = 1; diff --git a/openssl/build.rs b/openssl/build.rs index 0a974b33e6..d5a7ac4039 100644 --- a/openssl/build.rs +++ b/openssl/build.rs @@ -102,6 +102,9 @@ fn main() { if version >= 0x3_01_00_00_0 { println!("cargo:rustc-cfg=ossl310"); } + if version >= 0x3_02_00_00_0 { + println!("cargo:rustc-cfg=ossl320"); + } } if let Ok(version) = env::var("DEP_OPENSSL_LIBRESSL_VERSION_NUMBER") { diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs index 24605df806..cc900e3936 100644 --- a/openssl/src/x509/mod.rs +++ b/openssl/src/x509/mod.rs @@ -2459,6 +2459,8 @@ impl X509PurposeId { pub const ANY: X509PurposeId = X509PurposeId(ffi::X509_PURPOSE_ANY); pub const OCSP_HELPER: X509PurposeId = X509PurposeId(ffi::X509_PURPOSE_OCSP_HELPER); pub const TIMESTAMP_SIGN: X509PurposeId = X509PurposeId(ffi::X509_PURPOSE_TIMESTAMP_SIGN); + #[cfg(ossl320)] + pub const CODE_SIGN: X509PurposeId = X509PurposeId(ffi::X509_PURPOSE_CODE_SIGN); /// Constructs an `X509PurposeId` from a raw OpenSSL value. pub fn from_raw(id: c_int) -> Self {