apple_security_framework_sys/
trust.rs1use core_foundation_sys::array::CFArrayRef;
2use core_foundation_sys::base::Boolean;
3use core_foundation_sys::base::CFIndex;
4use core_foundation_sys::base::CFTypeID;
5use core_foundation_sys::base::CFTypeRef;
6use core_foundation_sys::base::OSStatus;
7use core_foundation_sys::date::CFDateRef;
8#[cfg(any(feature = "OSX_10_13", target_os = "ios"))]
9use core_foundation_sys::error::CFErrorRef;
10
11use crate::base::SecCertificateRef;
12use crate::base::SecKeyRef;
13
14pub type SecTrustResultType = u32;
15
16pub const kSecTrustResultInvalid: SecTrustResultType = 0;
17pub const kSecTrustResultProceed: SecTrustResultType = 1;
18pub const kSecTrustResultDeny: SecTrustResultType = 3;
19pub const kSecTrustResultUnspecified: SecTrustResultType = 4;
20pub const kSecTrustResultRecoverableTrustFailure: SecTrustResultType = 5;
21pub const kSecTrustResultFatalTrustFailure: SecTrustResultType = 6;
22pub const kSecTrustResultOtherError: SecTrustResultType = 7;
23
24#[cfg(target_os = "macos")]
25mod flags {
26 pub type SecTrustOptionFlags = u32;
27
28 pub const kSecTrustOptionAllowExpired: SecTrustOptionFlags = 0x0000_0001;
29 pub const kSecTrustOptionLeafIsCA: SecTrustOptionFlags = 0x0000_0002;
30 pub const kSecTrustOptionFetchIssuerFromNet: SecTrustOptionFlags = 0x0000_0004;
31 pub const kSecTrustOptionAllowExpiredRoot: SecTrustOptionFlags = 0x0000_0008;
32 pub const kSecTrustOptionRequireRevPerCert: SecTrustOptionFlags = 0x0000_0010;
33 pub const kSecTrustOptionUseTrustSettings: SecTrustOptionFlags = 0x0000_0020;
34 pub const kSecTrustOptionImplicitAnchors: SecTrustOptionFlags = 0x0000_0040;
35}
36
37#[cfg(target_os = "macos")]
38pub use flags::*;
39
40pub enum __SecTrust {}
41
42pub type SecTrustRef = *mut __SecTrust;
43
44extern "C" {
45 pub fn SecTrustGetTypeID() -> CFTypeID;
46 pub fn SecTrustGetCertificateCount(trust: SecTrustRef) -> CFIndex;
47 #[deprecated(note = "deprecated by Apple")]
48 pub fn SecTrustGetCertificateAtIndex(trust: SecTrustRef, ix: CFIndex) -> SecCertificateRef;
49 pub fn SecTrustSetVerifyDate(trust: SecTrustRef, verifyDate: CFDateRef) -> OSStatus;
50 pub fn SecTrustSetAnchorCertificates(
51 trust: SecTrustRef,
52 anchorCertificates: CFArrayRef,
53 ) -> OSStatus;
54 pub fn SecTrustSetAnchorCertificatesOnly(
55 trust: SecTrustRef,
56 anchorCertificatesOnly: Boolean,
57 ) -> OSStatus;
58 #[cfg(target_os = "macos")]
59 pub fn SecTrustCopyAnchorCertificates(anchors: *mut CFArrayRef) -> OSStatus;
60 #[deprecated(note = "deprecated by Apple")]
61 pub fn SecTrustEvaluate(trust: SecTrustRef, result: *mut SecTrustResultType) -> OSStatus;
62 #[cfg(any(feature = "OSX_10_13", target_os = "ios"))]
64 pub fn SecTrustEvaluateWithError(trust: SecTrustRef, error: *mut CFErrorRef) -> bool;
65 pub fn SecTrustCreateWithCertificates(
66 certificates: CFTypeRef,
67 policies: CFTypeRef,
68 trust: *mut SecTrustRef,
69 ) -> OSStatus;
70 pub fn SecTrustSetPolicies(trust: SecTrustRef, policies: CFTypeRef) -> OSStatus;
71 #[cfg(target_os = "macos")]
72 pub fn SecTrustSetOptions(trust: SecTrustRef, options: SecTrustOptionFlags) -> OSStatus;
73 #[cfg(any(feature = "OSX_10_9", target_os = "ios"))]
74 pub fn SecTrustGetNetworkFetchAllowed(trust: SecTrustRef, allowFetch: *mut Boolean)
75 -> OSStatus;
76 #[cfg(any(feature = "OSX_10_9", target_os = "ios"))]
77 pub fn SecTrustSetNetworkFetchAllowed(trust: SecTrustRef, allowFetch: Boolean) -> OSStatus;
78 #[cfg(any(feature = "OSX_10_9", target_os = "ios"))]
79 pub fn SecTrustSetOCSPResponse(trust: SecTrustRef, responseData: CFTypeRef) -> OSStatus;
80 #[cfg(any(feature = "OSX_10_14", target_os = "ios"))]
81 pub fn SecTrustSetSignedCertificateTimestamps(
82 trust: SecTrustRef,
83 sctArray: CFArrayRef,
84 ) -> OSStatus;
85 pub fn SecTrustCopyPublicKey(trust: SecTrustRef) -> SecKeyRef;
86}