ZKAC/README.md
2026-04-19 23:19:24 +02:00

45 lines
1.7 KiB
Markdown

# ZKAC
**Zero-Knowledge Access Control** — BBS+ anonymous credentials on BLS12-381 with an encrypted session layer (X25519, ChaCha20-Poly1305, replay protection).
## Documentation
- **[Changelog](CHANGELOG.md)** — releases and breaking API notes
- **[Python API](docs/PYTHON_API.md)** — types and usage for `import zkac`
- **[Security model](docs/SECURITY.md)** — threat model, assumptions, operational guidance
- **[Fuzzing](docs/FUZZING.md)** — `cargo-fuzz` harnesses
## Rust
```toml
[dependencies]
zkac = { path = "..." }
```
Public API highlights: `zkac::Node`, `zkac::Credential`, `zkac::RoleRegistry`, `zkac::IssuerKeyPair`, `zkac::MAX_BBS_AUTH_PROOF_BYTES`.
## Python
Requires a Rust toolchain. [maturin](https://www.maturin.rs/) builds the `zkac` extension; it is not on your `PATH` until you install it.
```bash
uv venv && source .venv/bin/activate
# Pick one way to get the `maturin` command:
uv sync --extra dev # installs maturin into this venv
# or: uv pip install maturin
# or: uvx maturin develop # no install; runs maturin once from PyPI
maturin develop # features come from [tool.maturin] in pyproject.toml
# Console script ``zkac-node`` lives in ``cli/``; install it into the venv:
uv sync --extra cli # or ``--extra demo`` (Flask demos + zkac-node)
python -c "import zkac; print(zkac.role_id('admin').hex())"
```
Run tests: `cargo test` and `pytest tests/test_zkac.py`.
Local web UI over the CLI: `demo/cli_web_server.py` (see `demo/README.md`). Optional in-browser WASM for the legacy Flask demo: `wasm/README.md` and `./demo/build_wasm.sh` (needs **rustup** + `wasm32-unknown-unknown`).
## License
See repository license file (if present).