verifySignature method

  1. @override
bool verifySignature(
  1. ReddsaSignature signature,
  2. List<int> message, {
  3. bool hashMessage = true,
})
override

Verifies a RedDSA signature for a message.

Implementation

@override
bool verifySignature(
  ReddsaSignature signature,
  List<int> message, {
  bool hashMessage = true,
}) {
  if (hashMessage) {
    message = QuickCrypto.blake2b512Hash(
      signature.rBytes,
      personalization: "Zcash_RedJubjubH".codeUnits,
      extraBlocks: [toBytes(), message],
    );
  }
  try {
    final c = JubJubNativeFr.fromBytes64(message);
    final r = JubJubNativePoint.fromBytes(signature.rBytes);
    final s = JubJubNativeFr.fromBytes(signature.sBytes);
    final sb = generator() * s;
    final ca = toPoint() * c;
    final n = (sb - ca - r);
    return n.isSmallOrder();
  } catch (_) {}
  return false;
}