qzkp 0.1.0

Quantum Zero-Knowledge Proof protocol with BB84 simulation and Aadhaar identity verification
Documentation
# qzkp

[![Crates.io](https://img.shields.io/crates/v/qzkp.svg)](https://crates.io/crates/qzkp)
[![docs.rs](https://docs.rs/qzkp/badge.svg)](https://docs.rs/qzkp)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

Quantum Zero-Knowledge Proof (QZKP) protocol implementation in Rust, featuring
BB84 quantum key distribution simulation and Aadhaar identity verification.

## Features

- **Quantum simulation** -- single-qubit state-vector simulator with depolarizing
  noise and amplitude damping channels
- **BB84 QKD** -- full BB84 protocol: encode, transmit, measure, sift, estimate
  error rate
- **QZKP protocol** -- SHA-256 KDF, quantum state preparation, basis
  reconciliation, QBER threshold verification
- **Aadhaar integration** -- challenge-response identity verification with masked
  IDs, Merkle root over attributes, and proof generation/verification

## Quick start

Add to your `Cargo.toml`:

```toml
[dependencies]
qzkp = "0.1"
```

### QZKP proof verification

```rust
use qzkp::qzkp::QZKPProtocol;

let protocol = QZKPProtocol::new(
    "shared_secret".into(),
    "shared_secret".into(),
    32,
    0.025,
);
let result = protocol.run_protocol(&mut rand::thread_rng());
assert!(result.verification_status);
assert!(result.qber < 0.11);
```

### Aadhaar authentication

```rust
use std::collections::BTreeMap;
use qzkp::qaadhaar::{QAadhaarProtocol, ServiceProvider};

let mut attrs = BTreeMap::new();
attrs.insert("name".into(), "Alice".into());
attrs.insert("age".into(), "25".into());

let proto = QAadhaarProtocol::new(
    "1234-5678-9012".into(),
    "master_secret".into(),
    attrs,
);

let mut rng = rand::thread_rng();
let challenge = proto.request_authentication("Gov Portal", "id_verify", &mut rng);
let (proof, result) = proto.generate_proof(&challenge, 0.025, &mut rng);

let verifier = ServiceProvider::new("Gov Portal".into());
assert!(verifier.verify_proof(&proof));
```

### BB84 key distribution

```rust
use qzkp::bb84::BB84QKD;

let bb84 = BB84QKD::new(100, 0.02);
let (key_alice, key_bob, error_rate) = bb84.generate_key(&mut rand::thread_rng());
assert!(error_rate < 0.11);
```

## Modules

| Module | Description |
|--------|-------------|
| `quantum` | `QuantumState`, `QuantumCircuit` -- gates, noise, measurement |
| `bb84` | `BB84QKD` -- BB84 quantum key distribution |
| `qzkp` | `QZKPProtocol`, `ProtocolResult` -- full QZKP protocol |
| `qaadhaar` | `QAadhaarProtocol`, `AuthChallenge`, `AuthProof`, `ServiceProvider` |

## Python bindings

A Python package wrapping this crate is available:

```bash
pip install qzkp
```

See [PyPI](https://pypi.org/project/qzkp/) for details.

## License

MIT