This is a cryptographic library (mostly made for fun and academic purpose). I try to adhere to standards, and verify the implementation by expected output. Here is some of the resources used:
- For tests: Cryptographic Standards and Guidelines, Examples with Intermediate Values
- AES, NIST FIPS 197 (my implementation is vulnerable to S-box related timing attacks)
- Secure Hashing Algorithm (SHA) NIST FIPS 180-4
- HMAC NIST FIPS 198-1
- CMAC NIST SP 800-38B
- PBKDF2: RFC8018
- Twofish
- ChaCha20: RFC8439 but with 64 bit counter and nonce
Generate the documentation with
cargo doc --no-deps --open
In the examples diecroy there are a example. It is a small application to encrypt, decrypt and apply error correcting codes. Run with
cargo run --example cryptor --release -- [-h] [-i inputfile] [-o outputfile] [-p password] encrypt|decrypt
- Poly1305
- Fortuna using ChaCha20?
- SHA256 fam
- SHA3
- Elliptic curves (Curve25519)
- Digital signatures?
- Fix input vectors and salts
- CMAC
- Twofish
- Message padding like SHA512 for CBC
- CBC in place on mutable vector
-
Input vector be removed from aes cipher and inv_cipher.
-
Encrypt and decrypt not aligned with 16 bytes.
-
IV in encrypt and decrypt iterator.
-
cipher block chaining in encrypt and decrypt iterator.
-
cipher text stealing in encrypt and decrypt iterator.
-
Incorporate the code of Frixxie
- Encrypt and decrypt stream is buggy when encrypting less than a single block. (CTS should not be activated, but i think maybe it is?)