7#include <botan/internal/ct_utils.h>
12 const uint8_t input[],
41 offset = bad_input.select(input_length, offset);
47 for(
size_t i = 0; i != input_length; ++i)
59 const size_t this_loop = offset + i;
65 for(
size_t j = i; j != input_length; ++j)
67 const uint8_t
b = input[j];
69 output[i] |= is_eq.if_set_return(
b);
73 const size_t output_bytes = input_length - offset;
83 output.resize(output_bytes);
89 size_t leading_zeros = 0;
93 for(
size_t i = 0; i != length; ++i)
96 leading_zeros += only_zeros.if_set_return(1);
static Mask< T > is_gt(T x, T y)
static Mask< T > is_equal(T x, T y)
static Mask< T > is_zero(T x)
static Mask< T > expand(T v)
void poison(const T *p, size_t n)
secure_vector< uint8_t > copy_output(CT::Mask< uint8_t > bad_input_u8, 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