Trait subtle::ConstantTimeGreater [−][src]
A type which can be compared in some manner and be determined to be greater than another of the same type.
Required methods
fn ct_gt(&self, other: &Self) -> Choice
[src]
Determine whether self > other
.
The bitwise-NOT of the return value of this function should be usable to
determine if self <= other
.
This function should execute in constant time.
Returns
A Choice
with a set bit if self > other
, and with no set bits
otherwise.
Example
use subtle::ConstantTimeGreater; let x: u8 = 13; let y: u8 = 42; let x_gt_y = x.ct_gt(&y); assert_eq!(x_gt_y.unwrap_u8(), 0); let y_gt_x = y.ct_gt(&x); assert_eq!(y_gt_x.unwrap_u8(), 1); let x_gt_x = x.ct_gt(&x); assert_eq!(x_gt_x.unwrap_u8(), 0);
Implementations on Foreign Types
impl ConstantTimeGreater for u8
[src]
fn ct_gt(&self, other: &u8) -> Choice
[src]
Returns Choice::from(1) iff x > y, and Choice::from(0) iff x <= y.
Note
This algoritm would also work for signed integers if we first
flip the top bit, e.g. let x: u8 = x ^ 0x80
, etc.
impl ConstantTimeGreater for u16
[src]
fn ct_gt(&self, other: &u16) -> Choice
[src]
Returns Choice::from(1) iff x > y, and Choice::from(0) iff x <= y.
Note
This algoritm would also work for signed integers if we first
flip the top bit, e.g. let x: u8 = x ^ 0x80
, etc.
impl ConstantTimeGreater for u32
[src]
fn ct_gt(&self, other: &u32) -> Choice
[src]
Returns Choice::from(1) iff x > y, and Choice::from(0) iff x <= y.
Note
This algoritm would also work for signed integers if we first
flip the top bit, e.g. let x: u8 = x ^ 0x80
, etc.
impl ConstantTimeGreater for u64
[src]
fn ct_gt(&self, other: &u64) -> Choice
[src]
Returns Choice::from(1) iff x > y, and Choice::from(0) iff x <= y.
Note
This algoritm would also work for signed integers if we first
flip the top bit, e.g. let x: u8 = x ^ 0x80
, etc.