apple-security-framework-sys 2.9.1

Apple `Security.framework` low-level FFI bindings
Documentation
use std::os::raw::c_void;

use core_foundation_sys::base::CFTypeID;
use core_foundation_sys::base::CFTypeRef;
use core_foundation_sys::base::OSStatus;
use core_foundation_sys::dictionary::CFDictionaryRef;

use crate::base::SecKeychainAttributeList;
use crate::base::SecKeychainItemRef;

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;
}