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 | UINT & U256 | ✅ |
math | Utils for polynomials and modular math | 🚧 |
hashes | SHA-256 | ✅ |
rsa | RSA implementation | 🚧 |
elliptic-curves | ECDSA & BLS12-381 | 📝 |
snarks | groth & plonk | 📝 |
pcs | 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 install
To uninstall:
make uninstall
To install the CLI program in your system run:
make cli_install
almunecar --help
To uninstall:
make cli_uninstall
To start developing, you'll need to compile the libs:
make build
Whenever 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 --help
To run tests:
make test
To run test of a specific lib:
make test_<LIB_NAME>
for example:
make test_primitive-types
See all available commands:
make help
These are the main resources that guided our learning and implementations: