Skip to main content

HeaderBinding

Struct HeaderBinding 

Source
pub struct HeaderBinding<'a> {
    pub salt: &'a [u8; 16],
    pub kdf_memory: u32,
    pub kdf_iterations: u32,
    pub kdf_parallelism: u32,
    pub kdf_key_length: u8,
    pub content_nonce: &'a [u8; 24],
    pub filename_nonce: &'a [u8; 24],
}
Expand description

The fixed header fields bound as associated data to every v2 AEAD operation.

This exists separately from FileHeader because on encryption the associated data is needed before the header can be built (the header contains the filename ciphertext, which is itself AEAD-encrypted under this binding).

The variable-length fields (header_length, filename_ciphertext_length, and the filename ciphertext itself) are deliberately excluded: they depend on the filename encryption output, and tampering with them is already detected — a shifted length changes which bytes are interpreted as ciphertext, which fails authentication.

Fields§

§salt: &'a [u8; 16]§kdf_memory: u32§kdf_iterations: u32§kdf_parallelism: u32§kdf_key_length: u8§content_nonce: &'a [u8; 24]§filename_nonce: &'a [u8; 24]

Implementations§

Source§

impl<'a> HeaderBinding<'a>

Source

pub fn new( salt: &'a [u8; 16], kdf_params: &KeyDerivationParams, content_nonce: &'a [u8; 24], filename_nonce: &'a [u8; 24], ) -> Self

Source

pub fn aad(&self, purpose: AadPurpose) -> Vec<u8>

Serializes the binding into the associated data for one AEAD operation. Field order mirrors the header serialization.

Trait Implementations§

Source§

impl<'a> Clone for HeaderBinding<'a>

Source§

fn clone(&self) -> HeaderBinding<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for HeaderBinding<'a>

Source§

impl<'a> Debug for HeaderBinding<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for HeaderBinding<'a>

§

impl<'a> RefUnwindSafe for HeaderBinding<'a>

§

impl<'a> Send for HeaderBinding<'a>

§

impl<'a> Sync for HeaderBinding<'a>

§

impl<'a> Unpin for HeaderBinding<'a>

§

impl<'a> UnsafeUnpin for HeaderBinding<'a>

§

impl<'a> UnwindSafe for HeaderBinding<'a>

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§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

Source§

type Output = T

Should always be Self
Source§

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

Source§

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

Source§

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

Source§

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.