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