Skip to content

Circle iOS SDK: toWebAuthnCredential(.login) now fails with BaseError 1 #23

@RayaPay

Description

@RayaPay

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

  1. Register a new user on iOS (passkey domain rayapay-usdc.vercel.app; Circle client key is our standard test key).
  2. Finish onboarding—wallet creation succeeds.
  3. Attempt to log in immediately.
  4. Observe BaseError 1.
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions