projects
I like doing recreational programming and just working on random things that interest me. Try recreational programming!
security and cryptography
- c25519: Side-channel attack resistant Ed25519 implementation in C that also includes SHA-512. It focuses on practical performance with generally good results, while passing a broad set of test vectors.
- newspeak: End-to-end encrypted chat in Rust implementing Signal's Post-Quantum Extended Diffie-Hellman and Double Ratchet. Built with
tonicfor gRPC, SQLite for storage,dalekprimitives, and aratatuiterminal UI. - secp256k1: secp256k1 signing and verification implementation with Jacobian coordinates and Montgomery representation to reduce expensive operations. Includes deterministic RFC6979 nonces.
- hkdf: Self-contained header-only HKDF implementation in C with SHA-256 and HMAC primitives included.
- pqxdh: Go library for Post-Quantum Extended Diffie-Hellman and XEdDSA. Extends X3DH with ML-KEM to provide stronger resistance against future quantum adversaries.
- merkle: Merkle tree implementations in Go and C using SHA-256, including generation and verification of inclusion proofs.
- schnorr: Schnorr signatures implemented over secp256k1 curve in 100 lines of Python. Serves as an educational implementation without dependencies (related to math).
- gocry: Proof-of-concept ransomware implementation for educational and security research purposes.
programming languages and parsing
- kukka: Small and fast parser combinator library in Rust that uses static dispatch to avoid trait-object overhead. It's mature enough to write parsers for JSON and CSV in a few lines.
- mc: A simplistic C compiler written in Go with lexical analysis, parsing, IR generation, and x64 assembly output. Stopped working on this after getting a macbook.
distributed systems and databases
- haystack: Distributed file system inspired by Facebook's Haystack architecture. Uses a Raft-based directory cluster to map files to append-only volumes and coordinates replication across store servers.
- distsql: Distributed consensus layer built on top of SQLite for coordinating state across nodes.
- levelsql: Minimal SQL implementation that stores relational data as key-value pairs on LevelDB.