Go to file
Lucas Gabriel Vuotto a6208487e4 aead: replace init args with implementation-specific params struct
This unbreaks {,X}ChaCha20-Poly1305. Thanks to the use of params, the
{,X}ChaCha20-Poly1305 doesn't need to reach into the guts of ChaCha20
state. Move {en,de}cryption and key setup into its own functions.

This breaks the tests, which will be fixed in the following commit.
2024-06-07 23:29:29 +00:00
lib initial import 2024-05-31 10:59:58 +00:00
wycheproof hash: implement SHA-{224,256} 2024-06-07 03:14:21 +00:00
.gitignore Make .gitignore ignore all the obj/ directories 2024-05-31 11:48:43 +00:00
Makefile initial import 2024-05-31 10:59:58 +00:00
Makefile.inc hash: implement SHA-{224,256} 2024-06-07 03:14:21 +00:00
README hash: implement SHA-{224,256} 2024-06-07 03:14:21 +00:00
aead.c aead: replace init args with implementation-specific params struct 2024-06-07 23:29:29 +00:00
aead.h aead: replace init args with implementation-specific params struct 2024-06-07 23:29:29 +00:00
aead_chacha20_poly1305.c aead: replace init args with implementation-specific params struct 2024-06-07 23:29:29 +00:00
auth.c auth: replace init args with a implementation-specific params struct 2024-06-07 18:40:14 +00:00
auth.h auth: replace init args with a implementation-specific params struct 2024-06-07 18:40:14 +00:00
auth_hmac.c auth: replace init args with a implementation-specific params struct 2024-06-07 18:40:14 +00:00
auth_poly1305.c auth: replace init args with a implementation-specific params struct 2024-06-07 18:40:14 +00:00
cipher.c cipher: replace init args with a implementation-specific params struct 2024-06-07 18:52:46 +00:00
cipher.h cipher: replace init args with a implementation-specific params struct 2024-06-07 18:52:46 +00:00
cipher_chacha20.c cipher: replace init args with a implementation-specific params struct 2024-06-07 18:52:46 +00:00
ct.c ct/lc_ct_cmp: improve interface 2024-06-06 13:49:25 +00:00
hash.c Add hash interface and SHA-{384,512} implementations 2024-06-06 12:40:38 +00:00
hash.h Add hash interface and SHA-{384,512} implementations 2024-06-06 12:40:38 +00:00
hash_sha224_sha256.c hash: implement SHA-{224,256} 2024-06-07 03:14:21 +00:00
hash_sha224_sha256.h hash: implement SHA-{224,256} 2024-06-07 03:14:21 +00:00
hash_sha384_sha512.c Add hash interface and SHA-{384,512} implementations 2024-06-06 12:40:38 +00:00
hash_sha384_sha512.h Add hash interface and SHA-{384,512} implementations 2024-06-06 12:40:38 +00:00
impl_chacha20.c Implement XChaCha20 and XChaCha20-Poly1305 2024-06-07 02:18:50 +00:00
impl_chacha20.h Implement XChaCha20 and XChaCha20-Poly1305 2024-06-07 02:18:50 +00:00
impl_hmac.h auth: add HMAC implementation 2024-06-06 12:41:44 +00:00
impl_poly1305.c initial import 2024-05-31 10:59:58 +00:00
impl_poly1305.h initial import 2024-05-31 10:59:58 +00:00
impl_sha256.c hash: implement SHA-{224,256} 2024-06-07 03:14:21 +00:00
impl_sha256.h hash: implement SHA-{224,256} 2024-06-07 03:14:21 +00:00
impl_sha512.c Add hash interface and SHA-{384,512} implementations 2024-06-06 12:40:38 +00:00
impl_sha512.h Add hash interface and SHA-{384,512} implementations 2024-06-06 12:40:38 +00:00
lilcrypto.h aead: replace init args with implementation-specific params struct 2024-06-07 23:29:29 +00:00
util.c util/hexdump_line: fix space padding 2024-06-06 00:56:20 +00:00
util.h Add hash interface and SHA-{384,512} implementations 2024-06-06 12:40:38 +00:00
wycheproof_aead.c Move all inout parameters to the front of the arguments list 2024-06-07 17:47:42 +00:00
wycheproof_mac.c hash: implement SHA-{224,256} 2024-06-07 03:14:21 +00:00

README

lilcrypto
=========

> They see me rollin', they hatin'.

Experiment on rolling my own crypto. Kinda. I'm not creating any new
protocol, but implementing known algorithms and constructions. The main
focus is to understand how to implement the math behind the algorithms,
and to get to know the constructions better.

Algorithms
==========

Utilities
---------

- Constant-time operations
  - [x] compare

Hash
----

- [x] SHA-224
- [x] SHA-256
- [x] SHA-384
- [x] SHA-512 (needed for Ed25519)

Authentication
--------------

- [x] HMAC
- [x] Poly1305

Ciphers
-------

- [x] ChaCha20
- [x] XChaCha20

AEAD
----

- [x] ChaCha20-Poly1305
- [x] XChaCha20-Poly1305

ECC
---

- Curve25519
  - [ ] Ed25519 (EdDSA)
  - [ ] X25519 (ECDH)

Nice-to-haves
=============

Utilities
---------

- [ ] Portable Makefile
- [ ] NaCl interface
- [ ] signify interface

Hash
----

- [ ] SHA-512/224 & SHA-512/256 (most of the work done)

Authentication
--------------

- [ ] GMAC

Ciphers
-------

- [ ] AES
- [ ] Camellia
- [ ] Salsa20 (no Wycheproof test vector suite)
- [ ] XSalsa20 (no Wycheproof test vector suite)

AEAD
----

- [ ] AES-GCM
- [ ] Camellia-GCM
- [ ] Salsa20-Poly1305 (no Wycherproof test vector suite)
- [ ] XSalsa20-Poly1305 (no Wycherproof test vector suite)

KDF
---

- [ ] HKDF