8#include <botan/internal/eme_pkcs.h>
10#include <botan/exceptn.h>
12#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) {
66 bad_input_m |= ~CT::Mask<uint8_t>::is_equal(in[0], 0);
67 bad_input_m |= ~CT::Mask<uint8_t>::is_equal(in[1], 2);
69 for(
size_t i = 2; i < inlen; ++i) {
72 seen_zero_m |= is_zero_m;
76 bad_input_m |= ~seen_zero_m;
84 valid_mask = (~bad_input_m).unpoisoned_value();
96 if(keybits / 8 > 10) {
97 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