A simple little Rust crypto library, to inspire competition.
  • Rust 54.3%
  • C 21.9%
  • Haskell 14%
  • Assembly 9.8%
Find a file
2019-06-08 17:43:30 -07:00
cryptonum@666378b14b [BROKEN] Start the process of adding examples to the top of the files, and in doing so note that DSA key generation is broken. 2019-05-27 21:42:40 -07:00
src Switch to using the internal SHA/HMAC implementations. 2019-06-08 17:43:30 -07:00
test-generator Shift from_bytes into the Point impl. 2019-05-18 17:38:55 -07:00
testdata Add support for HMAC computation, although in an awkward module. 2019-06-08 16:30:21 -07:00
.gitignore Add some helpful documentation for the SSH library. 2019-05-28 21:58:47 -07:00
.gitmodules Add cryptonum as a submodule. 2019-03-07 21:55:56 -07:00
.travis.yml Do CI integration on stable and beta channels, allow nightly to fail. 2019-03-07 22:01:35 -07:00
Cargo.toml Switch to using the internal SHA/HMAC implementations. 2019-06-08 17:43:30 -07:00
LICENSE More basic infrastructure. 2018-02-25 11:02:44 -08:00
README.md A little more project context, as I get started. 2018-02-25 11:00:03 -08:00
TECHNICAL_DEBT Update some of the technical debt. 2019-05-28 22:01:37 -07:00

Simple Crypto

A simple little Rust crypto library, to inspire competition.

This crate is being designed as a hobby project, because I enjoy the challenge of writing good crypto, and it seems like a good way to get pretty deep into Rust. Modules in the crate should include proper test cases, including both positive and negative test cases against all critical code; this will suffice as evidence of correctness until I can throw SAW and Cryptol at it to prove functional equivalence to specification.

I will admit that I don't get terribly excited about timing attacks, and so while I will try not to leave obvious timing holes, I may miss some. If you see one, please create an issue or -- even better -- a pull request to fix it.

Documentation wanted! Particularly for beginners! If a library doesn't make sense to you, or it's not clear where you should use it or what parameters make sense, file an issue! I want to make sure that this library is usable by people implementing crazy protocols -- I'm looking at you, Tor -- but I also want to make sure there's an obvious path for beginners.

Patches always welcome! Constructive suggestions also very welcome. This crate is a hobby project, but that doesn't mean it can't be useful.