Skip to content

Instantly share code, notes, and snippets.

@demesne
Created July 4, 2025 22:59
Show Gist options
  • Select an option

  • Save demesne/0bcccb6cdb0799b0f4d00dcd17147597 to your computer and use it in GitHub Desktop.

Select an option

Save demesne/0bcccb6cdb0799b0f4d00dcd17147597 to your computer and use it in GitHub Desktop.
gist for mac
if #available(iOS 15.0, *) {
// --- Platform Authenticator (e.g., Face ID, Touch ID) ---
if registrationOptions.authenticatorAttachment == .platform || registrationOptions.authenticatorAttachment == nil {
let provider = ASAuthorizationPlatformPublicKeyCredentialProvider(relyingPartyIdentifier: registrationOptions.rpId)
let request = provider.createCredentialRegistrationRequest(challenge: registrationOptions.challenge, name: registrationOptions.name, userID: registrationOptions.userID)
if !registrationOptions.excludeCredentials.isEmpty {
request.excludedCredentials = registrationOptions.excludeCredentials.map { ASAuthorizationPlatformPublicKeyCredentialDescriptor(credentialID: $0) }
}
request.userVerificationPreference = registrationOptions.userVerificationPreference
requests.append(request)
print("[PasskeyDialogView][iOS] Created ASAuthorizationPlatformPublicKeyCredentialRegistrationRequest.")
}
// --- Security Key Authenticator (e.g., YubiKey) ---
if registrationOptions.authenticatorAttachment == .crossPlatform || registrationOptions.authenticatorAttachment == nil {
let provider = ASAuthorizationSecurityKeyPublicKeyCredentialProvider(relyingPartyIdentifier: registrationOptions.rpId)
let request = provider.createCredentialRegistrationRequest(challenge: registrationOptions.challenge, displayName: registrationOptions.name, name: registrationOptions.name, userID: registrationOptions.userID)
// Ensure publicKeyCredentialParameters are set for Security Key requests
if !registrationOptions.publicKeyCredentialParameters.isEmpty {
request.credentialParameters = registrationOptions.publicKeyCredentialParameters
} else {
print("[PasskeyDialogView][iOS][Warning] No publicKeyCredentialParameters provided for Security Key. Using default ES256 (-7).")
request.credentialParameters = [ASAuthorizationPublicKeyCredentialParameters(algorithm: ASCOSEAlgorithmIdentifier(rawValue: -7))]
}
if !registrationOptions.excludeCredentials.isEmpty {
request.excludedCredentials = registrationOptions.excludeCredentials.map { ASAuthorizationSecurityKeyPublicKeyCredentialDescriptor(credentialID: $0, transports: []) }
}
request.userVerificationPreference = registrationOptions.userVerificationPreference
requests.append(request)
print("[PasskeyDialogView][iOS] Created ASAuthorizationSecurityKeyPublicKeyCredentialRegistrationRequest.")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment