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)