The TrustSettings struct allows you to access and modify certificate trust settings within specific domains on macOS/iOS. You can iterate over certificates that have explicit trust settings in a domain and query their aggregate TLS trust status.
Domains
When creating a TrustSettings instance, specify one of the following domains:
Domain::User: Per-user trust settings.Domain::Admin: Locally administered, system-wide trust settings.Domain::System: System trust settings.
Workflow
- Create a
TrustSettings instance for a specific Domain. - Use
.iter() to discover certificates that have explicit settings in that domain. - Use
.tls_trust_settings_for_certificate(&cert) to check the aggregate trust status of a specific certificate for TLS usage.
use security_framework::trust_settings::{TrustSettings, Domain};
use security_framework::certificate::SecCertificate;
let settings = TrustSettings::new(Domain::System);
// Iterate over certificates with explicit settings in the System domain
if let Ok(iter) = settings.iter() {
for cert in iter {
match settings.tls_trust_settings_for_certificate(&cert) {
Ok(Some(status)) => println!("Cert status: {:?}", status),
Ok(None) => println!("Cert is trusted by default (e.g., in system store)"),
Err(e) => eprintln!("Error querying cert: {}", e),
}
}
}