Hi there,
I started exploring FLOE and its Rust implementation last week, which led to a small PR: #9.
While digging deeper, I noticed from the discussion in #8 that there are some unresolved issues with the current implementation. As a result, I rewrote the Rust version: https://github.com/poljar/floe.
So far, I haven’t implemented the public streaming/online functions, only the semi-public (random access) functions are available. Even so, this new implementation offers several advantages:
no_std compatible.
- Allows the user to choose the RNG implementation.
- Uses generics consistent with most crates in the RustCrypto ecosystem, making it easy to swap in any AEAD/KDF implementation. For example, see the FLOE-GCM implementation.
- Uses the
zerocopy crate to parse and represent FLOE types (segments, headers, parameters) as higher-level objects.
There are some trade-offs as well:
- More dependencies (
zerocopy, thiserror).
- Generics can be harder to understand.
- The implementation is still incomplete.
With that said, I wanted to ask if you’d consider adopting this rewrite as the reference Rust implementation instead of the one being developed in #8.
Hi there,
I started exploring FLOE and its Rust implementation last week, which led to a small PR: #9.
While digging deeper, I noticed from the discussion in #8 that there are some unresolved issues with the current implementation. As a result, I rewrote the Rust version: https://github.com/poljar/floe.
So far, I haven’t implemented the public streaming/online functions, only the semi-public (random access) functions are available. Even so, this new implementation offers several advantages:
no_stdcompatible.zerocopycrate to parse and represent FLOE types (segments, headers, parameters) as higher-level objects.There are some trade-offs as well:
zerocopy,thiserror).With that said, I wanted to ask if you’d consider adopting this rewrite as the reference Rust implementation instead of the one being developed in #8.