1 use crate::base::{SecKeychainAttributeList, SecKeychainItemRef};
2 use core_foundation_sys::base::{CFTypeID, CFTypeRef, OSStatus};
3 use core_foundation_sys::dictionary::CFDictionaryRef;
4 use std::os::raw::c_void;
5 
6 extern "C" {
7 
8     /// Returns the unique identifier of the opaque type to which a keychain item object belongs.
SecKeychainItemGetTypeID() -> CFTypeID9     pub fn SecKeychainItemGetTypeID() -> CFTypeID;
10 
11     /// Adds one or more items to a keychain.
SecItemAdd(attributes: CFDictionaryRef, result: *mut CFTypeRef) -> OSStatus12     pub fn SecItemAdd(attributes: CFDictionaryRef, result: *mut CFTypeRef) -> OSStatus;
13 
14     /// Returns one or more keychain items that match a search query, or copies attributes of specific keychain items.
SecItemCopyMatching(query: CFDictionaryRef, result: *mut CFTypeRef) -> OSStatus15     pub fn SecItemCopyMatching(query: CFDictionaryRef, result: *mut CFTypeRef) -> OSStatus;
16 
17     /// Modifies items that match a search query.
SecItemUpdate(query: CFDictionaryRef, attributesToUpdate: CFDictionaryRef) -> OSStatus18     pub fn SecItemUpdate(query: CFDictionaryRef, attributesToUpdate: CFDictionaryRef) -> OSStatus;
19 
20     /// Deletes items that match a search query.
SecItemDelete(query: CFDictionaryRef) -> OSStatus21     pub fn SecItemDelete(query: CFDictionaryRef) -> OSStatus;
22 
23     /// # Legacy API
SecKeychainItemModifyAttributesAndData( itemRef: SecKeychainItemRef, attrList: *const SecKeychainAttributeList, length: u32, data: *const c_void, ) -> OSStatus24     pub fn SecKeychainItemModifyAttributesAndData(
25         itemRef: SecKeychainItemRef,
26         attrList: *const SecKeychainAttributeList,
27         length: u32,
28         data: *const c_void,
29     ) -> OSStatus;
30 
SecKeychainItemFreeContent( attrList: *mut SecKeychainAttributeList, data: *mut c_void, ) -> OSStatus31     pub fn SecKeychainItemFreeContent(
32         attrList: *mut SecKeychainAttributeList,
33         data: *mut c_void,
34     ) -> OSStatus;
35 
SecKeychainItemDelete(itemRef: SecKeychainItemRef) -> OSStatus36     pub fn SecKeychainItemDelete(itemRef: SecKeychainItemRef) -> OSStatus;
37 }
38