Go to file
Lucas Gabriel Vuotto 2f31fe73e5 impl/poly1305: add a comment
Explain why it's fine to skip clamping while doing t4 t3 t2 t1 t0 + 5.
2024-06-30 14:10:46 +00:00
lib initial import 2024-05-31 10:59:58 +00:00
wycheproof Add KDF interface and HKDF implementation 2024-06-18 14:30:06 +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 Shuffle LC_SRCS around 2024-06-26 22:49:26 +00:00
README ct: add mask32 2024-06-26 22:42:04 +00:00
aead.c aead: rewrite api 2024-06-20 15:52:58 +00:00
aead_chacha20_poly1305.c aead: rewrite api 2024-06-20 15:52:58 +00:00
auth.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
auth_hmac.c auth/hmac: save lc_hash_ctx for scrub 2024-06-19 14:07:36 +00:00
auth_poly1305.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
cipher.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
cipher_chacha20.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
ct.c ct/cmp: make it generic by taking void pointers 2024-06-28 17:08:23 +00:00
hash.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
hash_sha224_sha256.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
hash_sha384_sha512.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
impl_chacha20.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
impl_poly1305.c impl/poly1305: add a comment 2024-06-30 14:10:46 +00:00
impl_sha256.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
impl_sha512.c Merge most of internal headers into internal.h 2024-06-17 21:52:07 +00:00
internal.h Shuffle headers 2024-06-27 12:29:39 +00:00
kdf.c Add KDF interface and HKDF implementation 2024-06-18 14:30:06 +00:00
kdf_hkdf.c kdf/hkdf: scrub the pseudorandom key 2024-06-19 14:07:57 +00:00
lilcrypto.h ct/cmp: make it generic by taking void pointers 2024-06-28 17:08:23 +00:00
util.c Use a single zero buffer 2024-06-19 13:18:25 +00:00
util.h Add hash interface and SHA-{384,512} implementations 2024-06-06 12:40:38 +00:00
wycheproof_aead.c wycheproof_aead: adapt to the new api 2024-06-20 15:53:57 +00:00
wycheproof_hkdf.c Add KDF interface and HKDF implementation 2024-06-18 14:30:06 +00:00
wycheproof_mac.c hash/sha512: add SHA-512/224 and SHA-512/256 variants 2024-06-17 14:41:20 +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
  - [x] mask32: return a 1s mask if any bit is set, 0 otherwise
- Hexdump

Hash
----

- [x] SHA-224
- [x] SHA-256
- [x] SHA-384
- [x] SHA-512
- [x] SHA-512/224 & SHA-512/256

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

- [x] HMAC
- [x] Poly1305

Ciphers
-------

- [x] ChaCha20
- [x] XChaCha20

AEAD
----

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

ECC
---

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

KDF
---

- [x] HKDF


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

Utilities
---------

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

Hash
----

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 Wycheproof test vector suite)
- [ ] XSalsa20-Poly1305 (no Wycheproof test vector suite)