typedSignatureHash static method

Uint8List typedSignatureHash(
  1. List<EIP712TypedData> typedData
)

Implementation

static Uint8List typedSignatureHash(List<EIP712TypedData> typedData) {
  final data = typedData.map((e) {
    if (e.type == 'bytes') {
      if (isHexString(e.value)) {
        return hexToBytes(e.value);
      } else {
        return Uint8List.fromList(utf8.encode(e.value));
      }
    }
    return e.value;
  }).toList();
  final types = typedData.map((e) {
    return e.type;
  }).toList();
  final schema = typedData.map((e) {
    return '${e.type} ${e.name}';
  }).toList();

  return AbiUtil.soliditySHA3(
    ['bytes32', 'bytes32'],
    [
      AbiUtil.soliditySHA3(
          List.generate(typedData.length, (index) => 'string'), schema),
      AbiUtil.soliditySHA3(types, data),
    ],
  );
}