136 template <
typename Alloc>
138 DL_Group(ber.data(), ber.size(), format) {}
144 const BigInt& get_p()
const;
150 const BigInt& get_q()
const;
156 const BigInt& get_g()
const;
172 bool verify_public_element(
const BigInt& y)
const;
180 bool verify_private_element(
const BigInt& x)
const;
274 BigInt power_g_p(
const BigInt& x,
size_t max_x_bits)
const;
304 std::shared_ptr<const Montgomery_Params> monty_params_p()
const;
310 size_t p_bits()
const;
316 size_t p_bytes()
const;
323 size_t q_bits()
const;
330 size_t q_bytes()
const;
347 size_t exponent_bits()
const;
355 size_t estimated_strength()
const;
375 static std::shared_ptr<DL_Group_Data> DL_group_info(std::string_view name);
383 DL_Group(std::shared_ptr<DL_Group_Data> data) : m_data(std::move(data)) {}
385 static std::shared_ptr<DL_Group_Data> load_DL_group_info(
const char* p_str,
const char* q_str,
const char* g_str);
387 static std::shared_ptr<DL_Group_Data> load_DL_group_info(
const char* p_str,
const char* g_str);
389 static std::shared_ptr<DL_Group_Data> BER_decode_DL_group(
const uint8_t data[],
391 DL_Group_Format format,
392 DL_Group_Source source);
394 const DL_Group_Data& data()
const;
395 std::shared_ptr<DL_Group_Data> m_data;