use crate::cvt_p; use crate::error::ErrorStack; use foreign_types::ForeignType; use openssl_macros::corresponds; foreign_type_and_impl_send_sync! { type CType = ffi::OSSL_LIB_CTX; fn drop = ffi::OSSL_LIB_CTX_free; pub struct LibCtx; pub struct LibCtxRef; } impl LibCtx { #[corresponds(OSSL_LIB_CTX_new)] pub fn new() -> Result { unsafe { let ptr = cvt_p(ffi::OSSL_LIB_CTX_new())?; Ok(LibCtx::from_ptr(ptr)) } } }