summaryrefslogtreecommitdiffstats
path: root/vendor/openssl/src/conf.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:47:55 +0000
commit2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4 (patch)
tree033cc839730fda84ff08db877037977be94e5e3a /vendor/openssl/src/conf.rs
parentInitial commit. (diff)
downloadcargo-upstream.tar.xz
cargo-upstream.zip
Adding upstream version 0.70.1+ds1.upstream/0.70.1+ds1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/openssl/src/conf.rs')
-rw-r--r--vendor/openssl/src/conf.rs65
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/openssl/src/conf.rs b/vendor/openssl/src/conf.rs
new file mode 100644
index 0000000..715519c
--- /dev/null
+++ b/vendor/openssl/src/conf.rs
@@ -0,0 +1,65 @@
+//! Interface for processing OpenSSL configuration files.
+
+foreign_type_and_impl_send_sync! {
+ type CType = ffi::CONF;
+ fn drop = ffi::NCONF_free;
+
+ pub struct Conf;
+ pub struct ConfRef;
+}
+
+#[cfg(not(boringssl))]
+mod methods {
+ use super::Conf;
+ use crate::cvt_p;
+ use crate::error::ErrorStack;
+ use openssl_macros::corresponds;
+
+ pub struct ConfMethod(*mut ffi::CONF_METHOD);
+
+ impl ConfMethod {
+ /// Retrieve handle to the default OpenSSL configuration file processing function.
+ #[corresponds(NCONF_default)]
+ #[allow(clippy::should_implement_trait)]
+ pub fn default() -> ConfMethod {
+ unsafe {
+ ffi::init();
+ // `NCONF` stands for "New Conf", as described in crypto/conf/conf_lib.c. This is
+ // a newer API than the "CONF classic" functions.
+ ConfMethod(ffi::NCONF_default())
+ }
+ }
+
+ /// Construct from raw pointer.
+ ///
+ /// # Safety
+ ///
+ /// The caller must ensure that the pointer is valid.
+ pub unsafe fn from_ptr(ptr: *mut ffi::CONF_METHOD) -> ConfMethod {
+ ConfMethod(ptr)
+ }
+
+ /// Convert to raw pointer.
+ pub fn as_ptr(&self) -> *mut ffi::CONF_METHOD {
+ self.0
+ }
+ }
+
+ impl Conf {
+ /// Create a configuration parser.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use openssl::conf::{Conf, ConfMethod};
+ ///
+ /// let conf = Conf::new(ConfMethod::default());
+ /// ```
+ #[corresponds(NCONF_new)]
+ pub fn new(method: ConfMethod) -> Result<Conf, ErrorStack> {
+ unsafe { cvt_p(ffi::NCONF_new(method.as_ptr())).map(Conf) }
+ }
+ }
+}
+#[cfg(not(boringssl))]
+pub use methods::*;