verify method
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;
}