-
Notifications
You must be signed in to change notification settings - Fork 5
Description
CircleModularWalletsCore 1.3.1 (bundled in our iOS app v1.3.0)
Current Behavior
- iOS onboarding still registers wallets successfully.
- Immediately after registration we call toWebAuthnCredential(transport:, userName:, mode: .login). Face ID returns an ASAuthorizationPlatformPublicKeyCredentialAssertion, but the SDK throws CircleModularWalletsCore.BaseError error 1.
- The exact same credential ID (Azt13O3FRIcyCjco4i0Ss0QlmMs) authenticates without issues in our web app using the Circle web SDK (toWebAuthnCredential({ mode: Login, credentialId })), so the passkey itself is valid.
- Circle’s RPC endpoints (rp_getLoginOptions, rp_getLoginVerification) both return HTTP 200; the failure occurs inside the iOS SDK after rp_getLoginVerification.
Expected Behavior
Login via toWebAuthnCredential(..., mode: .login) should succeed (or surface a meaningful error) for the same credential that works on the web client.
Steps to Reproduce
- Register a new user on iOS (passkey domain rayapay-usdc.vercel.app; Circle client key is our standard test key).
- Finish onboarding—wallet creation succeeds.
- Attempt to log in immediately.
- Observe BaseError 1.
- Use the web client with the same credential ID—the login succeeds.
Captured Requests (sanitized)
rp_getLoginOptions
{ "jsonrpc": "2.0", "method": "rp_getLoginOptions", "id": 1762602819123, "params": [] }
rp_getLoginVerification (request ID 502feac39c9f014362736be9d29db637)
{ "jsonrpc": "2.0", "method": "rp_getLoginVerification", "id": 1762602823609, "params": [ { "authenticatorAttachment": "platform", "id": "Azt13O3FRIcyCjco4i0Ss0QlmMs", "rawId": "Azt13O3FRIcyCjco4i0Ss0QlmMs", "type": "public-key", "response": { "authenticatorData": "s_l3n4TaaPK_0tACQIRXfUMrzuNxs9QlWBMThwe9s6IdAAAAAA", "clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiSlJPS2FVaUp5NU55cThUOVRXRzhSb1I4VnFjekVpbXdLSHAzeUNhYjdMUSIsIm9yaWdpbiI6Imh0dHBzOi8vcmF5YXBheS11c2RjLnZlcmNlbC5hcHAifQ", "signature": "MEUCIA2_q-HUfnTbFNc56gWn8p9AOZCBlLbw6K440eKdRfsLAiEAv77U2ehiQJpX1ngXPLiogpGotA3I86dpoJB7CHnLJ4s", "userHandle": "AZpiqmPBcsa-mk6yx5UbWw" } } ] }
Investigate why rp_getLoginVerification succeeds on web but the iOS SDK wraps the same response in BaseError 1.
If possible, expose a credentialId-based login API for iOS, mirroring the web SDK, so apps can avoid username-based ambiguity.