18#ifndef _AUTH_BIGNUMBER_H
19#define _AUTH_BIGNUMBER_H
37 template <
size_t Size>
38 BigNumber(std::array<uint8, Size>
const& v,
bool littleEndian =
true) :
BigNumber() { SetBinary(v.data(), Size, littleEndian); }
45 void SetBinary(
uint8 const* bytes,
int32 len,
bool littleEndian =
true);
46 template <
typename Container>
47 auto SetBinary(
Container const& c,
bool littleEndian =
true) -> std::enable_if_t<!std::is_pointer_v<std::decay_t<Container>>> {
SetBinary(std::data(c), std::size(c), littleEndian); }
48 bool SetHexStr(
char const* str);
51 void SetRand(
int32 numbits);
101 int32 cmp = CompareTo(other);
103 return std::strong_ordering::less;
105 return std::strong_ordering::greater;
106 return std::strong_ordering::equal;
110 bool IsNegative()
const;
115 int32 GetNumBytes()
const;
117 struct bignum_st*
BN() {
return _bn; }
118 struct bignum_st const*
BN()
const {
return _bn; }
122 void GetBytes(
uint8* buf,
size_t bufsize,
bool littleEndian =
true)
const;
123 std::vector<uint8> ToByteVector(
int32 minSize = 0,
bool littleEndian =
true)
const;
125 template <std::
size_t Size>
126 std::array<uint8, Size>
ToByteArray(
bool littleEndian =
true)
const
128 std::array<uint8, Size> buf;
129 GetBytes(buf.data(), Size, littleEndian);
133 std::string AsHexStr()
const;
134 std::string AsDecStr()
const;
BigNumber(std::array< uint8, Size > const &v, bool littleEndian=true)
std::array< uint8, Size > ToByteArray(bool littleEndian=true) const
BigNumber operator*(BigNumber const &bn) const
BigNumber operator-(BigNumber const &bn) const
struct bignum_st const * BN() const
BigNumber operator%(BigNumber const &bn) const
BigNumber operator+(BigNumber const &bn) const
auto SetBinary(Container const &c, bool littleEndian=true) -> std::enable_if_t<!std::is_pointer_v< std::decay_t< Container > > >
bool SetHexStr(std::string const &str)
BigNumber(std::string const &v)
BigNumber operator/(BigNumber const &bn) const
std::strong_ordering operator<=>(BigNumber const &other) const
BigNumber operator<<(int n) const
bool operator==(BigNumber const &bn) const