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