Struct sequoia_openpgp::packet::Unknown

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

Holds an unknown packet.

This is used by the parser to hold packets that it doesn’t know how to process rather than abort.

This packet effectively holds a binary blob.

§A note on equality

Two Unknown packets are considered equal if their tags and their bodies are equal.

Implementations§

source§

impl Unknown

source

pub fn new(tag: Tag, error: Error) -> Self

Returns a new Unknown packet.

source

pub fn hash_algo_security(&self) -> HashAlgoSecurity

The security requirements of the hash algorithm for self-signatures.

A cryptographic hash algorithm usually has three security properties: pre-image resistance, second pre-image resistance, and collision resistance. If an attacker can influence the signed data, then the hash algorithm needs to have both second pre-image resistance, and collision resistance. If not, second pre-image resistance is sufficient.

In general, an attacker may be able to influence third-party signatures. But direct key signatures, and binding signatures are only over data fully determined by signer. And, an attacker’s control over self signatures over User IDs is limited due to their structure.

These observations can be used to extend the life of a hash algorithm after its collision resistance has been partially compromised, but not completely broken. For more details, please refer to the documentation for HashAlgoSecurity.

source

pub fn tag(&self) -> Tag

Gets the unknown packet’s tag.

source

pub fn set_tag(&mut self, tag: Tag) -> Tag

Sets the unknown packet’s tag.

source

pub fn error(&self) -> &Error

Gets the unknown packet’s error.

This is the error that caused parsing or processing to abort.

source

pub fn set_error(&mut self, error: Error) -> Error

Sets the unknown packet’s error.

This is the error that caused parsing or processing to abort.

source§

impl Unknown

This packet implements the unprocessed container interface.

Container packets like this one can contain unprocessed data.

source

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

Gets a reference to the this packet’s body.

source

pub fn set_body(&mut self, data: Vec<u8>) -> Vec<u8>

Sets the this packet’s body.

Trait Implementations§

source§

impl Any<Unknown> for Packet

source§

fn downcast(self) -> Result<Unknown, Packet>

Attempts to downcast to T, returning the packet if it fails. Read more
source§

fn downcast_ref(&self) -> Option<&Unknown>

Attempts to downcast to &T, returning None if it fails. Read more
source§

fn downcast_mut(&mut self) -> Option<&mut Unknown>

Attempts to downcast to &mut T, returning None if it fails. Read more
source§

impl Clone for Unknown

source§

fn clone(&self) -> Self

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 Unknown

source§

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

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

impl From<Unknown> for Packet

source§

fn from(s: Unknown) -> Self

Converts to this type from the input type.
source§

impl Hash for Unknown

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 IntoIterator for Unknown

Implement IntoIterator so that cert::insert_packets(sig) just works.

§

type Item = Unknown

The type of the elements being iterated over.
§

type IntoIter = Once<Unknown>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl Marshal for Unknown

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 Unknown

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 Unknown

source§

fn eq(&self, other: &Unknown) -> 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 TryFrom<Packet> for Unknown

source§

fn try_from(p: Packet) -> Result<Self, Self::Error>

Tries to convert a packet to an Unknown. Returns an error if the given packet is a container packet (i.e. a compressed data packet or an encrypted data packet of any kind).

§

type Error = Error

The type returned in the event of a conversion error.
source§

impl Eq for Unknown

Auto Trait Implementations§

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.