verifySignature method

  1. @override
bool verifySignature({
  1. required List<int> message,
  2. required List<int> signature,
})
override

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