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