apple_security_framework_sys/
trust.rs

1use 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    // it should have been OSX_10_14, but due to back-compat it can't rely on the newer feature flag
63    #[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}