EC_GROUP_COPY(3ssl) OpenSSL EC_GROUP_COPY(3ssl) EC_GROUP_get0_order, EC_GROUP_order_bits, EC_GROUP_get0_cofactor, EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROUP_get0_generator, EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_set_curve_name, EC_GROUP_get_curve_name, EC_GROUP_set_asn1_flag, EC_GROUP_get_asn1_flag, EC_GROUP_set_point_conversion_form, EC_GROUP_get_point_conversion_form, EC_GROUP_get0_seed, EC_GROUP_get_seed_len, EC_GROUP_set_seed, EC_GROUP_get_degree, EC_GROUP_check, EC_GROUP_check_named_curve, EC_GROUP_check_discriminant, EC_GROUP_cmp, EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis, EC_GROUP_get_pentanomial_basis, EC_GROUP_get0_field, EC_GROUP_get_field_type - EC_GROUP #include int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor); const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); int EC_GROUP_order_bits(const EC_GROUP *group); int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx); const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); int EC_GROUP_get_curve_name(const EC_GROUP *group); void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); int EC_GROUP_get_asn1_flag(const EC_GROUP *group); void EC_GROUP_set_point_conversion_form(EC_GROUP *group, point_conversion_form_t form); point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *group); unsigned char *EC_GROUP_get0_seed(const EC_GROUP *group); size_t EC_GROUP_get_seed_len(const EC_GROUP *group); size_t EC_GROUP_set_seed(EC_GROUP *group, const unsigned char *, size_t len); int EC_GROUP_get_degree(const EC_GROUP *group); int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); int EC_GROUP_check_named_curve(const EC_GROUP *group, int nist_only, BN_CTX *ctx); int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); int EC_GROUP_get_basis_type(const EC_GROUP *group); int EC_GROUP_get_trinomial_basis(const EC_GROUP *group, unsigned int *k); int EC_GROUP_get_pentanomial_basis(const EC_GROUP *group, unsigned int *k1, unsigned int *k2, unsigned int *k3); int EC_GROUP_get_field_type(const EC_GROUP *group); OpenSSL 3.0 OPENSSL_API_COMPAT openssl_user_macros(7): const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); EC_GROUP_copy() src dst. src dst EC_METHOD. EC_GROUP_dup() EC_GROUP src EC_GROUP . EC_GROUP_method_of() EC_METHOD group. OpenSSL 3.0 EC_METHOD . EC_GROUP_set_generator() . . . 0 n-1 n . . EC_GROUP_get0_generator() group . EC_GROUP_get_order() group order. group ( ). EC_GROUP_get_cofactor() group cofactor. group ( ). EC_GROUP_set_curve_name() EC_GROUP_get_curve_name() NID ( EC_GROUP_new(3)). NID EC_GROUP_get_curve_name NID_undef. asn1_flag ASN1 OID: . asn1_flag OPENSSL_EC_NAMED_CURVE NID . asn1_flags OPENSSL_EC_EXPLICIT_CURVE . EC_GROUP_get_asn1_flag() EC_GROUP_set_asn1_flag() asn1_flag . : OPENSSL_EC_EXPLICIT_CURVE OpenSSL 1.1.0 OpenSSL 0 . OpenSSL 1.1.0 ( ) OpenSSL 1.1.0 . point_conversion_form EC_POINT ASN1 X9.62 (ECDSA). point_conversion_form_t (enum) : typedef enum { /** z||x (octet) z * y */ POINT_CONVERSION_COMPRESSED = 2, /** z||x||y z 0x04 */ POINT_CONVERSION_UNCOMPRESSED = 4, /** z||x||y z * y */ POINT_CONVERSION_HYBRID = 6 } point_conversion_form_t; POINT_CONVERSION_UNCOMPRESSED x y. x y. POINT_CONVERSION_COMPRESSED y x. POINT_CONVERSION_HYBRID y x y. EC_GROUP_set_point_conversion_form() EC_GROUP_get_point_conversion_form() point_conversion_form . ANSI X9.62 ( ECDSA) b . . b . OpenSSL EC EC_GROUP_get0_seed(). . EC_GROUP_get_seed_len(). . EC_GROUP_set_seed() . EC ASN1. EC_GROUP_get_degree() . Fp p. F2^m m. EC_GROUP_get_field_type() EC_GROUP F2^m Fp. EC_GROUP_check_discriminant() . Fp 4*a^3 + 27*b^2 F2^m b. . EC_GROUP_check() : OpenSSL . . OpenSSL FIPS EC_GROUP_check_named_curve() SP800-56Ar3. EC_GROUP_check_named_curve() . NID . . NID_undef ( ) . NIDs . NID_undef. nist_only 1 NIST . BN_CTX ctx. ctx NULL. EC_GROUP_cmp() a b . EC_GROUP_get_basis_type() EC_GROUP_get_trinomial_basis() EC_GROUP_get_pentanomial_basis() F2^m. F2^m f(x). : f(x) = x^m + x^k + 1 m > k >= 1 : f(x) = x^m + x^k3 + x^k2 + x^k1 + 1 m > k3 > k2 > k1 >= 1 EC_GROUP_get_basis_type() NID . EC_GROUP_get_trinomial_basis() f(x) k. EC_GROUP_get_pentanomial_basis() f(x) k1 k2 k3 . 1 0 : EC_GROUP_copy() EC_GROUP_set_generator() EC_GROUP_check() EC_GROUP_check_discriminant() EC_GROUP_get_trinomial_basis() EC_GROUP_get_pentanomial_basis(). EC_GROUP_dup() NULL . EC_GROUP_method_of() EC_METHOD NULL . EC_GROUP_get0_generator() NULL . EC_GROUP_get_order() 0 ( ) group order 1. EC_GROUP_get_cofactor() 0 ( ) group cofactor 1. EC_GROUP_get_curve_name() (NID) group NID_undef . EC_GROUP_get_asn1_flag() ASN1 group . EC_GROUP_get_point_conversion_form() point_conversion_form group. EC_GROUP_get_degree() group 0 . EC_GROUP_get_field_type() NID_X9_62_prime_field NID_X9_62_characteristic_two_field . EC_GROUP_check_named_curve() nid 0 -1 . EC_GROUP_get0_order() . EC_GROUP_order_bits() . EC_GROUP_get0_cofactor() . EC_GROUP_get0_field() . GF(p) GF(2^m) . EC_GROUP_get0_seed() b NULL . EC_GROUP_get_seed_len() 0 . EC_GROUP_set_seed() . NULL 0 1. 0. EC_GROUP_cmp() 0 1 -1 . EC_GROUP_get_basis_type() NID_X9_62_tpBasis NID_X9_62_ppBasis ( ) . 0. crypto(7), EC_GROUP_new(3), EC_POINT_new(3), EC_POINT_add(3), EC_KEY_new(3), EC_GFp_simple_method(3), d2i_ECPKParameters(3) EC_GROUP_method_of() OpenSSL 3.0. EC_GROUP_get0_field(), EC_GROUP_check_named_curve() EC_GROUP_get_field_type() OpenSSL 3.0. EC_GROUP_get0_order(), EC_GROUP_order_bits() EC_GROUP_get0_cofactor() OpenSSL 1.1.0. 2013-2023 OpenSSL. . Apache 2.0 ( ""). . LICENSE . 3 . . : . 3.6.2 7 2026 EC_GROUP_COPY(3ssl)