10 #ifndef BOTAN_ECC_DOMAIN_PARAMETERS_H_
11 #define BOTAN_ECC_DOMAIN_PARAMETERS_H_
13 #include <botan/point_gfp.h>
14 #include <botan/asn1_oid.h>
32 class EC_Group_Data_Map;
51 BOTAN_DEPRECATED(
"Use version taking all BigInts")
59 base_point.get_affine_x(),
60 base_point.get_affine_y(),
88 explicit EC_Group(
const std::vector<uint8_t>& ber_encoding);
101 explicit EC_Group(
const std::string& pem_or_oid);
133 BOTAN_DEPRECATED(
"Avoid CurveGFp") const
CurveGFp& get_curve() const;
138 bool a_is_minus_3() const;
143 bool a_is_zero() const;
148 size_t get_p_bits() const;
153 size_t get_p_bytes() const;
158 size_t get_order_bits() const;
163 size_t get_order_bytes() const;
168 const
BigInt& get_p() const;
173 const
BigInt& get_a() const;
178 const
BigInt& get_b() const;
184 const
PointGFp& get_base_point() const;
189 const
BigInt& get_g_x() const;
194 const
BigInt& get_g_y() const;
200 const
BigInt& get_order() const;
231 const
BigInt& get_cofactor() const;
239 bool verify_public_element(const
PointGFp& y) const;
245 std::
string BOTAN_DEPRECATED("Use get_curve_oid") get_oid()
const {
return get_curve_oid().to_string(); }
251 const OID& get_curve_oid()
const;
273 std::vector<BigInt>& ws)
const;
286 std::vector<BigInt>& ws)
const;
299 std::vector<BigInt>& ws)
const;
315 template<
typename Alloc>
318 return this->
OS2ECP(vec.data(), vec.size());
328 bool strong =
false)
const;
336 static std::string BOTAN_DEPRECATED(
"See header comment") PEM_for_named_group(const
std::
string&
name);
341 static const
std::set<
std::
string>& known_named_groups();
346 static
std::shared_ptr<EC_Group_Data> EC_group_info(const
OID& oid);
348 static
size_t clear_registered_curve_data();
351 static EC_Group_Data_Map& ec_group_data();
353 static
std::shared_ptr<EC_Group_Data> BER_decode_EC_group(const uint8_t bits[],
size_t len);
355 static
std::shared_ptr<EC_Group_Data>
356 load_EC_group_info(const
char* p,
365 const EC_Group_Data& data() const;
366 std::shared_ptr<EC_Group_Data> m_data;
372 return !(lhs == rhs);
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
EC_Group EC_Domain_Params
std::string PEM_encode(const Private_Key &key)
bool operator==(const AlgorithmIdentifier &a1, const AlgorithmIdentifier &a2)
PointGFp OS2ECP(const std::vector< uint8_t, Alloc > &vec) const
PointGFp OS2ECP(const uint8_t data[], size_t data_len, const CurveGFp &curve)