Struct sequoia_openpgp::packet::skesk::SKESK5

source ·
pub struct SKESK5 { /* private fields */ }
Expand description

Holds an symmetrically encrypted session key version 5.

Holds an symmetrically encrypted session key. The session key is needed to decrypt the actual ciphertext. See [Section 5.3 of RFC 4880bis] for details.

This feature is experimental.

Implementations§

source§

impl SKESK5

source

pub fn new( esk_algo: SymmetricAlgorithm, esk_aead: AEADAlgorithm, s2k: S2K, iv: Box<[u8]>, esk: Box<[u8]>, digest: Box<[u8]> ) -> Result<Self>

Creates a new SKESK version 5 packet.

The given symmetric algorithm is the one used to encrypt the session key.

source

pub fn with_password( payload_algo: SymmetricAlgorithm, esk_algo: SymmetricAlgorithm, esk_aead: AEADAlgorithm, s2k: S2K, session_key: &SessionKey, password: &Password ) -> Result<Self>

Creates a new SKESK version 5 packet with the given password.

This function takes two SymmetricAlgorithm arguments: The first, payload_algo, is the algorithm used to encrypt the message’s payload (i.e. the one used in the SEIP or AED packet), and the second, esk_algo, is used to encrypt the session key. Usually, one should use the same algorithm, but if they differ, the esk_algo should be at least as strong as the payload_algo as not to weaken the security of the payload encryption.

source

pub fn decrypt( &self, password: &Password ) -> Result<(SymmetricAlgorithm, SessionKey)>

Derives the key inside this SKESK5 from password.

Returns a tuple containing a placeholder symmetric cipher and the key itself. SKESK5 packets do not contain the symmetric cipher algorithm and instead rely on the AED packet that contains it.

source

pub fn aead_algo(&self) -> AEADAlgorithm

Gets the AEAD algorithm.

source

pub fn set_aead_algo(&mut self, algo: AEADAlgorithm) -> AEADAlgorithm

Sets the AEAD algorithm.

source

pub fn aead_iv(&self) -> Result<&[u8]>

Gets the AEAD initialization vector.

If the S2K mechanism is not supported by Sequoia, this function will fail. Note that the information is not lost, but stored in the packet. If the packet is serialized again, it is written out.

source

pub fn set_aead_iv(&mut self, iv: Box<[u8]>) -> Option<Box<[u8]>>

Sets the AEAD initialization vector.

source

pub fn aead_digest(&self) -> &[u8]

Gets the AEAD digest.

source

pub fn set_aead_digest(&mut self, digest: Box<[u8]>) -> Box<[u8]>

Sets the AEAD digest.

Methods from Deref<Target = SKESK4>§

source

pub fn symmetric_algo(&self) -> SymmetricAlgorithm

Gets the symmetric encryption algorithm.

source

pub fn set_symmetric_algo( &mut self, algo: SymmetricAlgorithm ) -> SymmetricAlgorithm

Sets the symmetric encryption algorithm.

source

pub fn s2k(&self) -> &S2K

Gets the key derivation method.

source

pub fn set_s2k(&mut self, s2k: S2K) -> S2K

Sets the key derivation method.

source

pub fn esk(&self) -> Result<Option<&[u8]>>

Gets the encrypted session key.

If the S2K mechanism is not supported by Sequoia, this function will fail. Note that the information is not lost, but stored in the packet. If the packet is serialized again, it is written out.

source

pub fn set_esk(&mut self, esk: Option<Box<[u8]>>) -> Option<Box<[u8]>>

Sets the encrypted session key.

source

pub fn decrypt( &self, password: &Password ) -> Result<(SymmetricAlgorithm, SessionKey)>

Derives the key inside this SKESK4 from password.

Returns a tuple of the symmetric cipher to use with the key and the key itself.

Trait Implementations§

source§

impl Clone for SKESK5

source§

fn clone(&self) -> SKESK5

Returns a copy 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 Debug for SKESK5

source§

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

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

impl DerefMut for SKESK5

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl From<SKESK5> for Packet

source§

fn from(s: SKESK5) -> Self

Converts to this type from the input type.
source§

impl From<SKESK5> for SKESK

source§

fn from(p: SKESK5) -> Self

Converts to this type from the input type.
source§

impl Hash for SKESK5

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

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

Feeds a slice of this type into the given Hasher. Read more
source§

impl Marshal for SKESK5

source§

fn serialize(&self, o: &mut dyn Write) -> Result<()>

Writes a serialized version of the object to o.
source§

fn export(&self, o: &mut dyn Write) -> Result<()>

Exports a serialized version of the object to o. Read more
source§

impl MarshalInto for SKESK5

source§

fn serialized_len(&self) -> usize

Computes the maximal length of the serialized representation. Read more
source§

fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>

Serializes into the given buffer. Read more
source§

fn to_vec(&self) -> Result<Vec<u8>>

Serializes the packet to a vector.
source§

fn export_into(&self, buf: &mut [u8]) -> Result<usize>

Exports into the given buffer. Read more
source§

fn export_to_vec(&self) -> Result<Vec<u8>>

Exports to a vector. Read more
source§

impl PartialEq for SKESK5

source§

fn eq(&self, other: &SKESK5) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Deref for SKESK5

§

type Target = SKESK4

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Eq for SKESK5

Auto Trait Implementations§

§

impl Freeze for SKESK5

§

impl RefUnwindSafe for SKESK5

§

impl Send for SKESK5

§

impl Sync for SKESK5

§

impl Unpin for SKESK5

§

impl UnwindSafe for SKESK5

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> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

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<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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>,

§

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.