verifyPrsonalMessage method

  1. @override
bool verifyPrsonalMessage({
  1. required List<int> message,
  2. required List<int> signature,
})
override

verify personal message. the signature must be a valid sui signature.

Implementation

@override
bool verifyPrsonalMessage(
    {required List<int> message, required List<int> signature}) {
  try {
    final digest = SuiCryptoUtils.generatePersonalMessageDigest(message);

    final multisigSignature = SuiBaseSignature.deserialize(signature)
        .cast<SuiMultisigSignature>(error: "Invalid signature scheme.");

    // Check public key match
    if (multisigSignature.publicKey != this) {
      return false;
    }
    int weight = 0;
    for (final i in multisigSignature.signatures) {
      for (final publicKey in publicKeys) {
        if (i.algorithm != publicKey.publicKey.algorithm) continue;
        if (publicKey.publicKey
            .verify(message: digest, signature: i.signature)) {
          weight += publicKey.weight;
          break;
        }
      }
    }
    return weight >= threshold;
  } on DartSuiPluginException {
    rethrow;
  } catch (e) {
    throw DartSuiPluginException(
        "Invalid multisig signature: deserialize signature failed.");
  }
}