MCPcopy Index your code
hub / github.com/RustPython/RustPython / load_client_ca_list

Function load_client_ca_list

crates/stdlib/src/openssl.rs:4020–4068  ·  view source on GitHub ↗
(
            vm: &VirtualMachine,
            b: &mut SslContextBuilder,
        )

Source from the content-addressed store, hash-verified

4018 static CERT_DIR: &'static str = "/system/etc/security/cacerts";
4019
4020 pub(super) fn load_client_ca_list(
4021 vm: &VirtualMachine,
4022 b: &mut SslContextBuilder,
4023 ) -> Result<(), PyBaseExceptionRef> {
4024 let root = Path::new(CERT_DIR);
4025 if !root.is_dir() {
4026 return Err(vm
4027 .new_os_subtype_error(
4028 vm.ctx.exceptions.file_not_found_error.to_owned(),
4029 None,
4030 CERT_DIR.to_string(),
4031 )
4032 .upcast());
4033 }
4034
4035 let mut combined_pem = String::new();
4036 let entries = read_dir(root)
4037 .map_err(|err| vm.new_os_error(format!("read cert root: {}", err)))?;
4038 for entry in entries {
4039 let entry =
4040 entry.map_err(|err| vm.new_os_error(format!("iter cert root: {}", err)))?;
4041
4042 let path = entry.path();
4043 if !path.is_file() {
4044 continue;
4045 }
4046
4047 File::open(&path)
4048 .and_then(|mut file| file.read_to_string(&mut combined_pem))
4049 .map_err(|err| {
4050 vm.new_os_error(format!("open cert file {}: {}", path.display(), err))
4051 })?;
4052
4053 combined_pem.push('\n');
4054 }
4055
4056 let mut store_b =
4057 X509StoreBuilder::new().map_err(|err| convert_openssl_error(vm, err))?;
4058 let x509_vec = X509::stack_from_pem(combined_pem.as_bytes())
4059 .map_err(|err| convert_openssl_error(vm, err))?;
4060 for x509 in x509_vec {
4061 store_b
4062 .add_cert(x509)
4063 .map_err(|err| convert_openssl_error(vm, err))?;
4064 }
4065 b.set_cert_store(store_b.build());
4066
4067 Ok(())
4068 }
4069 }
4070}
4071

Callers 1

py_newMethod · 0.85

Calls 15

newFunction · 0.85
convert_openssl_errorFunction · 0.85
upcastMethod · 0.80
new_os_subtype_errorMethod · 0.80
to_stringMethod · 0.80
new_os_errorMethod · 0.80
ErrClass · 0.50
openFunction · 0.50
is_dirMethod · 0.45
to_ownedMethod · 0.45
pathMethod · 0.45
is_fileMethod · 0.45

Tested by

no test coverage detected