isValidJwtAttestation method

Future<AttestationResponse?> isValidJwtAttestation(
  1. String attestationId,
  2. String attestationJWT
)

Implementation

Future<AttestationResponse?> isValidJwtAttestation(
  String attestationId,
  String attestationJWT,
) async {
  final key = await getPublicKey();
  _core.logger.d('[$runtimeType] validating v2 public key: ${key?.toJson()}');
  try {
    if (key != null) {
      final claims = validateAttestation(attestationJWT, key);
      _core.logger.d('[$runtimeType] claims: $claims');
      return AttestationResponse(
        origin: claims.origin,
        attestationId: attestationId,
        isScam: claims.isScam,
      );
    }
  } catch (e) {
    _core.logger.e('[$runtimeType] error validating attestation: $e');
  }

  final newKey = await fetchAndPersistPublicKey();
  try {
    if (newKey != null) {
      final claims = validateAttestation(attestationJWT, newKey);
      _core.logger.d('[$runtimeType] claims: $claims');
      return AttestationResponse(
        origin: claims.origin,
        attestationId: attestationId,
        isScam: claims.isScam,
      );
    }
  } catch (e) {
    _core.logger.e('[$runtimeType] error validating attestation: $e');
  }
  return null;
}