Skip to content

Commit

Permalink
Use X509_PURPOSE_get_id instead of struct access
Browse files Browse the repository at this point in the history
The accessor was added at the same version as the struct, so better to
just use it. As with X509_PURPOSE_get_by_sname, it was const-corrected
later on.
  • Loading branch information
davidben committed Dec 2, 2023
1 parent efe619c commit 25606f0
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 14 deletions.
13 changes: 2 additions & 11 deletions openssl-sys/src/handwritten/x509.rs
Original file line number Diff line number Diff line change
Expand Up @@ -687,21 +687,12 @@ extern "C" {
pub fn X509_REQ_print(bio: *mut BIO, req: *mut X509_REQ) -> c_int;
}

#[repr(C)]
pub struct X509_PURPOSE {
pub purpose: c_int,
pub trust: c_int, // Default trust ID
pub flags: c_int,
pub check_purpose:
Option<unsafe extern "C" fn(*const X509_PURPOSE, *const X509, c_int) -> c_int>,
pub name: *mut c_char,
pub sname: *mut c_char,
pub usr_data: *mut c_void,
}
pub enum X509_PURPOSE {}

const_ptr_api! {
extern "C" {
pub fn X509_PURPOSE_get_by_sname(sname: #[const_ptr_if(any(ossl110, libressl280))] c_char) -> c_int;
pub fn X509_PURPOSE_get_id(purpose: #[const_ptr_if(any(ossl110, libressl280))] X509_PURPOSE) -> c_int;
}
}
extern "C" {
Expand Down
12 changes: 9 additions & 3 deletions openssl/src/x509/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2538,7 +2538,7 @@ impl X509PurposeRef {
unsafe {
let sname = CString::new(sname).unwrap();
cfg_if! {
if #[cfg(any(ossl110, libressl280))] {
if #[cfg(any(ossl110, libressl280, boringssl))] {
let purpose = cvt_n(ffi::X509_PURPOSE_get_by_sname(sname.as_ptr() as *const _))?;
} else {
let purpose = cvt_n(ffi::X509_PURPOSE_get_by_sname(sname.as_ptr() as *mut _))?;
Expand Down Expand Up @@ -2569,8 +2569,14 @@ impl X509PurposeRef {
/// - `X509_PURPOSE_TIMESTAMP_SIGN`
pub fn purpose(&self) -> X509PurposeId {
unsafe {
let x509_purpose: *mut ffi::X509_PURPOSE = self.as_ptr();
X509PurposeId::from_raw((*x509_purpose).purpose)
cfg_if! {
if #[cfg(any(ossl110, libressl280, boringssl))] {
let x509_purpose = self.as_ptr() as *const ffi::X509_PURPOSE;
} else {
let x509_purpose = self.as_ptr() as *mut ffi::X509_PURPOSE;
}
}
X509PurposeId::from_raw(ffi::X509_PURPOSE_get_id(x509_purpose))
}
}
}

0 comments on commit 25606f0

Please sign in to comment.