boring_sys/
lib.rs

1#![allow(
2    clippy::missing_safety_doc,
3    clippy::redundant_static_lifetimes,
4    clippy::too_many_arguments,
5    clippy::unreadable_literal,
6    clippy::upper_case_acronyms,
7    improper_ctypes,
8    non_camel_case_types,
9    non_snake_case,
10    non_upper_case_globals,
11    unused_imports
12)]
13#![cfg_attr(docsrs, feature(doc_auto_cfg))]
14
15use std::convert::TryInto;
16use std::ffi::c_void;
17use std::os::raw::{c_char, c_int, c_uint, c_ulong};
18
19#[allow(
20    clippy::useless_transmute,
21    clippy::derive_partial_eq_without_eq,
22    clippy::ptr_offset_with_cast,
23    unpredictable_function_pointer_comparisons, // TODO: remove Eq/PartialEq in v5
24    dead_code
25)]
26mod generated {
27    include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
28}
29pub use generated::*;
30
31#[cfg(target_pointer_width = "64")]
32pub type BN_ULONG = u64;
33#[cfg(target_pointer_width = "32")]
34pub type BN_ULONG = u32;
35
36#[must_use]
37pub const fn ERR_PACK(l: c_int, f: c_int, r: c_int) -> c_ulong {
38    ((l as c_ulong & 0x0FF) << 24) | ((f as c_ulong & 0xFFF) << 12) | (r as c_ulong & 0xFFF)
39}
40
41#[must_use]
42pub const fn ERR_GET_LIB(l: c_uint) -> c_int {
43    ((l >> 24) & 0x0FF) as c_int
44}
45
46#[must_use]
47pub const fn ERR_GET_FUNC(l: c_uint) -> c_int {
48    ((l >> 12) & 0xFFF) as c_int
49}
50
51#[must_use]
52pub const fn ERR_GET_REASON(l: c_uint) -> c_int {
53    (l & 0xFFF) as c_int
54}
55
56pub fn init() {
57    unsafe {
58        CRYPTO_library_init();
59    }
60}