Roadmap

Suggesting a new feature

If you'd like to suggest a new feature, feel free to open a feature request on GitHubarrow-up-right. However, please read the Goals section first.

v4.1.2

v4.2.0

  • Try to implement some automated testing.

  • Investigate guarded heap allocations for byte array secrets.

  • Investigate better erasure of secrets (e.g. pinning and wiping strings/char arrays).

  • Support YubiKeys via the .NET YubiKey SDKarrow-up-right. A decision needs to be made whether to use PIV, which requires the 5.7 firmware for X25519/Ed25519, or challenge-response, which is symmetric, allows backups, and works with older YubiKeys. Using PIV requires waiting for updates to the SDK and me buying a new YubiKey. Supporting both is probably an overcomplicated UX.

  • Address build warnings.

  • Investigate support for win-arm64.

Long run

Breaking

  • Address Unicode normalization.

  • Add multi-recipient sender authentication if possible.

  • Switch to AEGIS-256arrow-up-right for encryption. Much faster, well analysed, and fully committing (assuming the associated data is empty or hashed).

  • Change the KDF to either HKDF (needlessly inefficient and won't be using BLAKE2), BLAKE3 (another dependency), or one of NIST's KDFsarrow-up-right using BLAKE2b (not widely used).

  • Use Ed25519ph for prehashing in v2 of the signature format. It wasn't available in the previousarrow-up-right libsodium binding.

  • Reconsider random nonces (e.g. for private key encryption).

  • Could switch to libsodium's secretstreamarrow-up-right API for file encryption. This wasn't available in the previousarrow-up-right libsodium binding. One mayarrow-up-right be coming for AEGIS. Or just write a STREAMarrow-up-right library, which I should do anyway.

  • Support more recipients/change the key wrap header approach.

  • Remove free space from the file metadata header.

  • Consider ASCII armour/Minisign style detached signature files.

  • Will need to eventually switch to post-quantum asymmetric primitives - KEM and signing. This requires waiting for further analysisarrow-up-right and library supportarrow-up-right (likely years). The UX will be terrible.

  • Consider supporting unencrypted private keys for non-interactive use cases.

Non-breaking

  • Support non-detached signatures?

  • Confirm y/n before -o|--overwrite?

  • Do a progress bar like Docker?

  • Add a -b|--batch option for automated use cases that rejects interactive input and terminates the program when an error/exception occurs?

  • Consider -q|--quiet to hide output.

  • Investigate stdinarrow-up-right support.

  • Display -h|--help with no user input if possible.

  • Have a trusted folder for public keys, with separate files or folders for encryption/signing? No idea what the UX would be.

  • Add support for generating vanity addressarrow-up-right public keys?

Last updated