14 #ifndef BOTAN_TIMING_ATTACK_CM_H__    15 #define BOTAN_TIMING_ATTACK_CM_H__    17 #include <botan/secmem.h>    37    for(
size_t i = 1; i != 
sizeof(T)*8; i *= 2)
    45 inline T 
select(T mask, T from0, T from1)
    47    return (from0 & mask) | (from1 & ~mask);
    50 template<
typename PredT, 
typename ValT>
    53    return select(CT::expand_mask<ValT>(pred_val), val, static_cast<ValT>(0));
    75    return expand_mask<T>(x < y);
    81    return expand_mask<T>(x <= y);
    93    for(
size_t i = 0; i != elems; ++i)
   107    for(
size_t i = 0; i != elems; ++i)
   116    return expand_mask<T>(a >> (
sizeof(T)*8-1));
   122    const T a_larger = b - a; 
   129    const T a_larger = b - a; 
 
void conditional_copy_mem(T value, T *to, const T *from0, const T *from1, size_t elems)
void cond_zero_mem(T cond, T *array, size_t elems)
T select(T mask, T from0, T from1)
ValT val_or_zero(PredT pred_val, ValT val)