From 7e1d116d70c8188be4b96620d636d3b879810df7 Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 8 Aug 2018 22:56:23 +0300 Subject: [PATCH] Add BigNum::mod_inv. GitOrigin-RevId: 98733421e0b8a6924724a4c13f2cd9ad937e3b0d --- tdutils/td/utils/BigNum.cpp | 5 +++++ tdutils/td/utils/BigNum.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/tdutils/td/utils/BigNum.cpp b/tdutils/td/utils/BigNum.cpp index f553661d4..6e21b435b 100644 --- a/tdutils/td/utils/BigNum.cpp +++ b/tdutils/td/utils/BigNum.cpp @@ -220,6 +220,11 @@ void BigNum::mod_mul(BigNum &r, BigNum &a, BigNum &b, const BigNum &m, BigNumCon LOG_IF(FATAL, result != 1); } +void BigNum::mod_inv(BigNum &r, BigNum &a, const BigNum &m, BigNumContext &context) { + BIGNUM *result = BN_mod_inverse(r.impl_->big_num, a.impl_->big_num, m.impl_->big_num, context.impl_->big_num_context); + LOG_IF(FATAL, result == nullptr); +} + void BigNum::div(BigNum *quotient, BigNum *remainder, const BigNum ÷nd, const BigNum &divisor, BigNumContext &context) { auto q = quotient == nullptr ? nullptr : quotient->impl_->big_num; diff --git a/tdutils/td/utils/BigNum.h b/tdutils/td/utils/BigNum.h index 6eecdeab0..8de4e5871 100644 --- a/tdutils/td/utils/BigNum.h +++ b/tdutils/td/utils/BigNum.h @@ -87,6 +87,8 @@ class BigNum { static void mod_mul(BigNum &r, BigNum &a, BigNum &b, const BigNum &m, BigNumContext &context); + static void mod_inv(BigNum &r, BigNum &a, const BigNum &m, BigNumContext &context); + static void div(BigNum *quotient, BigNum *remainder, const BigNum ÷nd, const BigNum &divisor, BigNumContext &context);