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::*;

use crate::*;

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/aspasskeycredentialrequest?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct ASPasskeyCredentialRequest;
);

#[cfg(feature = "ASCredentialRequest")]
extern_conformance!(
    unsafe impl ASCredentialRequest for ASPasskeyCredentialRequest {}
);

extern_conformance!(
    unsafe impl NSCoding for ASPasskeyCredentialRequest {}
);

extern_conformance!(
    unsafe impl NSCopying for ASPasskeyCredentialRequest {}
);

unsafe impl CopyingHelper for ASPasskeyCredentialRequest {
    type Result = Self;
}

extern_conformance!(
    unsafe impl NSObjectProtocol for ASPasskeyCredentialRequest {}
);

extern_conformance!(
    unsafe impl NSSecureCoding for ASPasskeyCredentialRequest {}
);

impl ASPasskeyCredentialRequest {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[cfg(all(
            feature = "ASAuthorizationPublicKeyCredentialConstants",
            feature = "ASPasskeyCredentialIdentity"
        ))]
        /// Initializes an instance of ASPasskeyCredentialRequest.
        ///
        /// Parameter `credentialIdentity`: credential identity to used for this request.
        ///
        /// Parameter `clientDataHash`: the client data to be signed for this assertion request.
        ///
        /// Parameter `userVerificationPreference`: user verification preference setting of this assertion request.
        #[unsafe(method(initWithCredentialIdentity:clientDataHash:userVerificationPreference:supportedAlgorithms:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithCredentialIdentity_clientDataHash_userVerificationPreference_supportedAlgorithms(
            this: Allocated<Self>,
            credential_identity: &ASPasskeyCredentialIdentity,
            client_data_hash: &NSData,
            user_verification_preference: &ASAuthorizationPublicKeyCredentialUserVerificationPreference,
            supported_algorithms: &NSArray<NSNumber>,
        ) -> Retained<Self>;

        #[cfg(all(
            feature = "ASAuthorizationPublicKeyCredentialConstants",
            feature = "ASPasskeyAssertionCredentialExtensionInput",
            feature = "ASPasskeyCredentialIdentity"
        ))]
        /// Initializes an instance of ASPasskeyCredentialRequest.
        ///
        /// Parameter `credentialIdentity`: credential identity to used for this request.
        ///
        /// Parameter `clientDataHash`: the client data to be signed for this assertion request.
        ///
        /// Parameter `userVerificationPreference`: user verification preference setting of this assertion request.
        ///
        /// Parameter `supportedAlgorithms`: the set of support algorithms for the credential's key.
        ///
        /// Parameter `assertionExtensionInput`: input for any requested passkey extensions.
        #[unsafe(method(initWithCredentialIdentity:clientDataHash:userVerificationPreference:supportedAlgorithms:assertionExtensionInput:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithCredentialIdentity_clientDataHash_userVerificationPreference_supportedAlgorithms_assertionExtensionInput(
            this: Allocated<Self>,
            credential_identity: &ASPasskeyCredentialIdentity,
            client_data_hash: &NSData,
            user_verification_preference: &ASAuthorizationPublicKeyCredentialUserVerificationPreference,
            supported_algorithms: &NSArray<NSNumber>,
            assertion_extension_input: Option<&ASPasskeyAssertionCredentialExtensionInput>,
        ) -> Retained<Self>;

        #[cfg(all(
            feature = "ASAuthorizationPublicKeyCredentialConstants",
            feature = "ASPasskeyCredentialIdentity",
            feature = "ASPasskeyRegistrationCredentialExtensionInput"
        ))]
        /// Initializes an instance of ASPasskeyCredentialRequest.
        ///
        /// Parameter `credentialIdentity`: credential identity to used for this request.
        ///
        /// Parameter `clientDataHash`: the client data to be signed for this assertion request.
        ///
        /// Parameter `userVerificationPreference`: user verification preference setting of this assertion request.
        ///
        /// Parameter `supportedAlgorithms`: the set of support algorithms for the credential's key.
        ///
        /// Parameter `registrationExtensionInput`: input for any requested passkey extensions.
        #[unsafe(method(initWithCredentialIdentity:clientDataHash:userVerificationPreference:supportedAlgorithms:registrationExtensionInput:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithCredentialIdentity_clientDataHash_userVerificationPreference_supportedAlgorithms_registrationExtensionInput(
            this: Allocated<Self>,
            credential_identity: &ASPasskeyCredentialIdentity,
            client_data_hash: &NSData,
            user_verification_preference: &ASAuthorizationPublicKeyCredentialUserVerificationPreference,
            supported_algorithms: &NSArray<NSNumber>,
            registration_extension_input: Option<&ASPasskeyRegistrationCredentialExtensionInput>,
        ) -> Retained<Self>;

        #[cfg(all(
            feature = "ASAuthorizationPublicKeyCredentialConstants",
            feature = "ASPasskeyCredentialIdentity"
        ))]
        /// Creates and initializes an instance of ASPasskeyCredentialRequest.
        ///
        /// Parameter `credentialIdentity`: credential identity to used for this request.
        ///
        /// Parameter `clientDataHash`: the client data to be signed for this assertion request.
        ///
        /// Parameter `userVerificationPreference`: user verification preference setting of this assertion request.
        #[unsafe(method(requestWithCredentialIdentity:clientDataHash:userVerificationPreference:supportedAlgorithms:))]
        #[unsafe(method_family = none)]
        pub unsafe fn requestWithCredentialIdentity_clientDataHash_userVerificationPreference_supportedAlgorithms(
            credential_identity: &ASPasskeyCredentialIdentity,
            client_data_hash: &NSData,
            user_verification_preference: &ASAuthorizationPublicKeyCredentialUserVerificationPreference,
            supported_algorithms: &NSArray<NSNumber>,
        ) -> Retained<Self>;

        /// Hash of client data for credential provider to sign as part of the assertion/registration operation.
        #[unsafe(method(clientDataHash))]
        #[unsafe(method_family = none)]
        pub unsafe fn clientDataHash(&self) -> Retained<NSData>;

        #[cfg(feature = "ASAuthorizationPublicKeyCredentialConstants")]
        /// A preference for whether the authenticator should attempt to verify that
        /// it is being used by its owner, such as through a PIN or biometrics.
        #[unsafe(method(userVerificationPreference))]
        #[unsafe(method_family = none)]
        pub unsafe fn userVerificationPreference(
            &self,
        ) -> Retained<ASAuthorizationPublicKeyCredentialUserVerificationPreference>;

        #[cfg(feature = "ASAuthorizationPublicKeyCredentialConstants")]
        /// Setter for [`userVerificationPreference`][Self::userVerificationPreference].
        #[unsafe(method(setUserVerificationPreference:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setUserVerificationPreference(
            &self,
            user_verification_preference: &ASAuthorizationPublicKeyCredentialUserVerificationPreference,
        );

        /// A list of signing algorithms supported by the relying party. Will be empty for assertion requests.
        #[unsafe(method(supportedAlgorithms))]
        #[unsafe(method_family = none)]
        pub unsafe fn supportedAlgorithms(&self) -> Retained<NSArray<NSNumber>>;

        #[cfg(feature = "ASAuthorizationPlatformPublicKeyCredentialDescriptor")]
        #[unsafe(method(excludedCredentials))]
        #[unsafe(method_family = none)]
        pub unsafe fn excludedCredentials(
            &self,
        ) -> Option<Retained<NSArray<ASAuthorizationPlatformPublicKeyCredentialDescriptor>>>;

        #[cfg(feature = "ASPasskeyAssertionCredentialExtensionInput")]
        /// Inputs for WebAuthn extensions used for passkey assertion. Will be nil for registration requests.
        #[unsafe(method(assertionExtensionInput))]
        #[unsafe(method_family = none)]
        pub unsafe fn assertionExtensionInput(
            &self,
        ) -> Option<Retained<ASPasskeyAssertionCredentialExtensionInput>>;

        #[cfg(feature = "ASPasskeyRegistrationCredentialExtensionInput")]
        /// Inputs for WebAuthn extensions used for passkey registration. Will be nil for assertion requests.
        #[unsafe(method(registrationExtensionInput))]
        #[unsafe(method_family = none)]
        pub unsafe fn registrationExtensionInput(
            &self,
        ) -> Option<Retained<ASPasskeyRegistrationCredentialExtensionInput>>;
    );
}

/// Methods declared on superclass `NSObject`.
impl ASPasskeyCredentialRequest {
    extern_methods!(
        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}