aboutsummaryrefslogtreecommitdiff
path: root/src/common/Cryptography/BigNumber.h
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-07-26 05:15:43 +0200
committerShauren <shauren.trinity@gmail.com>2020-08-03 19:41:41 +0200
commit059bd630e92aa0f30602f41fc57185844fb413d1 (patch)
tree890b2cd13eeb3136ed8331dcd6e3281eb0e3fbe5 /src/common/Cryptography/BigNumber.h
parente9392ad28767626e519c463e2110184d71ba8426 (diff)
Core/Authserver: Auth cleanup phase 1a, the "stuff I ran across while making phase 2" commit.
- Did you know BigNumber quietly assumes every byte array it gets is little-endian, even though openssl bignums use big-endian? Now you do! - In entirely unrelated news, make the above behavior explicit through a default-true boolean, same as existing GetBytes derivatives. - Also, if you are in the enlightened openssl 1.1 crowd, there's no more endian wrangling involved, because openssl now does all of that for us. Progress! (cherry picked from commit 5e36bf7c67e077bd1664eee59d5758fbae7666cd)
Diffstat (limited to 'src/common/Cryptography/BigNumber.h')
-rw-r--r--src/common/Cryptography/BigNumber.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/common/Cryptography/BigNumber.h b/src/common/Cryptography/BigNumber.h
index 1f5050bc4f5..66ea0e53b76 100644
--- a/src/common/Cryptography/BigNumber.h
+++ b/src/common/Cryptography/BigNumber.h
@@ -34,15 +34,15 @@ class TC_COMMON_API BigNumber
BigNumber(uint32 v) : BigNumber() { SetDword(v); }
BigNumber(std::string const& v) : BigNumber() { SetHexStr(v); }
template <size_t Size>
- BigNumber(std::array<uint8, Size> const& v) : BigNumber() { SetBinary(v.data(), Size); }
+ BigNumber(std::array<uint8, Size> const& v, bool littleEndian = true) : BigNumber() { SetBinary(v.data(), Size, littleEndian); }
~BigNumber();
void SetDword(uint32);
void SetQword(uint64);
- void SetBinary(uint8 const* bytes, int32 len);
+ void SetBinary(uint8 const* bytes, int32 len, bool littleEndian = true);
template <typename Container>
- void SetBinary(Container const& c) { SetBinary(advstd::data(c), advstd::size(c)); }
+ auto SetBinary(Container const& c, bool littleEndian = true) -> std::enable_if_t<!std::is_pointer_v<Container>> { SetBinary(advstd::data(c), advstd::size(c), littleEndian); }
bool SetHexStr(char const* str);
bool SetHexStr(std::string const& str) { return SetHexStr(str.c_str()); }