8 #include <botan/emsa_raw.h>
15 void EMSA_Raw::update(
const uint8_t input[],
size_t length)
17 m_message += std::make_pair(input, length);
23 secure_vector<uint8_t> EMSA_Raw::raw_data()
25 secure_vector<uint8_t> output;
26 std::swap(m_message, output);
33 secure_vector<uint8_t> EMSA_Raw::encoding_of(
const secure_vector<uint8_t>& msg,
35 RandomNumberGenerator&)
43 bool EMSA_Raw::verify(
const secure_vector<uint8_t>& coded,
44 const secure_vector<uint8_t>& raw,
47 if(coded.size() == raw.size())
48 return (coded == raw);
50 if(coded.size() > raw.size())
54 const size_t leading_zeros_expected = raw.size() - coded.size();
56 bool same_modulo_leading_zeros =
true;
58 for(
size_t i = 0; i != leading_zeros_expected; ++i)
60 same_modulo_leading_zeros =
false;
62 if(!
same_mem(coded.data(), raw.data() + leading_zeros_expected, coded.size()))
63 same_modulo_leading_zeros =
false;
65 return same_modulo_leading_zeros;
bool same_mem(const T *p1, const T *p2, size_t n)