From 23982a157b01afe988e2fa7d5561652867ffe976 Mon Sep 17 00:00:00 2001 From: Martin Kellner Date: Wed, 1 Oct 2025 13:04:12 +0200 Subject: [PATCH] Add first signal API call --- Sources/Real/RealAuthorizationController.swift | 16 ++++++++++++++++ Sources/SimpleAuthenticationServices.swift | 3 +++ .../Virtual/VirtualAuthorizationController.swift | 5 +++++ 3 files changed, 24 insertions(+) diff --git a/Sources/Real/RealAuthorizationController.swift b/Sources/Real/RealAuthorizationController.swift index eaf8330..545cfa6 100644 --- a/Sources/Real/RealAuthorizationController.swift +++ b/Sources/Real/RealAuthorizationController.swift @@ -73,6 +73,22 @@ final public class RealAuthorizationController: AuthorizationControllerProtocol, } } + @MainActor + public func signalAllAcceptedCredentials(rpID: String, userHandle: Data, acceptedCredentialIDs: [Data]) async throws(AuthorizationError) { + if #available(iOS 26.0, *) { + let credentialUpdater = ASCredentialUpdater() + do { + try await credentialUpdater.reportAllAcceptedPublicKeyCredentials( + relyingPartyIdentifier: rpID, + userHandle: userHandle, + acceptedCredentialIDs: acceptedCredentialIDs + ) + } catch { + throw AuthorizationError(type: .unknown, originalError: error) + } + } + } + @MainActor public func cancel() { self.inFlightController?.cancel() diff --git a/Sources/SimpleAuthenticationServices.swift b/Sources/SimpleAuthenticationServices.swift index a0dbec4..2bfec50 100644 --- a/Sources/SimpleAuthenticationServices.swift +++ b/Sources/SimpleAuthenticationServices.swift @@ -15,6 +15,9 @@ public protocol AuthorizationControllerProtocol: Sendable { // Protocol itself s @available(macOS 13.0, *) @MainActor // This method will present UI func create(requests: [ASAuthorizationRequest]) async throws -> AuthorizationResult + + @MainActor // This method will present UI + func signalAllAcceptedCredentials(rpID: String, userHandle: Data, acceptedCredentialIDs: [Data]) async throws(AuthorizationError) @MainActor // This method might interact with an ongoing UI operation func cancel() async diff --git a/Sources/Virtual/VirtualAuthorizationController.swift b/Sources/Virtual/VirtualAuthorizationController.swift index c96627f..4c3f542 100644 --- a/Sources/Virtual/VirtualAuthorizationController.swift +++ b/Sources/Virtual/VirtualAuthorizationController.swift @@ -159,6 +159,11 @@ public final class VirtualAuthorizationController: AuthorizationControllerProtoc return nil } + @MainActor + public func signalAllAcceptedCredentials(rpID: String, userHandle: Data, acceptedCredentialIDs: [Data]) async throws(AuthorizationError) { + return + } + public func cancel() async { return }