Function rejectNonCanonical [src]
Reject a scalar whose encoding is not canonical.
Prototype
pub fn rejectNonCanonical(s: CompressedScalar) NonCanonicalError!void
Parameters
s: CompressedScalar
Possible Errors
Source
pub fn rejectNonCanonical(s: CompressedScalar) NonCanonicalError!void {
var c: u8 = 0;
var n: u8 = 1;
var i: usize = 31;
while (true) : (i -= 1) {
const xs = @as(u16, s[i]);
const xfield_order_s = @as(u16, field_order_s[i]);
c |= @as(u8, @intCast(((xs -% xfield_order_s) >> 8) & n));
n &= @as(u8, @intCast(((xs ^ xfield_order_s) -% 1) >> 8));
if (i == 0) break;
}
if (c == 0) {
return error.NonCanonical;
}
}