dcrypt 4.0.0

Rust APIs for classical, post-quantum, and hybrid cryptographic primitives
Documentation
# Reproduce the v4 Assurance Profile

Run the complete laboratory from the repository root:

```sh
python3 -B tools/run-v4-lab-simulation.py \
  --output target/release-evidence/v4-lab
```

The command selects a qualified CPU from the process affinity set unless
`DCRYPT_TIMING_CPU` names an eligible CPU explicitly. It uses locked offline
dependencies, pinned toolchains where declared, fixed simulation seeds, and
predeclared statistical thresholds.

On success, open:

```text
target/release-evidence/v4-lab/assurance-report/assurance-report.html
```

The corresponding machine-readable result is:

```text
target/release-evidence/v4-lab/assurance-report/assurance-profile.json
```

Confirm that the presentation reproduces exactly from the evidence:

```sh
python3 -B tools/generate-v4-assurance-report.py \
  --check \
  --lab-output target/release-evidence/v4-lab \
  --output target/release-evidence/v4-lab/assurance-report
```

Verify the emitted evidence manifest:

```sh
openssl pkeyutl -verify -pubin \
  -inkey target/release-evidence/v4-lab/simulation-signing-public.pem \
  -rawin \
  -in target/release-evidence/v4-lab/evidence-manifest.json \
  -sigfile target/release-evidence/v4-lab/evidence-manifest.sig
```

The private signing key is temporary and is destroyed after the laboratory
verifies the signature. See the [metric definitions](METRICS.md) and
[laboratory model](OPEN-SECURITY-LAB.md) before interpreting the results.