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
sourceimpl SKESK5
impl SKESK5
sourcepub fn new(
esk_algo: SymmetricAlgorithm,
esk_aead: AEADAlgorithm,
s2k: S2K,
iv: Box<[u8]>,
esk: Box<[u8]>,
digest: Box<[u8]>
) -> Result<Self>
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.
sourcepub fn with_password(
payload_algo: SymmetricAlgorithm,
esk_algo: SymmetricAlgorithm,
esk_aead: AEADAlgorithm,
s2k: S2K,
session_key: &SessionKey,
password: &Password
) -> Result<Self>
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.
sourcepub fn decrypt(
&self,
password: &Password
) -> Result<(SymmetricAlgorithm, SessionKey)>
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.
sourcepub fn aead_algo(&self) -> AEADAlgorithm
pub fn aead_algo(&self) -> AEADAlgorithm
Gets the AEAD algorithm.
sourcepub fn set_aead_algo(&mut self, algo: AEADAlgorithm) -> AEADAlgorithm
pub fn set_aead_algo(&mut self, algo: AEADAlgorithm) -> AEADAlgorithm
Sets the AEAD algorithm.
sourcepub fn aead_iv(&self) -> Result<&[u8]>
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.
sourcepub fn set_aead_iv(&mut self, iv: Box<[u8]>) -> Option<Box<[u8]>>
pub fn set_aead_iv(&mut self, iv: Box<[u8]>) -> Option<Box<[u8]>>
Sets the AEAD initialization vector.
sourcepub fn aead_digest(&self) -> &[u8]ⓘNotable traits for &[u8]impl<'_> Read for &[u8]impl<'_> Write for &mut [u8]
pub fn aead_digest(&self) -> &[u8]ⓘNotable traits for &[u8]impl<'_> Read for &[u8]impl<'_> Write for &mut [u8]
Gets the AEAD digest.
sourcepub fn set_aead_digest(&mut self, digest: Box<[u8]>) -> Box<[u8]>ⓘNotable traits for Box<R, Global>impl<R> Read for Box<R, Global> where
R: Read + ?Sized, impl<W> Write for Box<W, Global> where
W: Write + ?Sized, impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
pub fn set_aead_digest(&mut self, digest: Box<[u8]>) -> Box<[u8]>ⓘNotable traits for Box<R, Global>impl<R> Read for Box<R, Global> where
R: Read + ?Sized, impl<W> Write for Box<W, Global> where
W: Write + ?Sized, impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
R: Read + ?Sized, impl<W> Write for Box<W, Global> where
W: Write + ?Sized, impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
Sets the AEAD digest.
Methods from Deref<Target = SKESK4>
sourcepub fn symmetric_algo(&self) -> SymmetricAlgorithm
pub fn symmetric_algo(&self) -> SymmetricAlgorithm
Gets the symmetric encryption algorithm.
sourcepub fn set_symmetric_algo(
&mut self,
algo: SymmetricAlgorithm
) -> SymmetricAlgorithm
pub fn set_symmetric_algo(
&mut self,
algo: SymmetricAlgorithm
) -> SymmetricAlgorithm
Sets the symmetric encryption algorithm.
sourcepub fn esk(&self) -> Result<Option<&[u8]>>
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.
sourcepub fn set_esk(&mut self, esk: Option<Box<[u8]>>) -> Option<Box<[u8]>>
pub fn set_esk(&mut self, esk: Option<Box<[u8]>>) -> Option<Box<[u8]>>
Sets the encrypted session key.
sourcepub fn decrypt(
&self,
password: &Password
) -> Result<(SymmetricAlgorithm, SessionKey)>
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
sourceimpl MarshalInto for SKESK5
impl MarshalInto for SKESK5
sourcefn serialized_len(&self) -> usize
fn serialized_len(&self) -> usize
Computes the maximal length of the serialized representation. Read more
sourcefn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
Serializes into the given buffer. Read more
impl Eq for SKESK5
Auto Trait Implementations
impl RefUnwindSafe for SKESK5
impl Send for SKESK5
impl Sync for SKESK5
impl Unpin for SKESK5
impl UnwindSafe for SKESK5
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more