1 use core_foundation_sys::base::CFTypeID; 2 use core_foundation_sys::base::OSStatus; 3 use core_foundation_sys::dictionary::CFDictionaryRef; 4 use core_foundation_sys::string::CFStringRef; 5 use core_foundation_sys::url::CFURLRef; 6 7 pub enum OpaqueSecRequirementRef {} 8 pub type SecRequirementRef = *mut OpaqueSecRequirementRef; 9 10 pub enum OpaqueSecCodeRef {} 11 pub type SecCodeRef = *mut OpaqueSecCodeRef; 12 13 pub enum OpaqueSecStaticCodeRef {} 14 pub type SecStaticCodeRef = *mut OpaqueSecStaticCodeRef; 15 16 pub type SecCSFlags = u32; 17 pub const kSecCSCheckAllArchitectures: SecCSFlags = 1 << 0; 18 pub const kSecCSDoNotValidateExecutable: SecCSFlags = 1 << 1; 19 pub const kSecCSDoNotValidateResources: SecCSFlags = 1 << 2; 20 pub const kSecCSBasicValidateOnly: SecCSFlags = 21 kSecCSDoNotValidateExecutable | kSecCSDoNotValidateResources; 22 pub const kSecCSCheckNestedCode: SecCSFlags = 1 << 3; 23 pub const kSecCSStrictValidate: SecCSFlags = 1 << 4; 24 pub const kSecCSFullReport: SecCSFlags = 1 << 5; 25 pub const kSecCSCheckGatekeeperArchitectures: SecCSFlags = (1 << 6) | kSecCSCheckAllArchitectures; 26 pub const kSecCSRestrictSymlinks: SecCSFlags = 1 << 7; 27 pub const kSecCSRestrictToAppLike: SecCSFlags = 1 << 8; 28 pub const kSecCSRestrictSidebandData: SecCSFlags = 1 << 9; 29 pub const kSecCSUseSoftwareSigningCert: SecCSFlags = 1 << 10; 30 pub const kSecCSValidatePEH: SecCSFlags = 1 << 11; 31 pub const kSecCSSingleThreaded: SecCSFlags = 1 << 12; 32 // 13 - 15 are unused 33 // This is only available in macOS 11.3: 34 // pub const kSecCSAllowNetworkAccess: SecCSFlags = 1 << 16; 35 // 17 - 25 are unused 36 pub const kSecCSQuickCheck: SecCSFlags = 1 << 26; 37 pub const kSecCSCheckTrustedAnchors: SecCSFlags = 1 << 27; 38 pub const kSecCSReportProgress: SecCSFlags = 1 << 28; 39 pub const kSecCSNoNetworkAccess: SecCSFlags = 1 << 29; 40 pub const kSecCSEnforceRevocationChecks: SecCSFlags = 1 << 30; 41 pub const kSecCSConsiderExpiration: SecCSFlags = 1 << 31; 42 43 extern "C" { 44 pub static kSecGuestAttributeArchitecture: CFStringRef; 45 pub static kSecGuestAttributeAudit: CFStringRef; 46 pub static kSecGuestAttributeCanonical: CFStringRef; 47 pub static kSecGuestAttributeDynamicCode: CFStringRef; 48 pub static kSecGuestAttributeDynamicCodeInfoPlist: CFStringRef; 49 pub static kSecGuestAttributeHash: CFStringRef; 50 pub static kSecGuestAttributeMachPort: CFStringRef; 51 pub static kSecGuestAttributePid: CFStringRef; 52 pub static kSecGuestAttributeSubarchitecture: CFStringRef; 53 SecCodeGetTypeID() -> CFTypeID54 pub fn SecCodeGetTypeID() -> CFTypeID; SecStaticCodeGetTypeID() -> CFTypeID55 pub fn SecStaticCodeGetTypeID() -> CFTypeID; SecRequirementGetTypeID() -> CFTypeID56 pub fn SecRequirementGetTypeID() -> CFTypeID; 57 SecCodeCheckValidity( code: SecCodeRef, flags: SecCSFlags, requirement: SecRequirementRef, ) -> OSStatus58 pub fn SecCodeCheckValidity( 59 code: SecCodeRef, 60 flags: SecCSFlags, 61 requirement: SecRequirementRef, 62 ) -> OSStatus; 63 SecCodeCopyGuestWithAttributes( host: SecCodeRef, attrs: CFDictionaryRef, flags: SecCSFlags, guest: *mut SecCodeRef, ) -> OSStatus64 pub fn SecCodeCopyGuestWithAttributes( 65 host: SecCodeRef, 66 attrs: CFDictionaryRef, 67 flags: SecCSFlags, 68 guest: *mut SecCodeRef, 69 ) -> OSStatus; 70 SecCodeCopyPath( code: SecStaticCodeRef, flags: SecCSFlags, path: *mut CFURLRef, ) -> OSStatus71 pub fn SecCodeCopyPath( 72 code: SecStaticCodeRef, 73 flags: SecCSFlags, 74 path: *mut CFURLRef, 75 ) -> OSStatus; 76 SecCodeCopySelf(flags: SecCSFlags, out: *mut SecCodeRef) -> OSStatus77 pub fn SecCodeCopySelf(flags: SecCSFlags, out: *mut SecCodeRef) -> OSStatus; 78 SecRequirementCreateWithString( text: CFStringRef, flags: SecCSFlags, requirement: *mut SecRequirementRef, ) -> OSStatus79 pub fn SecRequirementCreateWithString( 80 text: CFStringRef, 81 flags: SecCSFlags, 82 requirement: *mut SecRequirementRef, 83 ) -> OSStatus; 84 SecStaticCodeCheckValidity( code: SecStaticCodeRef, flags: SecCSFlags, requirement: SecRequirementRef, ) -> OSStatus85 pub fn SecStaticCodeCheckValidity( 86 code: SecStaticCodeRef, 87 flags: SecCSFlags, 88 requirement: SecRequirementRef, 89 ) -> OSStatus; 90 SecStaticCodeCreateWithPath( path: CFURLRef, flags: SecCSFlags, code: *mut SecStaticCodeRef, ) -> OSStatus91 pub fn SecStaticCodeCreateWithPath( 92 path: CFURLRef, 93 flags: SecCSFlags, 94 code: *mut SecStaticCodeRef, 95 ) -> OSStatus; 96 } 97