ZeroTierOne/third_party/kyber/contributing.md

1.5 KiB

Contributing

Contributions always welcome. For pull requests create a feature fork and submit it to the development branch. If possible please run a benchmark first for any significant regressions.

Current areas of focus aka "aspirational TODO's":

  • Idiomatic rust - For the moment this crate closely follows the C reference code and will likely stay that way until the PQC standardization project finishes. Still there is a few things that could cleaned up to make it more rusty in preparation for that.
  • Neon ARM intrinsics - There is a neon library for Kyber, though currently many ARM intrinsics still don't exist in rust, so there's two branches, neon is a rust port of his work that will have to wait until the intrinsics are upstream, neon_c is using the original C code with a FFI.
  • Translated Docs: Localization of readmes and other docs.
  • Optimizations - See the benchmarking readme, possibly some fat that can still be trimmed off.
  • Add RustCrypto primitives feature for 90s mode - This is half done yet commented out, still needs some cleaning up to fit in.
  • Add a zeroize feature - Clean out ephemeral keys after use, also might be worthwhile to zero out polynomials and other internals, which will need benchmarking.
  • Serde - Implement Serialize/Deserialize traits for the structs and put it behind a feature gate.

By submitting any code to this repository you agree to have it licensed under both Apache 2.0 and MIT.