[][src]Enum sequoia_openpgp::packet::key::SecretKeyMaterial

pub enum SecretKeyMaterial {
    Unencrypted(Unencrypted),
    Encrypted(Encrypted),
}

Holds secret key material.

This type allows postponing the decryption of the secret key material until it is actually needed.

If the secret key material is not encrypted with a password, then we encrypt it in memory. This helps protect against heartbleed-style attacks where a buffer over-read allows an attacker to read from the process's address space. This protection is less important for Rust programs, which are memory safe. However, it is essential when Sequoia is used via its FFI.

See crypto::mem::Encrypted for details.

Variants

Unencrypted(Unencrypted)

Unencrypted secret key. Can be used as-is.

Encrypted(Encrypted)

The secret key is encrypted with a password.

Methods

impl SecretKeyMaterial[src]

pub fn decrypt(
    self,
    pk_algo: PublicKeyAlgorithm,
    password: &Password
) -> Result<Self>
[src]

Decrypts the secret key material using password.

The SecretKeyMaterial type does not know what kind of key it contains. So, in order to know how many MPIs to parse, the public key algorithm needs to be provided explicitly.

This returns an error if the secret key material is not encrypted or the password is incorrect.

pub fn decrypt_in_place(
    &mut self,
    pk_algo: PublicKeyAlgorithm,
    password: &Password
) -> Result<()>
[src]

Decrypts the secret key material using password.

The SecretKeyMaterial type does not know what kind of key it contains. So, in order to know how many MPIs to parse, the public key algorithm needs to be provided explicitly.

This returns an error if the secret key material is not encrypted or the password is incorrect.

pub fn encrypt(self, password: &Password) -> Result<Self>[src]

Encrypts the secret key material using password.

This returns an error if the secret key material is encrypted.

See Unencrypted::encrypt for details.

pub fn encrypt_in_place(&mut self, password: &Password) -> Result<()>[src]

Encrypts the secret key material using password.

This returns an error if the secret key material is encrypted.

See Unencrypted::encrypt for details.

pub fn is_encrypted(&self) -> bool[src]

Returns whether the secret key material is encrypted.

Trait Implementations

impl From<SecretKeyMaterial> for SecretKeyMaterial[src]

impl From<Unencrypted> for SecretKeyMaterial[src]

impl From<Encrypted> for SecretKeyMaterial[src]

impl Eq for SecretKeyMaterial[src]

impl PartialEq<SecretKeyMaterial> for SecretKeyMaterial[src]

impl Clone for SecretKeyMaterial[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl Hash for SecretKeyMaterial[src]

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0
[src]

Feeds a slice of this type into the given [Hasher]. Read more

impl Debug for SecretKeyMaterial[src]

Auto Trait Implementations

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> DynClone for T where
    T: Clone
[src]