8#include <botan/internal/eme_pkcs.h>
9#include <botan/exceptn.h>
11#include <botan/internal/ct_utils.h>
32 rng.
randomize(out.data() + 1, (key_length - inlen - 2));
34 for(
size_t j = 1; j != key_length - inlen - 1; ++j)
51 const uint8_t in[],
size_t inlen)
const
71 bad_input_m |= ~CT::Mask<uint8_t>::is_equal(in[0], 0);
72 bad_input_m |= ~CT::Mask<uint8_t>::is_equal(in[1], 2);
74 for(
size_t i = 2; i < inlen; ++i)
78 seen_zero_m |= is_zero_m;
82 bad_input_m |= ~seen_zero_m;
90 valid_mask = (~bad_input_m).unpoisoned_value();
104 return ((keybits / 8) - 10);
static Mask< T > is_zero(T x)
T if_not_set_return(T x) const
static Mask< T > cleared()
secure_vector< uint8_t > pad(const uint8_t[], size_t, size_t, RandomNumberGenerator &) const override
size_t maximum_input_size(size_t) const override
secure_vector< uint8_t > unpad(uint8_t &valid_mask, const uint8_t in[], size_t in_len) const override
void randomize(std::span< uint8_t > output)
uint8_t next_nonzero_byte()
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)
size_t buffer_insert(std::vector< T, Alloc > &buf, size_t buf_offset, const T input[], size_t input_length)
std::vector< T, secure_allocator< T > > secure_vector