The registration and login flow refers to the process by which users create a new account and subsequently access it

Registration

The user can register an account using

Sign in with Google

Once user interacts with the Sign in with Google button, the user is taken to a view where

they can choose a Google account to sign in with, then Google prompts the user to sign in to their Google account, ensuring their identity and consent to share information with the requesting app. Upon successful authentication, Google generates an access token and sends it back to the requesting app

At this point we attempt to create a user on the open wallet server, since the user does not have an account with us, the server returns a challenge to the user, this challenge has to be signed using a Passkey

You can imagine that challenge looks something like this 3f8g6h1j7k9l0z2x5c6v8b7n9m0q1w4e6r8t3y6u1i9o0p2s5d8f7g4h6j8k7l9z0x1c4v7b6n9m0q2w5e8r7t6y9u0i3o6p9

Creating a PassKey

When registering a new Passkey on an iPhone, the user experience flow is as follows:

  1. The user is initially presented with a screen that prompts them to generate a new Passkey
  2. Once the Passkey is confirmed using biometrics, it is securely stored on the user's iPhone
  3. The new Passkey is then used to sign the challenge received from the server
  4. Upon successful signing of the challenge, the Passkey registration process is complete, and the user can continue with the rest of the registration process

As a last step in the registration process, the signed challenge is sent back to the server, if server is successfully able to verify the signed challenge, a new user account is created on the server