75 explicit EC_Group(
const uint8_t ber[],
size_t ber_len);
77 template <
typename Alloc>
94 explicit EC_Group(std::string_view pem_or_oid);
96 static EC_Group EC_Group_from_PEM(std::string_view pem);
122 std::string PEM_encode()
const;
127 bool a_is_minus_3()
const;
132 bool a_is_zero()
const;
137 size_t get_p_bits()
const;
142 size_t get_p_bytes()
const;
147 size_t get_order_bits()
const;
152 size_t get_order_bytes()
const;
157 const BigInt& get_p()
const;
162 const BigInt& get_a()
const;
167 const BigInt& get_b()
const;
173 const EC_Point& get_base_point()
const;
178 const BigInt& get_g_x()
const;
183 const BigInt& get_g_y()
const;
189 const BigInt& get_order()
const;
195 const BigInt& get_cofactor()
const;
233 bool verify_public_element(
const EC_Point& y)
const;
239 const OID& get_curve_oid()
const;
283 std::vector<BigInt>& ws)
const;
303 EC_Point hash_to_curve(std::string_view hash_fn,
304 const uint8_t input[],
306 const uint8_t domain_sep[],
307 size_t domain_sep_len,
308 bool random_oracle =
true)
const;
322 EC_Point hash_to_curve(std::string_view hash_fn,
323 const uint8_t input[],
325 std::string_view domain_sep,
326 bool random_oracle =
true)
const;
338 return this->
OS2ECP(encoded_point.data(), encoded_point.size());
364 static const std::set<std::string>& known_named_groups();
369 static std::shared_ptr<EC_Group_Data> EC_group_info(
const OID& oid);
374 static size_t clear_registered_curve_data();
379 static OID EC_group_identity_from_order(
const BigInt& order);
382 static EC_Group_Data_Map& ec_group_data();
384 static std::pair<std::shared_ptr<EC_Group_Data>,
bool> BER_decode_EC_group(
const uint8_t bits[],
388 static std::shared_ptr<EC_Group_Data> load_EC_group_info(
const char* p,
397 const EC_Group_Data& data()
const;
398 std::shared_ptr<EC_Group_Data> m_data;
399 bool m_explicit_encoding =
false;