summaryrefslogtreecommitdiff
path: root/vendor/security-framework-sys/src/import_export.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/security-framework-sys/src/import_export.rs')
-rw-r--r--vendor/security-framework-sys/src/import_export.rs86
1 files changed, 86 insertions, 0 deletions
diff --git a/vendor/security-framework-sys/src/import_export.rs b/vendor/security-framework-sys/src/import_export.rs
new file mode 100644
index 00000000..cd32f571
--- /dev/null
+++ b/vendor/security-framework-sys/src/import_export.rs
@@ -0,0 +1,86 @@
+use core_foundation_sys::array::CFArrayRef;
+#[cfg(target_os = "macos")]
+use core_foundation_sys::base::CFTypeRef;
+use core_foundation_sys::base::OSStatus;
+use core_foundation_sys::data::CFDataRef;
+use core_foundation_sys::dictionary::CFDictionaryRef;
+use core_foundation_sys::string::CFStringRef;
+#[cfg(target_os = "macos")]
+use std::os::raw::c_uint;
+
+#[cfg(target_os = "macos")]
+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;
+}