- just a toy implementation to better understand the algorithm
- all three 512, 768 and 1024 sec levels.
- ported from the reference and the Go Implementation, so not the fanciest Python code
- not hardened against (timing/other) side channel attacks
- test coverage is poor, use at your own risk
Just take a look at ccakem.py
. Functions
kem_keygenXXX()
,kem_encapsXXX(pubkey, seed=None)
andkem_decapsXXX(private_key, ciphertext)
correspond directly to the spec. For kem_encaps
you can optionally provide a custom seed
which is useful for debugging.
Typical kem, e.g. 512 sec level, would be
priv, pub = kem_keygen512()
secret1, cipher = kem_encaps512(pub)
secret2 = kem_decaps512(priv, cipher)