8 #include <botan/bigint.h>
9 #include <botan/divide.h>
10 #include <botan/charset.h>
11 #include <botan/hex.h>
30 binary.data(), binary.size());
38 for(
size_t j = 0; j != output_size; ++j)
40 divide(copy, 10, copy, remainder);
41 output[output_size - 1 - j] =
57 encode(output.data(), n, base);
59 for(
size_t j = 0; j != output.size(); ++j)
71 encode(output.data(), n, base);
73 for(
size_t j = 0; j != output.size(); ++j)
92 const size_t n_bytes = n.
bytes();
94 throw Encoding_Error(
"encode_1363: n is too large to encode properly");
96 const size_t leading_0s = bytes - n_bytes;
126 const char buf0_with_leading_0[2] =
127 {
'0',
static_cast<char>(buf[0]) };
143 for(
size_t i = 0; i != length; ++i)
150 "Invalid character in decimal input");
size_t encoded_size(Base base=Binary) const
word word_at(size_t n) const
void binary_encode(uint8_t buf[]) const
void divide(const BigInt &x, const BigInt &y_arg, BigInt &q, BigInt &r)
static secure_vector< uint8_t > encode_locked(const BigInt &n, Base base=Binary)
char digit2char(uint8_t b)
std::vector< T, secure_allocator< T >> secure_vector
secure_vector< uint8_t > hex_decode_locked(const char input[], size_t input_length, bool ignore_ws)
uint8_t char2digit(char c)
void binary_decode(const uint8_t buf[], size_t length)
static secure_vector< uint8_t > encode_1363(const BigInt &n, size_t bytes)
void hex_encode(char output[], const uint8_t input[], size_t input_length, bool uppercase)
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, Base base=Binary)
static BigInt decode(const uint8_t buf[], size_t length, Base base=Binary)