7#include <botan/internal/ct_utils.h>
12 const uint8_t input[],
40 offset = bad_input.select(input_length, offset);
46 for(
size_t i = 0; i != input_length; ++i) {
57 const size_t this_loop = offset + i;
63 for(
size_t j = i; j != input_length; ++j) {
64 const uint8_t b = input[j];
66 output[i] |= is_eq.if_set_return(b);
70 const size_t output_bytes = input_length - offset;
80 output.resize(output_bytes);
85 size_t leading_zeros = 0;
89 for(
size_t i = 0; i != length; ++i) {
91 leading_zeros += only_zeros.if_set_return(1);
static constexpr Mask< T > set()
static constexpr Mask< T > expand(T v)
static constexpr Mask< T > is_equal(T x, T y)
static constexpr Mask< T > is_gt(T x, T y)
static constexpr Mask< T > is_zero(T x)
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)
secure_vector< uint8_t > strip_leading_zeros(const uint8_t in[], size_t length)
constexpr void unpoison(const T *p, size_t n)
std::vector< T, secure_allocator< T > > secure_vector