recoverPublicKey static method

Uint8List? recoverPublicKey(
  1. dynamic data,
  2. String sig,
  3. TypedDataVersion version, {
  4. int? chainId,
})

Implementation

static Uint8List? recoverPublicKey(
    dynamic data, String sig, TypedDataVersion version,
    {int? chainId}) {
  var sigParams = SignatureUtil.fromRpcSig(sig);
  var messageHash;
  switch (version) {
    case TypedDataVersion.V1:
      if (!(data is List<EIP712TypedData>)) {
        throw ArgumentError(
            'Recover public key version 1 required EIP712TypedData object');
      }
      messageHash = hashTypedDataV1(data);
      break;
    case TypedDataVersion.V3:
      if (!(data is TypedMessage)) {
        throw ArgumentError(
            'Recover public key version 3 required TypedMessage object');
      }
      messageHash = hashTypedDataV3(data);
      break;
    case TypedDataVersion.V4:
      if (!(data is TypedMessage)) {
        throw ArgumentError(
            'Recover public key version 4 required TypedMessage object');
      }
      messageHash = hashTypedDataV4(data);
      break;
  }
  return SignatureUtil.recoverPublicKeyFromSignature(
      ECDSASignature(sigParams.r, sigParams.s, sigParams.v), messageHash,
      chainId: chainId);
}