hashMessage static method

Uint8List hashMessage({
  1. required String jsonData,
  2. required TypedDataVersion version,
  3. int? chainId,
})

Implementation

static Uint8List hashMessage(
    {required String jsonData,
    required TypedDataVersion version,
    int? chainId}) {
  late final rawTypedData;
  try {
    rawTypedData = jsonDecode(jsonData);
  } catch (_) {
    throw ArgumentError('jsonData format must be correct');
  }

  if (version == TypedDataVersion.V1) {
    late final List<EIP712TypedData> typedData;
    try {
      if (rawTypedData is List) {
        typedData =
            rawTypedData.map((e) => EIP712TypedData.fromJson(e)).toList();
      } else {
        typedData = [EIP712TypedData.fromJson(rawTypedData)];
      }
    } catch (_) {
      throw ArgumentError(
          'jsonData format is not corresponding to EIP712TypedData');
    }
    return TypedDataUtil.hashTypedDataV1(typedData);
  }

  late final typedData;
  try {
    typedData = TypedMessage.fromJson(rawTypedData);
  } catch (_) {
    throw ArgumentError(
        'jsonData format is not corresponding to TypedMessage');
  }

  return version == TypedDataVersion.V4
      ? TypedDataUtil.hashTypedDataV4(typedData)
      : TypedDataUtil.hashTypedDataV3(typedData);
}