Dsa

Struct Dsa 

Source
pub struct Dsa<T>(/* private fields */);
Expand description

Object representing DSA keys.

A DSA object contains the parameters p, q, and g. There is a private and public key. The values p, g, and q are:

  • p: DSA prime parameter
  • q: DSA sub-prime parameter
  • g: DSA base parameter

These values are used to calculate a pair of asymmetrical keys used for signing.

OpenSSL documentation at DSA_new

§Examples

use openssl::dsa::Dsa;
use openssl::error::ErrorStack;
use openssl::pkey::Private;

fn create_dsa() -> Result<Dsa<Private>, ErrorStack> {
    let sign = Dsa::generate(2048)?;
    Ok(sign)
}

Implementations§

Source§

impl Dsa<Params>

Source

pub fn from_pqg( p: BigNum, q: BigNum, g: BigNum, ) -> Result<Dsa<Params>, ErrorStack>

Creates a DSA params based upon the given parameters.

This corresponds to DSA_set0_pqg.

Source

pub fn generate_params(bits: u32) -> Result<Dsa<Params>, ErrorStack>

Generates DSA params based on the given number of bits.

This corresponds to DSA_generate_parameters_ex.

Source

pub fn generate_key(self) -> Result<Dsa<Private>, ErrorStack>

Generates a private key based on the DSA params.

This corresponds to DSA_generate_key.

Source§

impl Dsa<Private>

Source

pub fn generate(bits: u32) -> Result<Dsa<Private>, ErrorStack>

Generate a DSA key pair.

The bits parameter corresponds to the length of the prime p.

Source

pub fn from_private_components( p: BigNum, q: BigNum, g: BigNum, priv_key: BigNum, pub_key: BigNum, ) -> Result<Dsa<Private>, ErrorStack>

Create a DSA key pair with the given parameters

p, q and g are the common parameters. priv_key is the private component of the key pair. pub_key is the public component of the key. Can be computed via g^(priv_key) mod p

Source§

impl Dsa<Public>

Source

pub fn public_key_from_pem(pem: &[u8]) -> Result<Dsa<Public>, ErrorStack>

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

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

This corresponds to PEM_read_bio_DSA_PUBKEY.

Source

pub fn public_key_from_der(der: &[u8]) -> Result<Dsa<Public>, ErrorStack>

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

This corresponds to d2i_DSA_PUBKEY.

Source

pub fn from_public_components( p: BigNum, q: BigNum, g: BigNum, pub_key: BigNum, ) -> Result<Dsa<Public>, ErrorStack>

Create a new DSA key with only public components.

p, q and g are the common parameters. pub_key is the public component of the key.

Methods from Deref<Target = DsaRef<T>>§

Source

pub fn public_key_to_pem(&self) -> Result<Vec<u8>, ErrorStack>

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_DSA_PUBKEY.

Source

pub fn public_key_to_der(&self) -> Result<Vec<u8>, ErrorStack>

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

This corresponds to i2d_DSA_PUBKEY.

Source

pub fn pub_key(&self) -> &BigNumRef

Returns a reference to the public key component of self.

This corresponds to DSA_get0_key.

Source

pub fn private_key_to_pem(&self) -> Result<Vec<u8>, ErrorStack>

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

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

This corresponds to PEM_write_bio_DSAPrivateKey.

Source

pub fn private_key_to_pem_passphrase( &self, cipher: Cipher, passphrase: &[u8], ) -> Result<Vec<u8>, ErrorStack>

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

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

This corresponds to PEM_write_bio_DSAPrivateKey.

Source

pub fn private_key_to_der(&self) -> Result<Vec<u8>, ErrorStack>

Serializes the private_key to a DER-encoded DSAPrivateKey structure.

This corresponds to i2d_DSAPrivateKey.

Source

pub fn priv_key(&self) -> &BigNumRef

Returns a reference to the private key component of self.

This corresponds to DSA_get0_key.

Source

pub fn size(&self) -> u32

Returns the maximum size of the signature output by self in bytes.

This corresponds to DSA_size.

Source

pub fn p(&self) -> &BigNumRef

Returns the DSA prime parameter of self.

This corresponds to DSA_get0_pqg.

Source

pub fn q(&self) -> &BigNumRef

Returns the DSA sub-prime parameter of self.

This corresponds to DSA_get0_pqg.

Source

pub fn g(&self) -> &BigNumRef

Returns the DSA base parameter of self.

This corresponds to DSA_get0_pqg.

Trait Implementations§

Source§

impl<T> AsRef<DsaRef<T>> for Dsa<T>

Source§

fn as_ref(&self) -> &DsaRef<T>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> Borrow<DsaRef<T>> for Dsa<T>

Source§

fn borrow(&self) -> &DsaRef<T>

Immutably borrows from an owned value. Read more
Source§

impl<T> Clone for Dsa<T>

Source§

fn clone(&self) -> Dsa<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> Debug for Dsa<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> Deref for Dsa<T>

Source§

type Target = DsaRef<T>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &DsaRef<T>

Dereferences the value.
Source§

impl<T> DerefMut for Dsa<T>

Source§

fn deref_mut(&mut self) -> &mut DsaRef<T>

Mutably dereferences the value.
Source§

impl<T> Drop for Dsa<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T> ForeignType for Dsa<T>

Source§

type CType = DSA

The raw C type.
Source§

type Ref = DsaRef<T>

The type representing a reference to this type.
Source§

unsafe fn from_ptr(ptr: *mut DSA) -> Dsa<T>

Constructs an instance of this type from its raw type.
Source§

fn as_ptr(&self) -> *mut DSA

Returns a raw pointer to the wrapped value.
Source§

impl<T> TryFrom<Dsa<T>> for PKey<T>

Source§

type Error = ErrorStack

The type returned in the event of a conversion error.
Source§

fn try_from(dsa: Dsa<T>) -> Result<PKey<T>, ErrorStack>

Performs the conversion.
Source§

impl<T> TryFrom<PKey<T>> for Dsa<T>

Source§

type Error = ErrorStack

The type returned in the event of a conversion error.
Source§

fn try_from(pkey: PKey<T>) -> Result<Dsa<T>, ErrorStack>

Performs the conversion.
Source§

impl<T> Send for Dsa<T>

Source§

impl<T> Sync for Dsa<T>

Auto Trait Implementations§

§

impl<T> Freeze for Dsa<T>

§

impl<T> RefUnwindSafe for Dsa<T>
where T: RefUnwindSafe,

§

impl<T> Unpin for Dsa<T>
where T: Unpin,

§

impl<T> UnwindSafe for Dsa<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

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