bool verifySignature(Uint8List signature, Uint8List message, Uint8List pubKey)

Verifies given signature signature with message message and public key pubKey. Returns bool that indicates if verification is successful.

var sig = new Uint8List(32);
var m = new Uint8List(32);
var pk = new Uint8List(32);
verifySignature(sig, m, pk); // false

Source

bool verifySignature(Uint8List signature, Uint8List message, Uint8List pubKey) {
  if (signature.lengthInBytes != bits / 4) {
    return false;
  }
  if (pubKey.length != bits / 8) {
    return false;
  }
  var sigSublist = signature.sublist(0, 32);
  var preDigest = new List<int>.from(sigSublist);
  preDigest.addAll(pubKey);
  preDigest.addAll(message);
  var hashInt = bytesToInteger(Hash(bytesFromList(preDigest)));
  var signatureInt = bytesToInteger(signature.sublist(32, 64));
  var signatureScalar = scalarMult(basePoint, signatureInt);
  var pubKeyScalar = scalarMult(decodePoint(bytesToInteger(pubKey)), hashInt);
  var edwardsPubKeyScalar =
  edwards(decodePoint(bytesToInteger(sigSublist)), pubKeyScalar);
  var verified = (signatureScalar.length == edwardsPubKeyScalar.length &&
      signatureScalar[0] == edwardsPubKeyScalar[0] &&
      signatureScalar[1] == edwardsPubKeyScalar[1]);
  return verified;
}