pub struct EcKey<T>(_, _);
Expand description

Public and optional private key on the given curve.

Implementations

Constructs an EcKey corresponding to a known curve.

It will not have an associated public or private key. This kind of key is primarily useful to be provided to the set_tmp_ecdh methods on Ssl and SslContextBuilder.

This corresponds to EC_KEY_new_by_curve_name.

Constructs an EcKey corresponding to a curve.

This corresponds to EC_KEY_set_group.

Constructs an EcKey from the specified group with the associated EcPoint: public_key.

This will only have the associated public_key.

Example
use openssl::bn::BigNumContext;
use openssl::ec::*;
use openssl::nid::Nid;
use openssl::pkey::PKey;

let group = EcGroup::from_curve_name(Nid::SECP384R1)?;
let mut ctx = BigNumContext::new()?;

// get bytes from somewhere
let public_key = // ...

// create an EcKey from the binary form of a EcPoint
let point = EcPoint::from_bytes(&group, &public_key, &mut ctx)?;
let key = EcKey::from_public_key(&group, &point)?;
key.check_key()?;

This corresponds to EC_KEY_set_public_key.

Constructs a public key from its affine coordinates.

This corresponds to EC_KEY_set_public_key_affine_coordinates.

Decodes a PEM-encoded SubjectPublicKeyInfo structure containing a EC key.

The input should have a header of -----BEGIN PUBLIC KEY-----.

This corresponds to PEM_read_bio_EC_PUBKEY.

Decodes a DER-encoded SubjectPublicKeyInfo structure containing a EC key.

This corresponds to d2i_EC_PUBKEY.

Generates a new public/private key pair on the specified curve.

Examples
use openssl::bn::BigNumContext;
use openssl::nid::Nid;
use openssl::ec::{EcGroup, EcKey, PointConversionForm};

let nid = Nid::X9_62_PRIME256V1; // NIST P-256 curve
let group = EcGroup::from_curve_name(nid)?;
let key = EcKey::generate(&group)?;

let mut ctx = BigNumContext::new()?;

let public_key = &key.public_key().to_bytes(
    &group,
    PointConversionForm::COMPRESSED,
    &mut ctx,
)?;
assert_eq!(public_key.len(), 33);
assert_ne!(public_key[0], 0x04);

let private_key = key.private_key().to_vec();
assert!(private_key.len() >= 31);

This corresponds to EC_KEY_generate_key.

Constructs an public/private key pair given a curve, a private key and a public key point.

This corresponds to EC_KEY_set_private_key.

Deserializes a private key from a PEM-encoded ECPrivateKey structure.

The input should have a header of -----BEGIN EC PRIVATE KEY-----.

This corresponds to PEM_read_bio_ECPrivateKey.

Deserializes a private key from a PEM-encoded encrypted ECPrivateKey structure.

The input should have a header of -----BEGIN EC PRIVATE KEY-----.

This corresponds to PEM_read_bio_ECPrivateKey.

Deserializes a private key from a PEM-encoded encrypted ECPrivateKey structure.

The callback should fill the password into the provided buffer and return its length.

The input should have a header of -----BEGIN EC PRIVATE KEY-----.

This corresponds to PEM_read_bio_ECPrivateKey.

Decodes a DER-encoded elliptic curve private key structure.

This corresponds to d2i_ECPrivateKey.

Methods from Deref<Target = EcKeyRef<T>>

Serializes the private key to a PEM-encoded ECPrivateKey structure.

The output will have a header of -----BEGIN EC PRIVATE KEY-----.

This corresponds to PEM_write_bio_ECPrivateKey.

Serializes the private key to a PEM-encoded encrypted ECPrivateKey structure.

The output will have a header of -----BEGIN EC PRIVATE KEY-----.

This corresponds to PEM_write_bio_ECPrivateKey.

Serializes the private key into a DER-encoded ECPrivateKey structure.

This corresponds to i2d_ECPrivateKey.

Returns the private key value.

This corresponds to EC_KEY_get0_private_key.

Returns the public key.

This corresponds to EC_KEY_get0_public_key.

Serializes the public key into a PEM-encoded SubjectPublicKeyInfo structure.

The output will have a header of -----BEGIN PUBLIC KEY-----.

This corresponds to PEM_write_bio_EC_PUBKEY.

Serializes the public key into a DER-encoded SubjectPublicKeyInfo structure.

This corresponds to i2d_EC_PUBKEY.

Returns the key’s group.

This corresponds to EC_KEY_get0_group.

Checks the key for validity.

This corresponds to EC_KEY_check_key.

Trait Implementations

Converts this type into a shared reference of the (usually inferred) input type.
Immutably borrows from an owned value. Read more
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Mutably dereferences the value.
Executes the destructor for this type. Read more
The raw C type.
The type representing a reference to this type.
Constructs an instance of this type from its raw type.
Returns a raw pointer to the wrapped value.
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.