pub struct EcGroup(/* private fields */);
Expand description
Describes the curve
A curve can be of the named curve type. These curves can be discovered
using openssl binary openssl ecparam -list_curves
. Other operations
are available in the wiki. These named curves are available in the
Nid
module.
Curves can also be generated using prime field parameters or a binary field.
Prime fields use the formula y^2 mod p = x^3 + ax + b mod p
. Binary
fields use the formula y^2 + xy = x^3 + ax^2 + b
. Named curves have
assured security. To prevent accidental vulnerabilities, they should
be preferred.
Implementations§
Source§impl EcGroup
impl EcGroup
Sourcepub fn from_curve_name(nid: Nid) -> Result<EcGroup, ErrorStack>
pub fn from_curve_name(nid: Nid) -> Result<EcGroup, ErrorStack>
Returns the group of a standard named curve.
§Examples
use openssl::nid::Nid;
use openssl::ec::{EcGroup, EcKey};
let nid = Nid::X9_62_PRIME256V1; // NIST P-256 curve
let group = EcGroup::from_curve_name(nid)?;
let key = EcKey::generate(&group)?;
This corresponds to EC_GROUP_new_by_curve_name
.
Sourcepub fn from_components(
p: BigNum,
a: BigNum,
b: BigNum,
ctx: &mut BigNumContextRef,
) -> Result<EcGroup, ErrorStack>
pub fn from_components( p: BigNum, a: BigNum, b: BigNum, ctx: &mut BigNumContextRef, ) -> Result<EcGroup, ErrorStack>
Returns the group for given parameters
This corresponds to EC_GROUP_new_curve_GFp
.
Methods from Deref<Target = EcGroupRef>§
Sourcepub fn components_gfp(
&self,
p: &mut BigNumRef,
a: &mut BigNumRef,
b: &mut BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn components_gfp( &self, p: &mut BigNumRef, a: &mut BigNumRef, b: &mut BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the components of a curve over a prime field in the provided BigNum
s.
The components make up the formula y^2 mod p = x^3 + ax + b mod p
.
This corresponds to EC_GROUP_get_curve_GFp
.
Sourcepub fn components_gf2m(
&self,
p: &mut BigNumRef,
a: &mut BigNumRef,
b: &mut BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn components_gf2m( &self, p: &mut BigNumRef, a: &mut BigNumRef, b: &mut BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the components of a curve over a binary field in the provided BigNum
s.
The components make up the formula y^2 + xy = x^3 + ax^2 + b
.
In this form p
relates to the irreducible polynomial. Each bit represents
a term in the polynomial. It will be set to 3 1
s or 5 1
s depending on
using a trinomial or pentanomial.
This corresponds to EC_GROUP_get_curve_GF2m
.
Sourcepub fn cofactor(
&self,
cofactor: &mut BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn cofactor( &self, cofactor: &mut BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the cofactor of the group in the provided BigNum
.
This corresponds to EC_GROUP_get_cofactor
.
Sourcepub fn degree(&self) -> u32
pub fn degree(&self) -> u32
Returns the degree of the curve.
This corresponds to EC_GROUP_get_degree
.
Sourcepub fn order_bits(&self) -> u32
pub fn order_bits(&self) -> u32
Returns the number of bits in the group order.
This corresponds to EC_GROUP_order_bits
.
Sourcepub fn generator(&self) -> &EcPointRef
pub fn generator(&self) -> &EcPointRef
Returns the generator for the given curve as an EcPoint
.
This corresponds to EC_GROUP_get0_generator
.
Sourcepub fn set_generator(
&mut self,
generator: EcPoint,
order: BigNum,
cofactor: BigNum,
) -> Result<(), ErrorStack>
pub fn set_generator( &mut self, generator: EcPoint, order: BigNum, cofactor: BigNum, ) -> Result<(), ErrorStack>
Sets the generator point for the given curve
This corresponds to EC_GROUP_set_generator
.
Sourcepub fn order(
&self,
order: &mut BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn order( &self, order: &mut BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the order of the curve in the provided BigNum
.
This corresponds to EC_GROUP_get_order
.
Sourcepub fn set_asn1_flag(&mut self, flag: Asn1Flag)
pub fn set_asn1_flag(&mut self, flag: Asn1Flag)
Sets the flag determining if the group corresponds to a named curve or must be explicitly parameterized.
This defaults to EXPLICIT_CURVE
in OpenSSL 1.0.1 and 1.0.2, but NAMED_CURVE
in OpenSSL
1.1.0.
This corresponds to EC_GROUP_set_asn1_flag
.
Sourcepub fn asn1_flag(&self) -> Asn1Flag
pub fn asn1_flag(&self) -> Asn1Flag
Gets the flag determining if the group corresponds to a named curve.
This corresponds to EC_GROUP_get_asn1_flag
.
Sourcepub fn curve_name(&self) -> Option<Nid>
pub fn curve_name(&self) -> Option<Nid>
Returns the name of the curve, if a name is associated.
This corresponds to EC_GROUP_get_curve_name
.
Trait Implementations§
Source§impl AsRef<EcGroupRef> for EcGroup
impl AsRef<EcGroupRef> for EcGroup
Source§fn as_ref(&self) -> &EcGroupRef
fn as_ref(&self) -> &EcGroupRef
Source§impl Borrow<EcGroupRef> for EcGroup
impl Borrow<EcGroupRef> for EcGroup
Source§fn borrow(&self) -> &EcGroupRef
fn borrow(&self) -> &EcGroupRef
Source§impl Deref for EcGroup
impl Deref for EcGroup
Source§type Target = EcGroupRef
type Target = EcGroupRef
Source§fn deref(&self) -> &EcGroupRef
fn deref(&self) -> &EcGroupRef
Source§impl DerefMut for EcGroup
impl DerefMut for EcGroup
Source§fn deref_mut(&mut self) -> &mut EcGroupRef
fn deref_mut(&mut self) -> &mut EcGroupRef
Source§impl ForeignType for EcGroup
impl ForeignType for EcGroup
impl Send for EcGroup
impl Sync for EcGroup
Auto Trait Implementations§
impl Freeze for EcGroup
impl RefUnwindSafe for EcGroup
impl Unpin for EcGroup
impl UnwindSafe for EcGroup
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes