diff options
Diffstat (limited to 'tdutils')
| -rw-r--r-- | tdutils/td/utils/BigNum.cpp | 11 | ||||
| -rw-r--r-- | tdutils/td/utils/BigNum.h | 4 | ||||
| -rw-r--r-- | tdutils/td/utils/crypto.cpp | 3 |
3 files changed, 11 insertions, 7 deletions
diff --git a/tdutils/td/utils/BigNum.cpp b/tdutils/td/utils/BigNum.cpp index 3bfd10204..2dd9a11f2 100644 --- a/tdutils/td/utils/BigNum.cpp +++ b/tdutils/td/utils/BigNum.cpp @@ -291,16 +291,19 @@ Result<BigNum> BigNum::mod_inverse(BigNum &a, const BigNum &m, BigNumContext &co return std::move(r); } -void BigNum::div(BigNum *quotient, BigNum *remainder, const BigNum ÷nd, const BigNum &divisor, - BigNumContext &context) { +Status BigNum::div(BigNum *quotient, BigNum *remainder, const BigNum ÷nd, const BigNum &divisor, + BigNumContext &context) { auto q = quotient == nullptr ? nullptr : quotient->impl_->big_num; auto r = remainder == nullptr ? nullptr : remainder->impl_->big_num; if (q == nullptr && r == nullptr) { - return; + return Status::OK(); } auto result = BN_div(q, r, dividend.impl_->big_num, divisor.impl_->big_num, context.impl_->big_num_context); - LOG_IF(FATAL, result != 1); + if (result != 1) { + return Status::Error("Failed to compute quotient"); + } + return Status::OK(); } void BigNum::mod_exp(BigNum &r, const BigNum &a, const BigNum &p, const BigNum &m, BigNumContext &context) { diff --git a/tdutils/td/utils/BigNum.h b/tdutils/td/utils/BigNum.h index 0219d145d..b889f0556 100644 --- a/tdutils/td/utils/BigNum.h +++ b/tdutils/td/utils/BigNum.h @@ -99,8 +99,8 @@ class BigNum { static Result<BigNum> mod_inverse(BigNum &a, const BigNum &m, BigNumContext &context); - static void div(BigNum *quotient, BigNum *remainder, const BigNum ÷nd, const BigNum &divisor, - BigNumContext &context); + static Status div(BigNum *quotient, BigNum *remainder, const BigNum ÷nd, const BigNum &divisor, + BigNumContext &context) TD_WARN_UNUSED_RESULT; static void mod_exp(BigNum &r, const BigNum &a, const BigNum &p, const BigNum &m, BigNumContext &context); diff --git a/tdutils/td/utils/crypto.cpp b/tdutils/td/utils/crypto.cpp index bbaef2466..35eb0443c 100644 --- a/tdutils/td/utils/crypto.cpp +++ b/tdutils/td/utils/crypto.cpp @@ -214,7 +214,8 @@ static int pq_factorize_big(Slice pq_str, string *p_str, string *q_str) { } if (found) { - BigNum::div(&q, nullptr, pq, p, context); + auto status = BigNum::div(&q, nullptr, pq, p, context); + CHECK(status.is_ok()); if (BigNum::compare(p, q) > 0) { std::swap(p, q); } |
