Add functions for getting BigNum parameters of DhHandshake.
GitOrigin-RevId: 7ad8d822f5d4c696769b5585b6fc6533ba56d0e0
This commit is contained in:
parent
7e1d116d70
commit
c44361fb60
@ -318,11 +318,30 @@ Status DhHandshake::run_checks(DhCallback *callback) {
|
||||
return dh_check(prime_str_, prime_, g_int_, g_a_, g_b_, ctx_, callback);
|
||||
}
|
||||
|
||||
std::pair<int64, string> DhHandshake::gen_key() {
|
||||
BigNum DhHandshake::get_g() const {
|
||||
CHECK(has_config_);
|
||||
return g_;
|
||||
}
|
||||
|
||||
BigNum DhHandshake::get_p() const {
|
||||
CHECK(has_config_);
|
||||
return prime_;
|
||||
}
|
||||
|
||||
BigNum DhHandshake::get_b() const {
|
||||
CHECK(has_config_);
|
||||
return b_;
|
||||
}
|
||||
|
||||
BigNum DhHandshake::get_g_ab() {
|
||||
CHECK(has_g_a_ && has_config_);
|
||||
BigNum g_ab;
|
||||
BigNum::mod_exp(g_ab, g_a_, b_, prime_, ctx_);
|
||||
string key = g_ab.to_binary(2048 / 8);
|
||||
return g_ab;
|
||||
}
|
||||
|
||||
std::pair<int64, string> DhHandshake::gen_key() {
|
||||
string key = get_g_ab().to_binary(2048 / 8);
|
||||
auto key_id = calc_key_id(key);
|
||||
return std::pair<int64, string>(key_id, std::move(key));
|
||||
}
|
||||
|
@ -55,6 +55,7 @@ class DhCallback {
|
||||
virtual void add_good_prime(Slice prime_str) const = 0;
|
||||
virtual void add_bad_prime(Slice prime_str) const = 0;
|
||||
};
|
||||
|
||||
class DhHandshake {
|
||||
public:
|
||||
void set_config(int32 g_int, Slice prime_str);
|
||||
@ -72,6 +73,11 @@ class DhHandshake {
|
||||
string get_g_b_hash() const;
|
||||
Status run_checks(DhCallback *callback) TD_WARN_UNUSED_RESULT;
|
||||
|
||||
BigNum get_g() const;
|
||||
BigNum get_p() const;
|
||||
BigNum get_b() const;
|
||||
BigNum get_g_ab();
|
||||
|
||||
std::pair<int64, string> gen_key();
|
||||
|
||||
static int64 calc_key_id(const string &auth_key);
|
||||
@ -157,4 +163,5 @@ int64 dh_auth_key_id(const string &auth_key);
|
||||
void KDF(const string &auth_key, const UInt128 &msg_key, int X, UInt256 *aes_key, UInt256 *aes_iv);
|
||||
void tmp_KDF(const UInt128 &server_nonce, const UInt256 &new_nonce, UInt256 *tmp_aes_key, UInt256 *tmp_aes_iv);
|
||||
void KDF2(Slice auth_key, const UInt128 &msg_key, int X, UInt256 *aes_key, UInt256 *aes_iv);
|
||||
|
||||
} // namespace td
|
||||
|
Reference in New Issue
Block a user