Struct sequoia_openpgp::packet::pkesk::PKESK3

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

Holds an asymmetrically encrypted session key.

The session key is needed to decrypt the actual ciphertext. See Section 5.1 of RFC 4880 for details.

Implementations§

source§

impl PKESK3

source

pub fn new( recipient: KeyID, pk_algo: PublicKeyAlgorithm, encrypted_session_key: Ciphertext, ) -> Result<PKESK3>

Creates a new PKESK3 packet.

source

pub fn for_recipient<P, R>( algo: SymmetricAlgorithm, session_key: &SessionKey, recipient: &Key<P, R>, ) -> Result<PKESK3>
where P: KeyParts, R: KeyRole,

Creates a new PKESK3 packet for the given recipient.

The given symmetric algorithm must match the algorithm that is used to encrypt the payload.

source

pub fn recipient(&self) -> &KeyID

Gets the recipient.

source

pub fn set_recipient(&mut self, recipient: KeyID) -> KeyID

Sets the recipient.

source

pub fn pk_algo(&self) -> PublicKeyAlgorithm

Gets the public key algorithm.

source

pub fn set_pk_algo(&mut self, algo: PublicKeyAlgorithm) -> PublicKeyAlgorithm

Sets the public key algorithm.

source

pub fn esk(&self) -> &Ciphertext

Gets the encrypted session key.

source

pub fn set_esk(&mut self, esk: Ciphertext) -> Ciphertext

Sets the encrypted session key.

source

pub fn decrypt( &self, decryptor: &mut dyn Decryptor, sym_algo_hint: Option<SymmetricAlgorithm>, ) -> Option<(SymmetricAlgorithm, SessionKey)>

Decrypts the encrypted session key.

If the symmetric algorithm used to encrypt the message is known in advance, it should be given as argument. This allows us to reduce the side-channel leakage of the decryption operation for RSA.

Returns the session key and symmetric algorithm used to encrypt the following payload.

Returns None on errors. This prevents leaking information to an attacker, which could lead to compromise of secret key material with certain algorithms (RSA). See Section 14 of RFC 4880.

Trait Implementations§

source§

impl Clone for PKESK3

source§

fn clone(&self) -> PKESK3

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 PKESK3

source§

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

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

impl From<PKESK3> for PKESK

source§

fn from(p: PKESK3) -> Self

Converts to this type from the input type.
source§

impl From<PKESK3> for Packet

source§

fn from(p: PKESK3) -> Self

Converts to this type from the input type.
source§

impl Hash for PKESK3

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 PKESK3

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 PKESK3

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<'a> Parse<'a, PKESK3> for PKESK3

source§

fn from_buffered_reader<R>(reader: R) -> Result<Self>
where R: BufferedReader<Cookie> + 'a,

Reads from the given buffered reader.
source§

fn from_reader<R: 'a + Read + Send + Sync>(reader: R) -> Result<Self>

Reads from the given reader.
source§

fn from_bytes<D: AsRef<[u8]> + ?Sized + Send + Sync>( data: &'a D, ) -> Result<Self>

Reads from the given slice. Read more
source§

fn from_file<P: AsRef<Path>>(path: P) -> Result<T>

Reads from the given file. Read more
source§

impl PartialEq for PKESK3

source§

fn eq(&self, other: &PKESK3) -> 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 Eq for PKESK3

source§

impl StructuralPartialEq for PKESK3

Auto Trait Implementations§

§

impl Freeze for PKESK3

§

impl RefUnwindSafe for PKESK3

§

impl Send for PKESK3

§

impl Sync for PKESK3

§

impl Unpin for PKESK3

§

impl UnwindSafe for PKESK3

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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T