verify method

Future<bool> verify({
  1. required Uint8List data,
})

Performs signature verification

Implementation

Future<bool> verify({required Uint8List data}) async {
  if (version != MULTISIG_VERSION || threshold <= 0 || subsigs.isEmpty) {
    return false;
  }

  if (threshold > subsigs.length) {
    return false;
  }

  var verifiedCount = 0;
  for (var i = 0; i < subsigs.length; i++) {
    final subsig = subsigs[i];
    final signature = subsig.signature;
    if (signature == null) {
      continue;
    }

    final pk = Address(publicKey: subsig.key.publicKey).toVerifyKey();
    final verified = await crypto.Ed25519().verify(
      data,
      signature: crypto.Signature(
        signature.bytes,
        publicKey: pk,
      ),
    );

    if (verified) {
      verifiedCount += 1;
    }
  }

  return verifiedCount >= threshold;
}