7#include <botan/internal/ct_utils.h>
14 const uint8_t input[],
28 offset = valid_offset.select(offset, input_length);
30 const size_t output_bytes = input_length - offset;
38 for(
size_t i = 0; i != input_length; ++i)
44 for(
size_t j = i; j != input_length; ++j)
46 const uint8_t b = input[j];
48 output[i] |= is_eq.if_set_return(b);
62 output.resize(output_bytes);
68 size_t leading_zeros = 0;
72 for(
size_t i = 0; i != length; ++i)
75 leading_zeros += only_zeros.if_set_return(1);
void if_set_zero_out(T buf[], size_t elems)
static Mask< T > is_equal(T x, T y)
static Mask< T > is_zero(T x)
static Mask< T > is_lte(T x, T y)
secure_vector< uint8_t > copy_output(CT::Mask< uint8_t > bad_input, const uint8_t input[], size_t input_length, size_t offset)
void unpoison(const T *p, size_t n)
secure_vector< uint8_t > strip_leading_zeros(const uint8_t in[], size_t length)
std::vector< T, secure_allocator< T > > secure_vector