45 lines
1.7 KiB
Markdown
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 Flask demo: `wasm/README.md` and `./demo/build_wasm.sh` (needs **rustup** + `wasm32-unknown-unknown`).
|
|
|
|
## License
|
|
|
|
See repository license file (if present).
|