verify method
Verify signature over message against the verification key vk.
Implementation
bool verify(Uint8List vk, Uint8List message, Uint8List signature) {
final n = param.n;
if ((8 * vk.length) % n != 0) {
throw ArgumentError('Invalid verification key for Falcon-$n');
}
final h = deserializePoly(vk, n);
final salt = signature.sublist(headLen, headLen + saltLen);
final encS = signature.sublist(headLen + saltLen);
final s1 = decompress(encS, param.sigBytelen - headLen - saltLen, n);
if (s1 == null) return false;
// Recover s0 = hashed - s1*h and normalize into (-q/2, q/2].
final hashed = hashToPoint(message, salt);
final s1q = [for (final e in s1) e % falconQ];
final s0q = subZq(hashed, mulZq(s1q, h));
const half = falconQ >> 1;
final s0 = [for (final e in s0q) (e + half) % falconQ - half];
// Accept iff (s0, s1) is short enough.
final norm = FalconUtils.sqnorm([s0, s1]);
return norm <= param.sigBound;
}