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}) {
AptosMultiKeySignature anySignature;
try {
anySignature = AptosMultiKeySignature.deserialize(signature);
} catch (_) {
throw DartAptosPluginException(
"Invalid Aptos Multikey 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.algorithm != signature.type.toSupportedKeyAlgorithm) {
return false;
}
if (!publicKey.verify(
message: message, signature: signature.signatureBytes())) {
return false;
}
}
return true;
}