objc2-security 0.3.2

Bindings to the Security framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/security/sectrustsettingskeyusage?language=objc)
// NS_OPTIONS
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct SecTrustSettingsKeyUsage(pub u32);
bitflags::bitflags! {
    impl SecTrustSettingsKeyUsage: u32 {
        #[doc(alias = "kSecTrustSettingsKeyUseSignature")]
        const UseSignature = 0x00000001;
        #[doc(alias = "kSecTrustSettingsKeyUseEnDecryptData")]
        const UseEnDecryptData = 0x00000002;
        #[doc(alias = "kSecTrustSettingsKeyUseEnDecryptKey")]
        const UseEnDecryptKey = 0x00000004;
        #[doc(alias = "kSecTrustSettingsKeyUseSignCert")]
        const UseSignCert = 0x00000008;
        #[doc(alias = "kSecTrustSettingsKeyUseSignRevocation")]
        const UseSignRevocation = 0x00000010;
        #[doc(alias = "kSecTrustSettingsKeyUseKeyExchange")]
        const UseKeyExchange = 0x00000020;
        #[doc(alias = "kSecTrustSettingsKeyUseAny")]
        const UseAny = 0xffffffff;
    }
}

#[cfg(feature = "objc2")]
unsafe impl Encode for SecTrustSettingsKeyUsage {
    const ENCODING: Encoding = u32::ENCODING;
}

#[cfg(feature = "objc2")]
unsafe impl RefEncode for SecTrustSettingsKeyUsage {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// Result of a trust settings evaluation.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/sectrustsettingsresult?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct SecTrustSettingsResult(pub u32);
impl SecTrustSettingsResult {
    #[doc(alias = "kSecTrustSettingsResultInvalid")]
    pub const Invalid: Self = Self(0);
    #[doc(alias = "kSecTrustSettingsResultTrustRoot")]
    pub const TrustRoot: Self = Self(1);
    #[doc(alias = "kSecTrustSettingsResultTrustAsRoot")]
    pub const TrustAsRoot: Self = Self(2);
    #[doc(alias = "kSecTrustSettingsResultDeny")]
    pub const Deny: Self = Self(3);
    #[doc(alias = "kSecTrustSettingsResultUnspecified")]
    pub const Unspecified: Self = Self(4);
}

#[cfg(feature = "objc2")]
unsafe impl Encode for SecTrustSettingsResult {
    const ENCODING: Encoding = u32::ENCODING;
}

#[cfg(feature = "objc2")]
unsafe impl RefEncode for SecTrustSettingsResult {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/security/sectrustsettingsdomain?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct SecTrustSettingsDomain(pub u32);
impl SecTrustSettingsDomain {
    #[doc(alias = "kSecTrustSettingsDomainUser")]
    pub const User: Self = Self(0);
    #[doc(alias = "kSecTrustSettingsDomainAdmin")]
    pub const Admin: Self = Self(1);
    #[doc(alias = "kSecTrustSettingsDomainSystem")]
    pub const System: Self = Self(2);
}

#[cfg(feature = "objc2")]
unsafe impl Encode for SecTrustSettingsDomain {
    const ENCODING: Encoding = u32::ENCODING;
}

#[cfg(feature = "objc2")]
unsafe impl RefEncode for SecTrustSettingsDomain {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

#[cfg(feature = "SecTrust")]
impl SecTrust {
    /// # Safety
    ///
    /// `trust_settings` must be a valid pointer.
    #[doc(alias = "SecTrustSettingsCopyTrustSettings")]
    #[cfg(feature = "SecBase")]
    #[inline]
    pub unsafe fn settings_copy_trust_settings(
        cert_ref: &SecCertificate,
        domain: SecTrustSettingsDomain,
        trust_settings: NonNull<*const CFArray>,
    ) -> OSStatus {
        extern "C-unwind" {
            fn SecTrustSettingsCopyTrustSettings(
                cert_ref: &SecCertificate,
                domain: SecTrustSettingsDomain,
                trust_settings: NonNull<*const CFArray>,
            ) -> OSStatus;
        }
        unsafe { SecTrustSettingsCopyTrustSettings(cert_ref, domain, trust_settings) }
    }

    /// # Safety
    ///
    /// `trust_settings_dict_or_array` should be of the correct type.
    #[doc(alias = "SecTrustSettingsSetTrustSettings")]
    #[cfg(feature = "SecBase")]
    #[inline]
    pub unsafe fn settings_set_trust_settings(
        cert_ref: &SecCertificate,
        domain: SecTrustSettingsDomain,
        trust_settings_dict_or_array: Option<&CFType>,
    ) -> OSStatus {
        extern "C-unwind" {
            fn SecTrustSettingsSetTrustSettings(
                cert_ref: &SecCertificate,
                domain: SecTrustSettingsDomain,
                trust_settings_dict_or_array: Option<&CFType>,
            ) -> OSStatus;
        }
        unsafe { SecTrustSettingsSetTrustSettings(cert_ref, domain, trust_settings_dict_or_array) }
    }

    #[doc(alias = "SecTrustSettingsRemoveTrustSettings")]
    #[cfg(feature = "SecBase")]
    #[inline]
    pub unsafe fn settings_remove_trust_settings(
        cert_ref: &SecCertificate,
        domain: SecTrustSettingsDomain,
    ) -> OSStatus {
        extern "C-unwind" {
            fn SecTrustSettingsRemoveTrustSettings(
                cert_ref: &SecCertificate,
                domain: SecTrustSettingsDomain,
            ) -> OSStatus;
        }
        unsafe { SecTrustSettingsRemoveTrustSettings(cert_ref, domain) }
    }

