use crate::base::{SecKeychainAttributeList, SecKeychainItemRef}; use core_foundation_sys::base::{CFTypeID, CFTypeRef, OSStatus}; use core_foundation_sys::dictionary::CFDictionaryRef; use std::os::raw::c_void; extern "C" { /// Returns the unique identifier of the opaque type to which a keychain item object belongs. pub fn SecKeychainItemGetTypeID() -> CFTypeID; /// Adds one or more items to a keychain. pub fn SecItemAdd(attributes: CFDictionaryRef, result: *mut CFTypeRef) -> OSStatus; /// Returns one or more keychain items that match a search query, or copies attributes of specific keychain items. pub fn SecItemCopyMatching(query: CFDictionaryRef, result: *mut CFTypeRef) -> OSStatus; /// Modifies items that match a search query. pub fn SecItemUpdate(query: CFDictionaryRef, attributesToUpdate: CFDictionaryRef) -> OSStatus; /// Deletes items that match a search query. pub fn SecItemDelete(query: CFDictionaryRef) -> OSStatus; /// # Legacy API pub fn SecKeychainItemModifyAttributesAndData( itemRef: SecKeychainItemRef, attrList: *const SecKeychainAttributeList, length: u32, data: *const c_void, ) -> OSStatus; pub fn SecKeychainItemFreeContent( attrList: *mut SecKeychainAttributeList, data: *mut c_void, ) -> OSStatus; pub fn SecKeychainItemDelete(itemRef: SecKeychainItemRef) -> OSStatus; }