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 parameterq
: DSA sub-prime parameterg
: 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>
impl Dsa<Params>
Sourcepub fn from_pqg(
p: BigNum,
q: BigNum,
g: BigNum,
) -> Result<Dsa<Params>, ErrorStack>
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
.
Sourcepub fn generate_params(bits: u32) -> Result<Dsa<Params>, ErrorStack>
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
.
Sourcepub fn generate_key(self) -> Result<Dsa<Private>, ErrorStack>
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>
impl Dsa<Private>
Sourcepub fn generate(bits: u32) -> Result<Dsa<Private>, ErrorStack>
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
.
Sourcepub fn from_private_components(
p: BigNum,
q: BigNum,
g: BigNum,
priv_key: BigNum,
pub_key: BigNum,
) -> Result<Dsa<Private>, ErrorStack>
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>
impl Dsa<Public>
Sourcepub fn public_key_from_pem(pem: &[u8]) -> Result<Dsa<Public>, ErrorStack>
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
.
Sourcepub fn public_key_from_der(der: &[u8]) -> Result<Dsa<Public>, ErrorStack>
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
.
Sourcepub fn from_public_components(
p: BigNum,
q: BigNum,
g: BigNum,
pub_key: BigNum,
) -> Result<Dsa<Public>, ErrorStack>
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>>§
Sourcepub fn public_key_to_pem(&self) -> Result<Vec<u8>, ErrorStack>
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
.
Sourcepub fn public_key_to_der(&self) -> Result<Vec<u8>, ErrorStack>
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
.
Sourcepub fn pub_key(&self) -> &BigNumRef
pub fn pub_key(&self) -> &BigNumRef
Returns a reference to the public key component of self
.
This corresponds to DSA_get0_key
.
Sourcepub fn private_key_to_pem(&self) -> Result<Vec<u8>, ErrorStack>
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
.
Sourcepub fn private_key_to_pem_passphrase(
&self,
cipher: Cipher,
passphrase: &[u8],
) -> Result<Vec<u8>, ErrorStack>
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
.
Sourcepub fn private_key_to_der(&self) -> Result<Vec<u8>, ErrorStack>
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
.
Sourcepub fn priv_key(&self) -> &BigNumRef
pub fn priv_key(&self) -> &BigNumRef
Returns a reference to the private key component of self
.
This corresponds to DSA_get0_key
.
Sourcepub fn size(&self) -> u32
pub fn size(&self) -> u32
Returns the maximum size of the signature output by self
in bytes.
This corresponds to DSA_size
.
Sourcepub fn p(&self) -> &BigNumRef
pub fn p(&self) -> &BigNumRef
Returns the DSA prime parameter of self
.
This corresponds to DSA_get0_pqg
.
Sourcepub fn q(&self) -> &BigNumRef
pub fn q(&self) -> &BigNumRef
Returns the DSA sub-prime parameter of self
.
This corresponds to DSA_get0_pqg
.
Sourcepub fn g(&self) -> &BigNumRef
pub fn g(&self) -> &BigNumRef
Returns the DSA base parameter of self
.
This corresponds to DSA_get0_pqg
.
Trait Implementations§
Source§impl<T> ForeignType for Dsa<T>
impl<T> ForeignType for Dsa<T>
impl<T> Send for Dsa<T>
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> 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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