Skip to main content

EncryptedFile

Struct EncryptedFile 

Source
pub struct EncryptedFile {
    header: FileHeader,
    ciphertext: Vec<u8>,
}
Expand description

Represents a complete encrypted file with header and content

Fields§

§header: FileHeader§ciphertext: Vec<u8>

Implementations§

Source§

impl EncryptedFile

Source

pub fn new(header: FileHeader, ciphertext: Vec<u8>) -> EncryptedFile

Source

pub fn seal( plaintext_file: &PlaintextFile, key: &SecureKey, kdf_params: KeyDerivationParams, salt: [u8; 16], content_nonce: [u8; 24], filename_nonce: [u8; 24], ) -> Result<EncryptedFile, FileError>

Encrypts a plaintext file into a complete v2 encrypted file.

This owns the v2 AEAD choreography: the fixed header fields are bound as associated data to both ciphertexts, with distinct domains for filename and content, so neither the header nor the pairing of the two ciphertexts can be tampered with undetected.

The caller supplies the key (derived from kdf_params and salt) and fresh random salt/nonces, keeping this function deterministic.

Source

pub fn from_bytes(bytes: &[u8]) -> Result<EncryptedFile, HeaderError>

Parses a serialized v2 file into its header and content ciphertext.

Source

pub fn to_bytes(&self) -> Vec<u8>

Serializes the complete file (header followed by content ciphertext).

Source

pub fn decrypt(&self, key: &SecureKey) -> Result<PlaintextFile, FileError>

Decrypts the filename and content, verifying the header binding under each ciphertext’s own domain. The inverse of EncryptedFile::seal.

Source

pub fn header(&self) -> &FileHeader

Source

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

Trait Implementations§

Source§

impl Debug for EncryptedFile

Source§

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

Formats the value using the given formatter. Read more

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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.