    /// # Safety
    ///
    /// `cert_array` must be a valid pointer or null.
    #[doc(alias = "SecTrustSettingsCopyCertificates")]
    #[inline]
    pub unsafe fn settings_copy_certificates(
        domain: SecTrustSettingsDomain,
        cert_array: *mut *const CFArray,
    ) -> OSStatus {
        extern "C-unwind" {
            fn SecTrustSettingsCopyCertificates(
                domain: SecTrustSettingsDomain,
                cert_array: *mut *const CFArray,
            ) -> OSStatus;
        }
        unsafe { SecTrustSettingsCopyCertificates(domain, cert_array) }
    }

    /// # Safety
    ///
    /// `modification_date` must be a valid pointer.
    #[doc(alias = "SecTrustSettingsCopyModificationDate")]
    #[cfg(feature = "SecBase")]
    #[inline]
    pub unsafe fn settings_copy_modification_date(
        cert_ref: &SecCertificate,
        domain: SecTrustSettingsDomain,
        modification_date: NonNull<*const CFDate>,
    ) -> OSStatus {
        extern "C-unwind" {
            fn SecTrustSettingsCopyModificationDate(
                cert_ref: &SecCertificate,
                domain: SecTrustSettingsDomain,
                modification_date: NonNull<*const CFDate>,
            ) -> OSStatus;
        }
        unsafe { SecTrustSettingsCopyModificationDate(cert_ref, domain, modification_date) }
    }

    /// # Safety
    ///
    /// `trust_settings` must be a valid pointer.
    #[doc(alias = "SecTrustSettingsCreateExternalRepresentation")]
    #[inline]
    pub unsafe fn settings_create_external_representation(
        domain: SecTrustSettingsDomain,
        trust_settings: NonNull<*const CFData>,
    ) -> OSStatus {
        extern "C-unwind" {
            fn SecTrustSettingsCreateExternalRepresentation(
                domain: SecTrustSettingsDomain,
                trust_settings: NonNull<*const CFData>,
            ) -> OSStatus;
        }
        unsafe { SecTrustSettingsCreateExternalRepresentation(domain, trust_settings) }
    }

    #[doc(alias = "SecTrustSettingsImportExternalRepresentation")]
    #[inline]
    pub unsafe fn settings_import_external_representation(
        domain: SecTrustSettingsDomain,
        trust_settings: &CFData,
    ) -> OSStatus {
        extern "C-unwind" {
            fn SecTrustSettingsImportExternalRepresentation(
                domain: SecTrustSettingsDomain,
                trust_settings: &CFData,
            ) -> OSStatus;
        }
        unsafe { SecTrustSettingsImportExternalRepresentation(domain, trust_settings) }
    }
}

extern "C-unwind" {
    #[cfg(feature = "SecBase")]
    #[deprecated = "renamed to `SecTrust::settings_copy_trust_settings`"]
    pub fn SecTrustSettingsCopyTrustSettings(
        cert_ref: &SecCertificate,
        domain: SecTrustSettingsDomain,
        trust_settings: NonNull<*const CFArray>,
    ) -> OSStatus;
}

extern "C-unwind" {
    #[cfg(feature = "SecBase")]
    #[deprecated = "renamed to `SecTrust::settings_set_trust_settings`"]
    pub fn SecTrustSettingsSetTrustSettings(
        cert_ref: &SecCertificate,
        domain: SecTrustSettingsDomain,
        trust_settings_dict_or_array: Option<&CFType>,
    ) -> OSStatus;
}

extern "C-unwind" {
    #[cfg(feature = "SecBase")]
    #[deprecated = "renamed to `SecTrust::settings_remove_trust_settings`"]
    pub fn SecTrustSettingsRemoveTrustSettings(
        cert_ref: &SecCertificate,
        domain: SecTrustSettingsDomain,
    ) -> OSStatus;
}

extern "C-unwind" {
    #[deprecated = "renamed to `SecTrust::settings_copy_certificates`"]
    pub fn SecTrustSettingsCopyCertificates(
        domain: SecTrustSettingsDomain,
        cert_array: *mut *const CFArray,
    ) -> OSStatus;
}

extern "C-unwind" {
    #[cfg(feature = "SecBase")]
    #[deprecated = "renamed to `SecTrust::settings_copy_modification_date`"]
    pub fn SecTrustSettingsCopyModificationDate(
        cert_ref: &SecCertificate,
        domain: SecTrustSettingsDomain,
        modification_date: NonNull<*const CFDate>,
    ) -> OSStatus;
}

extern "C-unwind" {
    #[deprecated = "renamed to `SecTrust::settings_create_external_representation`"]
    pub fn SecTrustSettingsCreateExternalRepresentation(
        domain: SecTrustSettingsDomain,
        trust_settings: NonNull<*const CFData>,
    ) -> OSStatus;
}

extern "C-unwind" {
    #[deprecated = "renamed to `SecTrust::settings_import_external_representation`"]
    pub fn SecTrustSettingsImportExternalRepresentation(
        domain: SecTrustSettingsDomain,
        trust_settings: &CFData,
    ) -> OSStatus;
}