diff options
| author | Steven Fackler <[email protected]> | 2016-10-28 22:14:44 -0700 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2016-10-28 22:14:44 -0700 |
| commit | 1a288da86ce1ca94b5a0b3eac8750e5ffd03e8e7 (patch) | |
| tree | 27c0f2860926b0182efea1355c0dfccbd02d9abb /openssl/src/verify.rs | |
| parent | Remove private field in ParsedPkcs12 (diff) | |
| download | rust-openssl-1a288da86ce1ca94b5a0b3eac8750e5ffd03e8e7.tar.xz rust-openssl-1a288da86ce1ca94b5a0b3eac8750e5ffd03e8e7.zip | |
Make verification unconditionally exposed internally
Diffstat (limited to 'openssl/src/verify.rs')
| -rw-r--r-- | openssl/src/verify.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/openssl/src/verify.rs b/openssl/src/verify.rs new file mode 100644 index 00000000..77095edc --- /dev/null +++ b/openssl/src/verify.rs @@ -0,0 +1,51 @@ +//! X509 certificate verification +//! +//! Requires the `v102` or `v110` features and OpenSSL 1.0.2 or 1.1.0. + +use libc::c_uint; +use ffi; + +use cvt; +use error::ErrorStack; +use opaque::Opaque; + +bitflags! { + pub flags X509CheckFlags: c_uint { + const X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT = ffi::X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT, + const X509_CHECK_FLAG_NO_WILDCARDS = ffi::X509_CHECK_FLAG_NO_WILDCARDS, + const X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS = ffi::X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS, + const X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS = ffi::X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS, + const X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS + = ffi::X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS, + /// Requires the `v110` feature and OpenSSL 1.1.0. + #[cfg(all(feature = "v110", ossl110))] + const X509_CHECK_FLAG_NEVER_CHECK_SUBJECT = ffi::X509_CHECK_FLAG_NEVER_CHECK_SUBJECT, + } +} + +pub struct X509VerifyParamRef(Opaque); + +impl X509VerifyParamRef { + pub unsafe fn from_ptr_mut<'a>(ptr: *mut ffi::X509_VERIFY_PARAM) -> &'a mut X509VerifyParamRef { + &mut *(ptr as *mut _) + } + + pub fn as_ptr(&self) -> *mut ffi::X509_VERIFY_PARAM { + self as *const _ as *mut _ + } + + pub fn set_hostflags(&mut self, hostflags: X509CheckFlags) { + unsafe { + ffi::X509_VERIFY_PARAM_set_hostflags(self.as_ptr(), hostflags.bits); + } + } + + pub fn set_host(&mut self, host: &str) -> Result<(), ErrorStack> { + unsafe { + cvt(ffi::X509_VERIFY_PARAM_set1_host(self.as_ptr(), + host.as_ptr() as *const _, + host.len())) + .map(|_| ()) + } + } +} |