121 explicit EC_Group(std::span<const uint8_t> ber);
145 static
EC_Group from_PEM(std::string_view pem);
158 return EC_Group::from_PEM(pem);
185 std::string PEM_encode()
const;
190 size_t get_p_bits()
const;
195 size_t get_p_bytes()
const;
200 size_t get_order_bits()
const;
205 size_t get_order_bytes()
const;
213 bool verify_public_element(
const EC_Point& y)
const;
219 const OID& get_curve_oid()
const;
224 const BigInt& get_p()
const;
229 const BigInt& get_a()
const;
234 const BigInt& get_b()
const;
240 const EC_Point& get_base_point()
const;
245 const BigInt& get_g_x()
const;
250 const BigInt& get_g_y()
const;
256 const BigInt& get_order()
const;
262 const BigInt& get_cofactor()
const;
301 std::vector<BigInt>& ws)
const;
321 EC_Point hash_to_curve(std::string_view hash_fn,
322 const uint8_t input[],
324 const uint8_t domain_sep[],
325 size_t domain_sep_len,
326 bool random_oracle =
true)
const;
340 EC_Point hash_to_curve(std::string_view hash_fn,
341 const uint8_t input[],
343 std::string_view domain_sep,
344 bool random_oracle =
true)
const;
354 return this->
OS2ECP(encoded_point.data(), encoded_point.size());
380 static const std::set<std::string>& known_named_groups();
440 static std::shared_ptr<EC_Group_Data> EC_group_info(const
OID& oid);
445 static
size_t clear_registered_curve_data();
450 static
OID EC_group_identity_from_order(const
BigInt& order);
453 static EC_Group_Data_Map& ec_group_data();
455 EC_Group(std::shared_ptr<EC_Group_Data>&& data);
457 static std::pair<std::shared_ptr<EC_Group_Data>,
bool> BER_decode_EC_group(std::span<const uint8_t> ber,
460 static std::shared_ptr<EC_Group_Data> load_EC_group_info(const
char* p,
469 const EC_Group_Data& data() const;
470 std::shared_ptr<EC_Group_Data> m_data;
471 bool m_explicit_encoding = false;