Function rejectNonCanonical [src]

Reject non-canonical encodings of an element, possibly ignoring the top bit

Prototype

pub fn rejectNonCanonical(s: [32]u8, comptime ignore_extra_bit: bool) NonCanonicalError!void

Parameters

s: [32]u8ignore_extra_bit: bool

Possible Errors

NonCanonical NonCanonicalError

Source

pub fn rejectNonCanonical(s: [32]u8, comptime ignore_extra_bit: bool) NonCanonicalError!void { var c: u16 = (s[31] & 0x7f) ^ 0x7f; comptime var i = 30; inline while (i > 0) : (i -= 1) { c |= s[i] ^ 0xff; } c = (c -% 1) >> 8; const d = (@as(u16, 0xed - 1) -% @as(u16, s[0])) >> 8; const x = if (ignore_extra_bit) 0 else s[31] >> 7; if ((((c & d) | x) & 1) != 0) { return error.NonCanonical; } }