Botan  1.11.15
Functions
Botan::TA_CM Namespace Reference

Functions

u16bit expand_mask_u16bit (u16bit in)
u32bit expand_mask_u32bit (u32bit in)
u32bit max_32 (u32bit a, u32bit b)
u32bit min_32 (u32bit a, u32bit b)

Function Documentation

Expand an input to a bit mask depending on it being being zero or non-zero @ param in the input

Returns:
the mask 0xFFFF if tst is non-zero and 0 otherwise

Definition at line 45 of file ta_utils.cpp.

   {
   return expand_mask<u16bit>(in);
   }

Function used in timing attack countermeasures See Wagner, Molnar, et al "The Program Counter Security Model"

Parameters:
inan integer
Returns:
0 if in == 0 else 0xFFFFFFFF

Definition at line 40 of file ta_utils.cpp.

   {
   return expand_mask<u32bit>(in);
   }
u32bit Botan::TA_CM::max_32 ( u32bit  a,
u32bit  b 
)

Branch-free maximum Note: assumes twos-complement signed representation

Parameters:
aan integer
ban integer
Returns:
max(a,b)

Definition at line 50 of file ta_utils.cpp.

   {
   const u32bit a_larger = b - a; /* negative if a larger */
   const u32bit mask = expand_mask<u32bit>(a_larger >> 31);
   return (a & mask) | (b & ~mask);
   }
u32bit Botan::TA_CM::min_32 ( u32bit  a,
u32bit  b 
)

Branch-free minimum Note: assumes twos-complement signed representation

Parameters:
aan integer
ban integer
Returns:
min(a,b)

Definition at line 57 of file ta_utils.cpp.

   {
   const u32bit a_larger = b - a; /* negative if a larger */
   const u32bit mask = expand_mask<u32bit>(a_larger >> 31);
   return (a & ~mask) | (b & mask);
   }