Some checks failed
Test / test (push) Has been cancelled
M-Hard 9: Documentation + examples - README.md, SECURITY.md, THREAT-MODEL.md - 5 runnable examples: basic conversation, prekey server, WebSocket tunnel, identity verification, Dokploy deployment M-Hard 10: CI + publishing + benchmarks - GitHub Actions: test workflow with PostgreSQL service container - GitHub Actions: publish workflow for npm releases on git tags - Benchmark suite (bench/run.ts) with markdown output - LICENSE (MIT), CHANGELOG.md, CONTRIBUTING.md M-Hard 11: Migration guide - MIGRATION.md with three-phase rollout strategy - Concrete examples for replacing static AES tunnels - Concrete examples for per-device push notification migration - Sections for Orchestrator and Nova migrations Benchmark highlights: - AES-256-GCM: ~100K ops/sec - Encrypt+decrypt roundtrip: ~17K ops/sec - X3DH handshake: ~165 ops/sec (hardware acceleration limited) - Compute fingerprint: ~76K ops/sec All 11 M-Hard milestones complete. 193 tests passing, 0 failures. Shade is production-ready. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
18 lines
541 B
Markdown
18 lines
541 B
Markdown
# Example 04: Identity Verification with Safety Numbers
|
|
|
|
Shows how two parties can compare safety numbers (60-digit fingerprints) out-of-band to detect a man-in-the-middle attack at session establishment.
|
|
|
|
## Run
|
|
|
|
```bash
|
|
bun run main.ts
|
|
```
|
|
|
|
## What it shows
|
|
|
|
- Generating identity fingerprints
|
|
- The "safety number" format (12 groups of 5 digits)
|
|
- Comparing fingerprints to verify a peer's identity
|
|
- What it looks like when a MITM is attempted (different fingerprint)
|
|
- `acceptIdentityChange()` for handling legitimate identity rotation
|