objc2-authentication-services 0.3.2

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

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderextensionauthenticationmethod?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionAuthenticationMethod(pub NSInteger);
impl ASAuthorizationProviderExtensionAuthenticationMethod {
    #[doc(alias = "ASAuthorizationProviderExtensionAuthenticationMethodPassword")]
    pub const Password: Self = Self(1);
    #[doc(alias = "ASAuthorizationProviderExtensionAuthenticationMethodUserSecureEnclaveKey")]
    pub const UserSecureEnclaveKey: Self = Self(2);
    #[doc(alias = "ASAuthorizationProviderExtensionAuthenticationMethodSmartCard")]
    pub const SmartCard: Self = Self(3);
}

unsafe impl Encode for ASAuthorizationProviderExtensionAuthenticationMethod {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionAuthenticationMethod {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderextensionrequestoptions?language=objc)
// NS_OPTIONS
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionRequestOptions(pub NSUInteger);
bitflags::bitflags! {
    impl ASAuthorizationProviderExtensionRequestOptions: NSUInteger {
        #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsNone")]
        const None = 0;
        #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsUserInteractionEnabled")]
        const UserInteractionEnabled = 1<<0;
        #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsRegistrationRepair")]
        const RegistrationRepair = 1<<1;
        #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsRegistrationSharedDeviceKeys")]
        const RegistrationSharedDeviceKeys = 1<<2;
        #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsRegistrationDeviceKeyMigration")]
        const RegistrationDeviceKeyMigration = 1<<3;
        #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsStrongerKeyAvailable")]
        const StrongerKeyAvailable = 1<<4;
        #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsUserKeyInvalid")]
        const UserKeyInvalid = 1<<5;
        #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsSetupAssistant")]
        const SetupAssistant = 1<<6;
    }
}

unsafe impl Encode for ASAuthorizationProviderExtensionRequestOptions {
    const ENCODING: Encoding = NSUInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionRequestOptions {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderextensionregistrationresult?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionRegistrationResult(pub NSInteger);
impl ASAuthorizationProviderExtensionRegistrationResult {
    #[doc(alias = "ASAuthorizationProviderExtensionRegistrationResultSuccess")]
    pub const Success: Self = Self(0);
    #[doc(alias = "ASAuthorizationProviderExtensionRegistrationResultFailed")]
    pub const Failed: Self = Self(1);
    #[doc(alias = "ASAuthorizationProviderExtensionRegistrationResultUserInterfaceRequired")]
    pub const UserInterfaceRequired: Self = Self(2);
    #[doc(alias = "ASAuthorizationProviderExtensionRegistrationResultFailedNoRetry")]
    pub const FailedNoRetry: Self = Self(3);
}

unsafe impl Encode for ASAuthorizationProviderExtensionRegistrationResult {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionRegistrationResult {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderextensionsupportedgranttypes?language=objc)
// NS_OPTIONS
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionSupportedGrantTypes(pub NSInteger);
bitflags::bitflags! {
    impl ASAuthorizationProviderExtensionSupportedGrantTypes: NSInteger {
        #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesNone")]
        const None = 0;
        #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesPassword")]
        const Password = 1<<0;
        #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesJWTBearer")]
        const JWTBearer = 1<<1;
        #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesSAML1_1")]
        const SAML1_1 = 1<<2;
        #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesSAML2_0")]
        const SAML2_0 = 1<<3;
    }
}

unsafe impl Encode for ASAuthorizationProviderExtensionSupportedGrantTypes {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionSupportedGrantTypes {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderextensionplatformssoprotocolversion?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionPlatformSSOProtocolVersion(pub NSInteger);
impl ASAuthorizationProviderExtensionPlatformSSOProtocolVersion {
    #[doc(alias = "ASAuthorizationProviderExtensionPlatformSSOProtocolVersion1_0")]
    pub const Version1_0: Self = Self(0);
    #[doc(alias = "ASAuthorizationProviderExtensionPlatformSSOProtocolVersion2_0")]
    pub const Version2_0: Self = Self(1);
}

unsafe impl Encode for ASAuthorizationProviderExtensionPlatformSSOProtocolVersion {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionPlatformSSOProtocolVersion {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_protocol!(
    /// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderextensionregistrationhandler?language=objc)
    pub unsafe trait ASAuthorizationProviderExtensionRegistrationHandler:
        NSObjectProtocol
    {
        #[cfg(all(
            feature = "ASAuthorizationProviderExtensionLoginManager",
            feature = "block2"
        ))]
        /// This initiates device registration process for the SSO extension.
        ///
        /// Parameter `loginManager`: The login manager used to interface with Platform SSO.
        ///
        /// Parameter `options`: The request options that apply to the request.
        ///
        /// Parameter `completion`: The completion to call to continue device registration.
        #[unsafe(method(beginDeviceRegistrationUsingLoginManager:options:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn beginDeviceRegistrationUsingLoginManager_options_completion(
            &self,
            login_manager: &ASAuthorizationProviderExtensionLoginManager,
            options: ASAuthorizationProviderExtensionRequestOptions,
            completion: &block2::DynBlock<
                dyn Fn(ASAuthorizationProviderExtensionRegistrationResult),
            >,
        );

        #[cfg(all(
            feature = "ASAuthorizationProviderExtensionLoginManager",
            feature = "block2"
        ))]
        /// This initiates user registration process for the user and the extension.
        ///
        /// Parameter `loginManager`: The login manager used to interface with Platform SSO.
        ///
        /// Parameter `userName`: The username for the user registration.
        ///
        /// Parameter `authenticationMethod`: The authentication method to be used for the user.
        ///
        /// Parameter `options`: The request options that apply to the request.
        ///
        /// Parameter `completion`: The completion to call to continue user registration.
        #[unsafe(method(beginUserRegistrationUsingLoginManager:userName:authenticationMethod:options:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn beginUserRegistrationUsingLoginManager_userName_authenticationMethod_options_completion(
            &self,
            login_manager: &ASAuthorizationProviderExtensionLoginManager,
            user_name: Option<&NSString>,
            authentication_method: ASAuthorizationProviderExtensionAuthenticationMethod,
            options: ASAuthorizationProviderExtensionRequestOptions,
            completion: &block2::DynBlock<
                dyn Fn(ASAuthorizationProviderExtensionRegistrationResult),
            >,
        );

