verifySignature method
signature must a valid aptos signature serialized as BCS (AnySignature,ED25519Signature,MultiKeySignature or...);
Implementation
@override
bool verifySignature(
{required List<int> message, required List<int> signature}) {
AptosMultiEd25519Signature anySignature;
try {
anySignature = AptosMultiEd25519Signature.deserialize(signature);
} catch (_) {
throw DartAptosPluginException(
"Invalid Aptos MultiED25519 Signature. deserialize signature failed.");
}
if (anySignature.signatures.isEmpty) return false;
final indexes = anySignature.getIndexesBitmap(anySignature.bitmap);
for (int i = 0; i < indexes.length; i++) {
final signature = anySignature.signatures[i];
final pubkeyIndex = indexes[i];
if (pubkeyIndex >= publicKeys.length) return false;
final publicKey = publicKeys.elementAt(pubkeyIndex);
if (!publicKey.verify(message: message, signature: signature.signature)) {
return false;
}
}
return true;
}