8#include <botan/bigint.h>
9#include <botan/divide.h>
10#include <botan/charset.h>
21 std::vector<uint8_t> digits;
26 digits.push_back(remainder);
31 for(
auto i = digits.rbegin(); i != digits.rend(); ++i)
57 copy_mem(output, enc.data(), enc.size());
62std::vector<uint8_t> str_to_vector(
const std::string& s)
64 std::vector<uint8_t> v(s.size());
65 std::memcpy(v.data(), s.data(), s.size());
69secure_vector<uint8_t> str_to_lvector(
const std::string& s)
71 secure_vector<uint8_t> v(s.size());
72 std::memcpy(v.data(), s.data(), s.size());
114 throw Encoding_Error(
"encode_1363: n is too large to encode properly");
125 throw Encoding_Error(
"encode_1363: n is too large to encode properly");
136 throw Encoding_Error(
"encode_fixed_length_int_pair: values too large to encode properly");
160 const char buf0_with_leading_0[2] =
161 {
'0',
static_cast<char>(buf[0]) };
177 for(
size_t i = 0; i != length; ++i)
184 "Invalid character in decimal input");
void binary_decode(const uint8_t buf[], size_t length)
static BigInt decode(const uint8_t buf[], size_t length)
std::string to_dec_string() const
static secure_vector< uint8_t > encode_locked(const BigInt &n)
void binary_encode(uint8_t buf[]) const
std::string to_hex_string() const
static secure_vector< uint8_t > encode_fixed_length_int_pair(const BigInt &n1, const BigInt &n2, size_t bytes)
static std::vector< uint8_t > encode(const BigInt &n)
static secure_vector< uint8_t > encode_1363(const BigInt &n, size_t bytes)
uint8_t char2digit(char c)
char digit2char(uint8_t b)
void ct_divide_u8(const BigInt &x, uint8_t y, BigInt &q_out, uint8_t &r_out)
secure_vector< uint8_t > hex_decode_locked(const char input[], size_t input_length, bool ignore_ws)
void copy_mem(T *out, const T *in, size_t n)
void hex_encode(char output[], const uint8_t input[], size_t input_length, bool uppercase)
const char * cast_uint8_ptr_to_char(const uint8_t *b)
std::vector< T, secure_allocator< T > > secure_vector