Struct sequoia_openpgp::packet::pkesk::PKESK3[][src]

pub struct PKESK3 { /* fields omitted */ }

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

impl PKESK3[src]

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

Creates a new PKESK3 packet.

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

Creates a new PKESK3 packet for the given recipent.

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

pub fn recipient(&self) -> &KeyID[src]

Gets the recipient.

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

Sets the recipient.

pub fn pk_algo(&self) -> PublicKeyAlgorithm[src]

Gets the public key algorithm.

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

Sets the public key algorithm.

pub fn esk(&self) -> &Ciphertext[src]

Gets the encrypted session key.

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

Sets the encrypted session key.

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

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

impl Clone for PKESK3[src]

fn clone(&self) -> PKESK3[src]

Returns a copy of the value. Read more

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

Performs copy-assignment from source. Read more

impl Debug for PKESK3[src]

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

Formats the value using the given formatter. Read more

impl From<PKESK3> for PKESK[src]

fn from(p: PKESK3) -> Self[src]

Performs the conversion.

impl From<PKESK3> for Packet[src]

fn from(p: PKESK3) -> Self[src]

Performs the conversion.

impl Hash for PKESK3[src]

fn hash<__H: Hasher>(&self, state: &mut __H)[src]

Feeds this value into the given Hasher. Read more

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 Marshal for PKESK3[src]

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

Writes a serialized version of the object to o.

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

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

impl MarshalInto for PKESK3[src]

fn serialized_len(&self) -> usize[src]

Computes the maximal length of the serialized representation. Read more

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

Serializes into the given buffer. Read more

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

Serializes the packet to a vector.

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

Exports into the given buffer. Read more

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

Exports to a vector. Read more

impl<'a> Parse<'a, PKESK3> for PKESK3[src]

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

Reads from the given reader.

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

Reads from the given file. Read more

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

Reads from the given slice. Read more

impl PartialEq<PKESK3> for PKESK3[src]

fn eq(&self, other: &PKESK3) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, other: &PKESK3) -> bool[src]

This method tests for !=.

impl Eq for PKESK3[src]

impl StructuralEq for PKESK3[src]

impl StructuralPartialEq for PKESK3[src]

Auto Trait Implementations

impl RefUnwindSafe for PKESK3

impl Send for PKESK3

impl Sync for PKESK3

impl Unpin for PKESK3

impl UnwindSafe for PKESK3

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn __clone_box(&self, Private) -> *mut ()[src]

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

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

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

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

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

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

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

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.