1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
use core_foundation_sys::array::CFArrayRef; use core_foundation_sys::base::{CFTypeRef, OSStatus}; use core_foundation_sys::data::CFDataRef; use core_foundation_sys::dictionary::CFDictionaryRef; use core_foundation_sys::string::CFStringRef; use std::os::raw::c_uint; use crate::base::{SecAccessRef, SecKeychainRef}; #[cfg(target_os = "macos")] pub type SecExternalFormat = u32; #[cfg(target_os = "macos")] pub type SecExternalItemType = u32; #[cfg(target_os = "macos")] pub type SecItemImportExportFlags = u32; #[cfg(target_os = "macos")] pub type SecKeyImportExportFlags = u32; #[cfg(target_os = "macos")] pub const kSecKeyImportOnlyOne: SecKeyImportExportFlags = 1; #[cfg(target_os = "macos")] pub const kSecKeySecurePassphrase: SecKeyImportExportFlags = 2; #[cfg(target_os = "macos")] pub const kSecKeyNoAccessControl: SecKeyImportExportFlags = 4; #[cfg(target_os = "macos")] pub const SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION: c_uint = 0; #[repr(C)] #[derive(Copy, Clone)] #[cfg(target_os = "macos")] pub struct SecItemImportExportKeyParameters { pub version: c_uint, pub flags: SecKeyImportExportFlags, pub passphrase: CFTypeRef, pub alertTitle: CFStringRef, pub alertPrompt: CFStringRef, pub accessRef: SecAccessRef, pub keyUsage: CFArrayRef, pub keyAttributes: CFArrayRef, } extern "C" { #[cfg(target_os = "macos")] pub fn SecItemImport( importedData: CFDataRef, fileNameOrExtension: CFStringRef, inputFormat: *mut SecExternalFormat, itemType: *mut SecExternalItemType, flags: SecItemImportExportFlags, keyParams: *const SecItemImportExportKeyParameters, importKeychain: SecKeychainRef, outItems: *mut CFArrayRef, ) -> OSStatus; #[cfg(target_os = "macos")] pub fn SecItemExport( secItemOrArray: CFTypeRef, outputFormat: SecExternalFormat, flags: SecItemImportExportFlags, keyParams: *const SecItemImportExportKeyParameters, exportedData: *mut CFDataRef, ) -> OSStatus; pub static kSecImportExportPassphrase: CFStringRef; #[cfg(target_os = "macos")] pub static kSecImportExportKeychain: CFStringRef; #[cfg(target_os = "macos")] pub static kSecImportExportAccess: CFStringRef; pub static kSecImportItemLabel: CFStringRef; pub static kSecImportItemKeyID: CFStringRef; pub static kSecImportItemTrust: CFStringRef; pub static kSecImportItemCertChain: CFStringRef; pub static kSecImportItemIdentity: CFStringRef; pub fn SecPKCS12Import( pkcs12_data: CFDataRef, options: CFDictionaryRef, items: *mut CFArrayRef, ) -> OSStatus; }