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