Warning
This library is a work in progress
Almunecar is a cryptography library written in C, designed with simplicity in mind. It features a simple straightforward codebase and an intuitive API, making it accessible and easy to understand.
The primary goal of this library is not production use, but rather to provide clear and concise implementations of fundamental cryptographic protocols. It's an ideal resource for learning and exploring cryptographic concepts in a practical way.
Glossary:
- ✅: Implemented
- 🚧: WIP
- 📝: Planned support
| Libs | Desc | Status |
|---|---|---|
| primitive-types | BigUint & UINTs | ✅ |
| math | Math theorems and utils | ✅ |
| hashes | SHA-256 | ✅ |
| digital-signature | RSA, ECDSA | 🚧 |
| elliptic-curves | secp256k1, BLS12-381 | 📝 |
| snarks | groth, plonk | 📝 |
| commitment schemes | Merkle tree, FRI, KZG | 📝 |
Note
This is just an initial roadmap to define the scope of the lib. They are not definitive and may vary in the future as we explore and work.
To install the library globally in your system run:
make installTo uninstall:
make uninstallTo install the CLI program in your system run:
make cli_install
almunecar --helpTo uninstall:
make cli_uninstallTo start developing, you'll need to compile the libs:
make buildWhenever you make a change on a lib, you'll need to re-build to see its effects.
To build and run the cli program:
make cli_build
./build/almunecar --helpTo run tests:
make testTo run test of a specific lib:
make test_<LIB_NAME>for example:
make test_primitive-typesSee all available commands:
make helpThese are the main resources that guided our learning and implementations: