1 | use crate::cvt_p; |
2 | use crate::error::ErrorStack; |
3 | use foreign_types::ForeignType; |
4 | use openssl_macros::corresponds; |
5 | |
6 | foreign_type_and_impl_send_sync! { |
7 | type CType = ffi::OSSL_LIB_CTX; |
8 | fn drop = ffi::OSSL_LIB_CTX_free; |
9 | |
10 | pub struct LibCtx; |
11 | pub struct LibCtxRef; |
12 | } |
13 | |
14 | impl LibCtx { |
15 | #[corresponds (OSSL_LIB_CTX_new)] |
16 | pub fn new() -> Result<Self, ErrorStack> { |
17 | unsafe { |
18 | let ptr: *mut OSSL_LIB_CTX = cvt_p(ffi::OSSL_LIB_CTX_new())?; |
19 | Ok(LibCtx::from_ptr(ptr)) |
20 | } |
21 | } |
22 | } |
23 | |