pub struct EncryptedFileWriter { /* private fields */ }
Expand description

A lazy file writer, that decrypt the file with the given cipher and verifies it with the tag appended to the end of the input data.

This writer is lazy because the input data is decrypted and written to the specified file on the fly, instead of buffering all the data first. This greatly reduces memory usage for large files.

The length of the input data (including the appended tag) must be given when this reader is initialized. When all data including the tag is read, the decrypted data is verified with the tag. If the tag doesn’t match the decrypted data, a write error is returned on the last write. This writer will never write more bytes than the length initially specified.

This reader encrypts the input data with the given key and input vector.

A failed writing implies that no data could be written, or that the data wasn’t successfully decrypted because of an decryption or tag matching error. Such a fail means that the file will be incomplete or corrupted, and should therefore be removed from the disk.

It is highly recommended to invoke the verified() method after writing the file, to ensure the written file is indeed complete and fully verified.

Implementations

Construct a new encrypted file writer.

The file to write to must be given to file, which must be open for writing. The total length of the input data in bytes must be given to len, which includes both the file bytes and the appended tag.

For decryption, a cipher, key and iv must also be given.

Check wheher the complete tag is buffered.

Check whether the decrypted data is succesfsully verified.

If this method returns true the following is implied:

  • The complete file has been written.
  • The complete file was successfully decrypted.
  • The included tag matches the decrypted file.

It is highly recommended to invoke this method and check the verification after writing the file using this writer.

Trait Implementations

Get the exact length of the reader in bytes.
Check whehter this extact length reader is emtpy.

The writer trait implementation.

Write a buffer into this writer, returning how many bytes were written. Read more
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Like write, except that it writes from a slice of buffers. Read more
🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored implementation. Read more
Attempts to write an entire buffer into this writer. Read more
🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
Writes a formatted string into this writer, returning any error encountered. Read more
Creates a “by reference” adapter for this instance of Write. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Writes an unsigned 8 bit integer to the underlying writer. Read more
Writes a signed 8 bit integer to the underlying writer. Read more
Writes an unsigned 16 bit integer to the underlying writer. Read more
Writes a signed 16 bit integer to the underlying writer. Read more
Writes an unsigned 24 bit integer to the underlying writer. Read more
Writes a signed 24 bit integer to the underlying writer. Read more
Writes an unsigned 32 bit integer to the underlying writer. Read more
Writes a signed 32 bit integer to the underlying writer. Read more
Writes an unsigned 48 bit integer to the underlying writer. Read more
Writes a signed 48 bit integer to the underlying writer. Read more
Writes an unsigned 64 bit integer to the underlying writer. Read more
Writes a signed 64 bit integer to the underlying writer. Read more
Writes an unsigned 128 bit integer to the underlying writer.
Writes a signed 128 bit integer to the underlying writer.
Writes an unsigned n-bytes integer to the underlying writer. Read more
Writes a signed n-bytes integer to the underlying writer. Read more
Writes an unsigned n-bytes integer to the underlying writer. Read more
Writes a signed n-bytes integer to the underlying writer. Read more
Writes a IEEE754 single-precision (4 bytes) floating point number to the underlying writer. Read more
Writes a IEEE754 double-precision (8 bytes) floating point number to the underlying writer. Read more