authenticate method

Future<UuidValue> authenticate(
  1. Session session, {
  2. required PasskeyLoginRequest request,
  3. required Transaction? transaction,
})

Authenticates the client with the given Passkey credentials.

Returns the AuthUser's ID upon successful login.

Throws a PasskeyChallengeNotFoundException if the challenge is not found. Throws a PasskeyChallengeExpiredException if the challenge has expired. Throws a PasskeyPublicKeyNotFoundException if the public key is not found.

Implementation

Future<UuidValue> authenticate(
  final Session session, {
  required final PasskeyLoginRequest request,
  required final Transaction? transaction,
}) async {
  final challenge = await _consumeChallenge(
    session,
    request.challengeId,
    transaction: transaction,
  );

  final passkeyAccount = await _getAccount(
    session,
    keyId: request.keyId,
    transaction: transaction,
  );

  await _passkeys.verifyLogin(
    registrationAttestationObject:
        passkeyAccount.attestationObject.asUint8List,
    authenticatorData: request.authenticatorData.asUint8List,
    clientDataJSON: request.clientDataJSON.asUint8List,
    signature: request.signature.asUint8List,
    challenge: challenge.challenge.asUint8List,
  );

  return passkeyAccount.authUserId;
}