registerPasskey method

Future<void> registerPasskey(
  1. Session session, {
  2. required UuidValue authUserId,
  3. required PasskeyRegistrationRequest request,
  4. required Transaction? transaction,
})

Links the given passkey to the authUserId.

Implementation

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

  await _passkeys.verifyRegistration(
    keyId: request.keyId.asUint8List,
    attestationObject: request.attestationObject.asUint8List,
    clientDataJSON: request.clientDataJSON.asUint8List,
    challenge: challenge.challenge.asUint8List,
  );

  await PasskeyAccount.db.insertRow(
    session,
    PasskeyAccount(
      authUserId: authUserId,
      keyId: request.keyId,
      keyIdBase64: base64Encode(request.keyId.asUint8List),
      clientDataJSON: request.clientDataJSON,
      attestationObject: request.attestationObject,
      originalChallenge: challenge.challenge,
    ),
    transaction: transaction,
  );
}