1 // Copyright (c) 2024 Huawei Device Co., Ltd.
2 // Licensed under the Apache License, Version 2.0 (the "License");
3 // you may not use this file except in compliance with the License.
4 // You may obtain a copy of the License at
5 //
6 //     http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13 
14 use std::ffi::{c_int, c_void};
15 
16 use crate::util::c_openssl::ffi::x509::X509_STORE_CTX;
17 use crate::util::c_openssl::foreign::ForeignRef;
18 use crate::util::c_openssl::x509::X509StoreContextRef;
19 use crate::util::config::tls::DefaultCertVerifier;
20 use crate::{CertVerifier, ServerCerts};
21 
cert_verify(ctx: *mut X509_STORE_CTX, arg: *mut c_void) -> c_int22 pub(crate) extern "C" fn cert_verify(ctx: *mut X509_STORE_CTX, arg: *mut c_void) -> c_int {
23     unsafe {
24         let verifier = &*(arg as *const DefaultCertVerifier);
25         let ctx = X509StoreContextRef::from_ptr(ctx);
26         verifier.verify(&ServerCerts::new(ctx)) as c_int
27     }
28 }
29