use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
use crate::*;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct AuthorizationValue {
pub length: usize,
pub data: *mut c_void,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for AuthorizationValue {
const ENCODING: Encoding = Encoding::Struct(
"AuthorizationValue",
&[<usize>::ENCODING, <*mut c_void>::ENCODING],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for AuthorizationValue {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct AuthorizationValueVector {
pub count: u32,
pub values: NonNull<AuthorizationValue>,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for AuthorizationValueVector {
const ENCODING: Encoding = Encoding::Struct(
"AuthorizationValueVector",
&[<u32>::ENCODING, <NonNull<AuthorizationValue>>::ENCODING],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for AuthorizationValueVector {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct AuthorizationContextFlags(pub u32);
bitflags::bitflags! {
impl AuthorizationContextFlags: u32 {
#[doc(alias = "kAuthorizationContextFlagExtractable")]
const Extractable = 1<<0;
#[doc(alias = "kAuthorizationContextFlagVolatile")]
const Volatile = 1<<1;
#[doc(alias = "kAuthorizationContextFlagSticky")]
const Sticky = 1<<2;
}
}
#[cfg(feature = "objc2")]
unsafe impl Encode for AuthorizationContextFlags {
const ENCODING: Encoding = u32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for AuthorizationContextFlags {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "Authorization")]
pub type AuthorizationMechanismId = AuthorizationString;
#[cfg(feature = "Authorization")]
pub type AuthorizationPluginId = AuthorizationString;
pub type AuthorizationPluginRef = *mut c_void;
pub type AuthorizationMechanismRef = *mut c_void;
#[repr(C)]
#[derive(Debug)]
pub struct __OpaqueAuthorizationEngine {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for __OpaqueAuthorizationEngine {
const ENCODING_REF: Encoding =
Encoding::Pointer(&Encoding::Struct("__OpaqueAuthorizationEngine", &[]));
}
pub type AuthorizationEngineRef = *mut __OpaqueAuthorizationEngine;
pub type AuthorizationSessionId = *mut c_void;
#[repr(u32)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum AuthorizationResult {
#[doc(alias = "kAuthorizationResultAllow")]
Allow = 0,
#[doc(alias = "kAuthorizationResultDeny")]
Deny = 1,
#[doc(alias = "kAuthorizationResultUndefined")]
Undefined = 2,
#[doc(alias = "kAuthorizationResultUserCanceled")]
UserCanceled = 3,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for AuthorizationResult {
const ENCODING: Encoding = u32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for AuthorizationResult {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub const kAuthorizationPluginInterfaceVersion: c_uint = 0;
pub const kAuthorizationCallbacksVersion: c_uint = 4;
#[cfg(feature = "Authorization")]
#[repr(C)]
#[allow(unpredictable_function_pointer_comparisons)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct AuthorizationCallbacks {
pub version: u32,
pub SetResult:
unsafe extern "C-unwind" fn(AuthorizationEngineRef, AuthorizationResult) -> OSStatus,
pub RequestInterrupt: unsafe extern "C-unwind" fn(AuthorizationEngineRef) -> OSStatus,
pub DidDeactivate: unsafe extern "C-unwind" fn(AuthorizationEngineRef) -> OSStatus,
pub GetContextValue: unsafe extern "C-unwind" fn(
AuthorizationEngineRef,
AuthorizationString,
*mut AuthorizationContextFlags,
*mut *const AuthorizationValue,
) -> OSStatus,
pub SetContextValue: unsafe extern "C-unwind" fn(
AuthorizationEngineRef,
AuthorizationString,
AuthorizationContextFlags,
NonNull<AuthorizationValue>,
) -> OSStatus,
pub GetHintValue: unsafe extern "C-unwind" fn(
AuthorizationEngineRef,
AuthorizationString,
*mut *const AuthorizationValue,
) -> OSStatus,
pub SetHintValue: unsafe extern "C-unwind" fn(
AuthorizationEngineRef,
AuthorizationString,
NonNull<AuthorizationValue>,
) -> OSStatus,
pub GetArguments: unsafe extern "C-unwind" fn(
AuthorizationEngineRef,
NonNull<*const AuthorizationValueVector>,
) -> OSStatus,
pub GetSessionId: unsafe extern "C-unwind" fn(
AuthorizationEngineRef,
*mut AuthorizationSessionId,
) -> OSStatus,
pub GetImmutableHintValue: unsafe extern "C-unwind" fn(
AuthorizationEngineRef,
AuthorizationString,
*mut *const AuthorizationValue,
) -> OSStatus,
pub GetLAContext:
unsafe extern "C-unwind" fn(AuthorizationEngineRef, *mut *const CFType) -> OSStatus,
pub GetTokenIdentities: unsafe extern "C-unwind" fn(
AuthorizationEngineRef,
NonNull<CFType>,
*mut *const CFArray,
) -> OSStatus,
pub GetTKTokenWatcher:
unsafe extern "C-unwind" fn(AuthorizationEngineRef, *mut *const CFType) -> OSStatus,
pub RemoveHintValue:
unsafe extern "C-unwind" fn(AuthorizationEngineRef, AuthorizationString) -> OSStatus,
pub RemoveContextValue:
unsafe extern "C-unwind" fn(AuthorizationEngineRef, AuthorizationString) -> OSStatus,
}
#[cfg(all(feature = "Authorization", feature = "objc2"))]
unsafe impl Encode for AuthorizationCallbacks {
const ENCODING: Encoding = Encoding::Struct("AuthorizationCallbacks", &[
<u32>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,AuthorizationResult,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,AuthorizationString,*mut AuthorizationContextFlags,*mut *const AuthorizationValue,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,AuthorizationString,AuthorizationContextFlags,NonNull<AuthorizationValue>,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,AuthorizationString,*mut *const AuthorizationValue,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,AuthorizationString,NonNull<AuthorizationValue>,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,NonNull<*const AuthorizationValueVector>,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,*mut AuthorizationSessionId,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,AuthorizationString,*mut *const AuthorizationValue,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,*mut *const CFType,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,NonNull<CFType>,*mut *const CFArray,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,*mut *const CFType,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,AuthorizationString,) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationEngineRef,AuthorizationString,) -> OSStatus>::ENCODING,
]);
}
#[cfg(all(feature = "Authorization", feature = "objc2"))]
unsafe impl RefEncode for AuthorizationCallbacks {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "Authorization")]
#[repr(C)]
#[allow(unpredictable_function_pointer_comparisons)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct AuthorizationPluginInterface {
pub version: u32,
pub PluginDestroy: unsafe extern "C-unwind" fn(AuthorizationPluginRef) -> OSStatus,
pub MechanismCreate: unsafe extern "C-unwind" fn(
AuthorizationPluginRef,
AuthorizationEngineRef,
AuthorizationMechanismId,
NonNull<AuthorizationMechanismRef>,
) -> OSStatus,
pub MechanismInvoke: unsafe extern "C-unwind" fn(AuthorizationMechanismRef) -> OSStatus,
pub MechanismDeactivate: unsafe extern "C-unwind" fn(AuthorizationMechanismRef) -> OSStatus,
pub MechanismDestroy: unsafe extern "C-unwind" fn(AuthorizationMechanismRef) -> OSStatus,
}
#[cfg(all(feature = "Authorization", feature = "objc2"))]
unsafe impl Encode for AuthorizationPluginInterface {
const ENCODING: Encoding = Encoding::Struct(
"AuthorizationPluginInterface",
&[
<u32>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationPluginRef) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(
AuthorizationPluginRef,
AuthorizationEngineRef,
AuthorizationMechanismId,
NonNull<AuthorizationMechanismRef>,
) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationMechanismRef) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationMechanismRef) -> OSStatus>::ENCODING,
<unsafe extern "C-unwind" fn(AuthorizationMechanismRef) -> OSStatus>::ENCODING,
],
);
}
#[cfg(all(feature = "Authorization", feature = "objc2"))]
unsafe impl RefEncode for AuthorizationPluginInterface {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern "C-unwind" {
#[cfg(feature = "Authorization")]
pub fn AuthorizationPluginCreate(
callbacks: NonNull<AuthorizationCallbacks>,
out_plugin: NonNull<AuthorizationPluginRef>,
out_plugin_interface: NonNull<*const AuthorizationPluginInterface>,
) -> OSStatus;
}