1fb299fa2Sopenharmony_ci/*
2fb299fa2Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
3fb299fa2Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb299fa2Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb299fa2Sopenharmony_ci * You may obtain a copy of the License at
6fb299fa2Sopenharmony_ci *
7fb299fa2Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8fb299fa2Sopenharmony_ci *
9fb299fa2Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb299fa2Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb299fa2Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fb299fa2Sopenharmony_ci * See the License for the specific language governing permissions and
13fb299fa2Sopenharmony_ci * limitations under the License.
14fb299fa2Sopenharmony_ci */
15fb299fa2Sopenharmony_ci
16fb299fa2Sopenharmony_ciuse core::ffi::{c_uchar, c_int, c_char, c_ulong, CStr, c_void};
17fb299fa2Sopenharmony_ci
18fb299fa2Sopenharmony_ci#[allow(unused)]
19fb299fa2Sopenharmony_cipub extern fn err_print_cb (err_str: *const c_char, _len: c_ulong, _u: *mut c_void) -> c_int
20fb299fa2Sopenharmony_ci{
21fb299fa2Sopenharmony_ci    println!("openssl err: {}", unsafe { CStr::from_ptr(err_str) }.to_string_lossy());
22fb299fa2Sopenharmony_ci    1 // don't abort program
23fb299fa2Sopenharmony_ci}
24fb299fa2Sopenharmony_ci
25fb299fa2Sopenharmony_ci#[link(name = "crypto_static")]
26fb299fa2Sopenharmony_ci#[allow(unused)]
27fb299fa2Sopenharmony_ciextern "C" {
28fb299fa2Sopenharmony_ci    /// evp bindings
29fb299fa2Sopenharmony_ci    pub fn EVP_DecodeBlock(t: *mut c_uchar, f: *const c_uchar, n: c_int) -> c_int;
30fb299fa2Sopenharmony_ci
31fb299fa2Sopenharmony_ci    pub fn ERR_print_errors_cb(
32fb299fa2Sopenharmony_ci        cb: extern fn(
33fb299fa2Sopenharmony_ci            err_str: *const c_char,
34fb299fa2Sopenharmony_ci            len: c_ulong,
35fb299fa2Sopenharmony_ci            u: *mut c_void
36fb299fa2Sopenharmony_ci        ) -> c_int,
37fb299fa2Sopenharmony_ci        u: *mut c_void
38fb299fa2Sopenharmony_ci    ) -> c_void;
39fb299fa2Sopenharmony_ci}
40fb299fa2Sopenharmony_ci
41fb299fa2Sopenharmony_ci/// this should be consistent with enum in log/log.h
42fb299fa2Sopenharmony_ci#[allow(unused)]
43fb299fa2Sopenharmony_cipub enum LogLevel {
44fb299fa2Sopenharmony_ci    DEBUG = 3,
45fb299fa2Sopenharmony_ci    INFO = 4,
46fb299fa2Sopenharmony_ci    WARNING = 5,
47fb299fa2Sopenharmony_ci    ERROR = 6,
48fb299fa2Sopenharmony_ci    FATAL = 7,
49fb299fa2Sopenharmony_ci}
50fb299fa2Sopenharmony_ci
51fb299fa2Sopenharmony_ci#[link(name = "updaterlog")]
52fb299fa2Sopenharmony_ciextern "C" {
53fb299fa2Sopenharmony_ci    pub fn Logger(level: c_int, file_name: *const c_char, line: i32, format: *const c_char, ...) -> c_void;
54fb299fa2Sopenharmony_ci}