aws_lc_sys/
lib.rs

1// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2// SPDX-License-Identifier: Apache-2.0 OR ISC
3
4#![cfg_attr(not(clippy), allow(unexpected_cfgs))]
5#![cfg_attr(not(clippy), allow(unknown_lints))]
6
7#[allow(unused_macros)]
8macro_rules! use_bindings {
9    ($bindings:ident) => {
10        mod $bindings;
11        pub use $bindings::*;
12    };
13}
14
15macro_rules! platform_binding {
16    ($platform:ident, $platform_crypto:ident) => {
17        #[cfg(all($platform, not(feature = "ssl"), not(use_bindgen_pregenerated)))]
18        use_bindings!($platform_crypto);
19    };
20}
21
22platform_binding!(universal_prefixed, universal_prefixed_crypto);
23platform_binding!(universal, universal_crypto);
24
25platform_binding!(aarch64_linux_android, aarch64_linux_android_crypto);
26platform_binding!(aarch64_apple_darwin, aarch64_apple_darwin_crypto);
27platform_binding!(aarch64_pc_windows_msvc, aarch64_pc_windows_msvc_crypto);
28platform_binding!(aarch64_unknown_linux_gnu, aarch64_unknown_linux_gnu_crypto);
29platform_binding!(
30    aarch64_unknown_linux_musl,
31    aarch64_unknown_linux_musl_crypto
32);
33platform_binding!(i686_pc_windows_msvc, i686_pc_windows_msvc_crypto);
34platform_binding!(i686_unknown_linux_gnu, i686_unknown_linux_gnu_crypto);
35platform_binding!(
36    riscv64gc_unknown_linux_gnu,
37    riscv64gc_unknown_linux_gnu_crypto
38);
39platform_binding!(x86_64_apple_darwin, x86_64_apple_darwin_crypto);
40platform_binding!(x86_64_pc_windows_gnu, x86_64_pc_windows_gnu_crypto);
41platform_binding!(x86_64_pc_windows_msvc, x86_64_pc_windows_msvc_crypto);
42platform_binding!(x86_64_unknown_linux_gnu, x86_64_unknown_linux_gnu_crypto);
43platform_binding!(x86_64_unknown_linux_musl, x86_64_unknown_linux_musl_crypto);
44
45#[cfg(use_bindgen_pregenerated)]
46#[allow(
47    clippy::cast_lossless,
48    clippy::cast_possible_truncation,
49    clippy::cast_possible_wrap,
50    clippy::default_trait_access,
51    clippy::missing_safety_doc,
52    clippy::must_use_candidate,
53    clippy::not_unsafe_ptr_arg_deref,
54    clippy::ptr_as_ptr,
55    clippy::ptr_offset_with_cast,
56    clippy::pub_underscore_fields,
57    clippy::semicolon_if_nothing_returned,
58    clippy::too_many_lines,
59    clippy::unreadable_literal,
60    clippy::used_underscore_binding,
61    clippy::useless_transmute,
62    dead_code,
63    improper_ctypes,
64    non_camel_case_types,
65    non_snake_case,
66    non_upper_case_globals,
67    unpredictable_function_pointer_comparisons,
68    unused_imports
69)]
70mod generated {
71    include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
72}
73#[cfg(use_bindgen_pregenerated)]
74pub use generated::*;
75
76#[allow(non_snake_case)]
77#[must_use]
78pub fn ERR_GET_LIB(packed_error: u32) -> i32 {
79    unsafe { ERR_GET_LIB_RUST(packed_error) }
80}
81
82#[allow(non_snake_case)]
83#[must_use]
84pub fn ERR_GET_REASON(packed_error: u32) -> i32 {
85    unsafe { ERR_GET_REASON_RUST(packed_error) }
86}
87
88#[allow(non_snake_case)]
89#[must_use]
90pub fn ERR_GET_FUNC(packed_error: u32) -> i32 {
91    unsafe { ERR_GET_FUNC_RUST(packed_error) }
92}
93
94#[cfg(feature = "all-bindings")]
95use std::os::raw::{c_char, c_long, c_void};
96
97#[cfg(feature = "all-bindings")]
98#[allow(non_snake_case, clippy::not_unsafe_ptr_arg_deref)]
99pub fn BIO_get_mem_data(b: *mut BIO, pp: *mut *mut c_char) -> c_long {
100    unsafe { BIO_ctrl(b, BIO_CTRL_INFO, 0, pp.cast::<c_void>()) }
101}
102
103pub fn init() {
104    unsafe { CRYPTO_library_init() }
105}