Skip to content

Alternative Floe implementation in Rust #10

@poljar

Description

@poljar

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:

  1. no_std compatible.
  2. Allows the user to choose the RNG implementation.
  3. 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.
  4. Uses the zerocopy crate to parse and represent FLOE types (segments, headers, parameters) as higher-level objects.

There are some trade-offs as well:

  1. More dependencies (zerocopy, thiserror).
  2. Generics can be harder to understand.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions