From 7ae52ef482454aad6c8ee46b8bf4c6cb5a24c2cf Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Thu, 14 Aug 2025 20:07:53 -0700 Subject: [PATCH] Persist auth async --- .../SecureEnclaveSecretKit/SecureEnclaveStore.swift | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Sources/Packages/Sources/SecureEnclaveSecretKit/SecureEnclaveStore.swift b/Sources/Packages/Sources/SecureEnclaveSecretKit/SecureEnclaveStore.swift index ccd10c4..bcce342 100644 --- a/Sources/Packages/Sources/SecureEnclaveSecretKit/SecureEnclaveStore.swift +++ b/Sources/Packages/Sources/SecureEnclaveSecretKit/SecureEnclaveStore.swift @@ -182,7 +182,7 @@ extension SecureEnclave { return persisted } - public func persistAuthentication(secret: Secret, forDuration duration: TimeInterval) throws { + public func persistAuthentication(secret: Secret, forDuration duration: TimeInterval) async throws { let newContext = LAContext() newContext.touchIDAuthenticationAllowableReuseDuration = duration newContext.localizedCancelTitle = String(localized: "auth_context_request_deny_button") @@ -196,12 +196,10 @@ extension SecureEnclave { } else { newContext.localizedReason = String(localized: "auth_context_persist_for_duration_unknown_\(secret.name)") } - newContext.evaluatePolicy(LAPolicy.deviceOwnerAuthentication, localizedReason: newContext.localizedReason) { [weak self] success, _ in - guard success, let self else { return } - let context = PersistentAuthenticationContext(secret: secret, context: newContext, duration: duration) - self.persistedAuthenticationContexts.withLock { - $0[secret] = context - } + guard try await newContext.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: newContext.localizedReason) else { return } + let context = PersistentAuthenticationContext(secret: secret, context: newContext, duration: duration) + self.persistedAuthenticationContexts.withLock { + $0[secret] = context } }