FLOE is a misuse-resistant nonce-based online authenticated encryption scheme for the encryption of very large data sets.
`fast-floe` is Rust implementation of FLOE that provides several ergonomic misuse-resistant APIs for working with FLOE messages, ordered below from simplest (and more high-level) to more advanced (and low-level).
|Need|API|Input|
|:-|:-|:-|
|Encrypt or decrypt bytes already in memory|`encrypt`, `decrypt`|One-shot complete message|
|Process a file, socket, or `std::io` adapter|`fast_floe::io`|`Read` or `Write`|
|Read selected authenticated ranges|`fast_floe::random_access`|`Read + Seek` ciphertext|
|Exchange segments, possibly out-of-order|`fast_floe::online`|Streaming data|
|Process segments manually or in parallel|`fast_floe::low_level`|Experts needing control|
You're probably familiar with [STREAM/nOAE from Hoang et al](https://eprint.iacr.org/2015/189.pdf)), and FLOE is an nOAE variant with some additional properties that STREAM-like constructions are lacking, like key-commitment and a formal treatment of random-access.