        /// Call to extension to free any resources used by the extension during registration. It will be called once after all current registration calls are complete.
        #[optional]
        #[unsafe(method(registrationDidComplete))]
        #[unsafe(method_family = none)]
        unsafe fn registrationDidComplete(&self);

        /// Call to extension when the registration has been cancelled.
        #[optional]
        #[unsafe(method(registrationDidCancel))]
        #[unsafe(method_family = none)]
        unsafe fn registrationDidCancel(&self);

        /// The grant types supported by the identity provider.
        #[optional]
        #[unsafe(method(supportedGrantTypes))]
        #[unsafe(method_family = none)]
        unsafe fn supportedGrantTypes(&self)
            -> ASAuthorizationProviderExtensionSupportedGrantTypes;

        /// The protocol version supported by the identity provider.
        #[optional]
        #[unsafe(method(protocolVersion))]
        #[unsafe(method_family = none)]
        unsafe fn protocolVersion(
            &self,
        ) -> ASAuthorizationProviderExtensionPlatformSSOProtocolVersion;

        #[cfg(feature = "ASAuthorizationProviderExtensionLoginConfiguration")]
        /// The supported device signing algorithms.
        #[optional]
        #[unsafe(method(supportedDeviceSigningAlgorithms))]
        #[unsafe(method_family = none)]
        unsafe fn supportedDeviceSigningAlgorithms(
            &self,
        ) -> Retained<NSArray<ASAuthorizationProviderExtensionSigningAlgorithm>>;

        #[cfg(feature = "ASAuthorizationProviderExtensionLoginConfiguration")]
        /// The supported device encryption algorithms.
        #[optional]
        #[unsafe(method(supportedDeviceEncryptionAlgorithms))]
        #[unsafe(method_family = none)]
        unsafe fn supportedDeviceEncryptionAlgorithms(
            &self,
        ) -> Retained<NSArray<ASAuthorizationProviderExtensionEncryptionAlgorithm>>;

        #[cfg(feature = "ASAuthorizationProviderExtensionLoginConfiguration")]
        /// The supported user Secure Enclave Key signing algorithms.
        #[optional]
        #[unsafe(method(supportedUserSecureEnclaveKeySigningAlgorithms))]
        #[unsafe(method_family = none)]
        unsafe fn supportedUserSecureEnclaveKeySigningAlgorithms(
            &self,
        ) -> Retained<NSArray<ASAuthorizationProviderExtensionSigningAlgorithm>>;

        #[cfg(all(
            feature = "ASAuthorizationProviderExtensionLoginManager",
            feature = "block2",
            feature = "objc2-security"
        ))]
        /// The specified keyType will rotate to a new key. The rotation is complete when the completion handler is called.  This is only called by the system for automatic key rotation.
        #[optional]
        #[unsafe(method(keyWillRotateForKeyType:newKey:loginManager:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn keyWillRotateForKeyType_newKey_loginManager_completion(
            &self,
            key_type: ASAuthorizationProviderExtensionKeyType,
            new_key: &SecKey,
            login_manager: &ASAuthorizationProviderExtensionLoginManager,
            completion: &block2::DynBlock<dyn Fn(Bool)>,
        );

        #[cfg(all(
            feature = "ASAuthorizationProviderExtensionLoginManager",
            feature = "block2"
        ))]
        /// Request the display names for the supplied group identifiers.  The completion key is the identifier and the value is the display name.
        #[optional]
        #[unsafe(method(displayNamesForGroups:loginManager:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn displayNamesForGroups_loginManager_completion(
            &self,
            groups: &NSArray<NSString>,
            login_manager: &ASAuthorizationProviderExtensionLoginManager,
            completion: &block2::DynBlock<dyn Fn(NonNull<NSDictionary<NSString, NSString>>)>,
        );

        #[cfg(all(
            feature = "ASAuthorizationProviderExtensionLoginManager",
            feature = "block2"
        ))]
        /// Request the profile picture for the current user in jpeg format.
        #[optional]
        #[unsafe(method(profilePictureForUserUsingLoginManager:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn profilePictureForUserUsingLoginManager_completion(
            &self,
            login_manager: &ASAuthorizationProviderExtensionLoginManager,
            completion: &block2::DynBlock<dyn Fn(NonNull<NSData>)>,
        );
    }
);