verify method

  1. @override
bool verify(
  1. Uint8List data,
  2. Uint8List signature
)
override

Verifies that the signature is valid for for the provided message

Implementation

@override
  bool verify(Uint8List data, Uint8List signature) {
	// Multisig verification only supports serialized signature
    final sig = parseSerializedSignature(base64Encode(signature));
    final signatureScheme = sig.signatureScheme;
    final multisig = sig.multisig;

	if (signatureScheme != SignatureScheme.MultiSig) {
		throw ArgumentError("Invalid signature scheme");
	}

	int signatureWeight = 0;

	if (
		!bytesEqual(
        bcs.ser("MultiSigPublicKey", _multisigPublicKey).toBytes(),
        bcs.ser("MultiSigPublicKey", multisig!.multisigPK).toBytes(),
		)
	) {
		return false;
	}

    final parseSig = parsePartialSignatures(multisig);
    for (var item in parseSig) {
      final publicKey = item.publicKey;
      final weight = item.weight;
      final signature = item.signature;

		if (!(publicKey.verify(data, signature))) {
			return false;
		}

		signatureWeight += weight;
	}

	return signatureWeight >= _multisigPublicKey.threshold;
}