aboutsummaryrefslogtreecommitdiff
path: root/src/common/Cryptography/BigNumber.cpp
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-07-29 00:07:41 +0200
committerShauren <shauren.trinity@gmail.com>2020-08-03 21:16:30 +0200
commit77380f032b772ff180b6b663d241079a12eb608b (patch)
tree0a365577d58950c6e79dc451a63b6f559761a155 /src/common/Cryptography/BigNumber.cpp
parentac37ca040be8f5beaad4e94a613534fa643c04c9 (diff)
Core/Authserver: Split SRP6 into its own file (PR #25131)
(cherry picked from commit 7f7fa8b23d71297f75ff4ca3c1d6e38333a5cc76)
Diffstat (limited to 'src/common/Cryptography/BigNumber.cpp')
-rw-r--r--src/common/Cryptography/BigNumber.cpp40
1 files changed, 29 insertions, 11 deletions
diff --git a/src/common/Cryptography/BigNumber.cpp b/src/common/Cryptography/BigNumber.cpp
index e0241c77486..62e459c6dce 100644
--- a/src/common/Cryptography/BigNumber.cpp
+++ b/src/common/Cryptography/BigNumber.cpp
@@ -27,7 +27,7 @@ BigNumber::BigNumber()
{ }
BigNumber::BigNumber(BigNumber const& bn)
- : _bn(BN_dup(bn._bn))
+ : _bn(BN_dup(bn.BN()))
{ }
BigNumber::~BigNumber()
@@ -35,6 +35,13 @@ BigNumber::~BigNumber()
BN_free(_bn);
}
+void BigNumber::SetDword(int32 val)
+{
+ SetDword(uint32(abs(val)));
+ if (val < 0)
+ BN_set_negative(_bn, 1);
+}
+
void BigNumber::SetDword(uint32 val)
{
BN_set_word(_bn, val);
@@ -88,19 +95,19 @@ BigNumber& BigNumber::operator=(BigNumber const& bn)
return *this;
}
-BigNumber BigNumber::operator+=(BigNumber const& bn)
+BigNumber& BigNumber::operator+=(BigNumber const& bn)
{
BN_add(_bn, _bn, bn._bn);
return *this;
}
-BigNumber BigNumber::operator-=(BigNumber const& bn)
+BigNumber& BigNumber::operator-=(BigNumber const& bn)
{
BN_sub(_bn, _bn, bn._bn);
return *this;
}
-BigNumber BigNumber::operator*=(BigNumber const& bn)
+BigNumber& BigNumber::operator*=(BigNumber const& bn)
{
BN_CTX *bnctx;
@@ -111,18 +118,18 @@ BigNumber BigNumber::operator*=(BigNumber const& bn)
return *this;
}
-BigNumber BigNumber::operator/=(BigNumber const& bn)
+BigNumber& BigNumber::operator/=(BigNumber const& bn)
{
BN_CTX *bnctx;
bnctx = BN_CTX_new();
- BN_div(_bn, NULL, _bn, bn._bn, bnctx);
+ BN_div(_bn, nullptr, _bn, bn._bn, bnctx);
BN_CTX_free(bnctx);
return *this;
}
-BigNumber BigNumber::operator%=(BigNumber const& bn)
+BigNumber& BigNumber::operator%=(BigNumber const& bn)
{
BN_CTX *bnctx;
@@ -133,7 +140,18 @@ BigNumber BigNumber::operator%=(BigNumber const& bn)
return *this;
}
-BigNumber BigNumber::Exp(BigNumber const& bn)
+BigNumber& BigNumber::operator<<=(int n)
+{
+ BN_lshift(_bn, _bn, n);
+ return *this;
+}
+
+int BigNumber::CompareTo(BigNumber const& bn) const
+{
+ return BN_cmp(_bn, bn._bn);
+}
+
+BigNumber BigNumber::Exp(BigNumber const& bn) const
{
BigNumber ret;
BN_CTX *bnctx;
@@ -145,7 +163,7 @@ BigNumber BigNumber::Exp(BigNumber const& bn)
return ret;
}
-BigNumber BigNumber::ModExp(BigNumber const& bn1, BigNumber const& bn2)
+BigNumber BigNumber::ModExp(BigNumber const& bn1, BigNumber const& bn2) const
{
BigNumber ret;
BN_CTX *bnctx;
@@ -157,12 +175,12 @@ BigNumber BigNumber::ModExp(BigNumber const& bn1, BigNumber const& bn2)
return ret;
}
-int32 BigNumber::GetNumBytes(void) const
+int32 BigNumber::GetNumBytes() const
{
return BN_num_bytes(_bn);
}
-uint32 BigNumber::AsDword()
+uint32 BigNumber::AsDword() const
{
return (uint32)BN_get_word(_bn);
}