validateSignature function

void validateSignature(
  1. RequestedProofs requestedProofs,
  2. String signature,
  3. ApplicationId applicationId,
  4. String linkingVersion,
  5. String timeStamp,
)

Implementation

void validateSignature(RequestedProofs requestedProofs, String signature,
    ApplicationId applicationId, String linkingVersion, String timeStamp) {
  try {
    var address = '';
    if (requestedProofs.claims.isNotEmpty &&
        (linkingVersion == 'V2Linking' ||
            requestedProofs.claims[0].payload.verificationType == 'MANUAL')) {
      final messageHash = keccak256(utf8.encode(jsonEncode({
        'providerId': requestedProofs.claims[0].httpProviderId,
        'timestamp': timeStamp,
      })));

      address = EthSigUtil.recoverSignature(
          signature: signature, message: messageHash);
    } else {
      final messageHash =
          keccak256(utf8.encode(jsonEncode(requestedProofs.toJson())));

      address = EthSigUtil.recoverSignature(
          signature: signature, message: messageHash);
    }

    if (applicationId.toLowerCase() != address.toLowerCase()) {
      throw InvalidSignatureError();
    }
  } catch (err) {
    rethrow;
  }
}