v42.3.0
v42.3.0 — Share-Link Compact Proof Bundle (KAS + ZK) + Deflate-Bomb Guardrails
What changed
-
Restored social-shareable VerifyPage links while still carrying the full public proof bundle (KAS WebAuthn attestation + Groth16/Poseidon ZK proof + public inputs + hashes) fully self-contained in the URL.
-
Introduced compact share payload
?p=using a versioned codec:?p=c1:<base64url(deflateRaw(JCS(JSON)))>
-
Kept full backward compatibility:
- Legacy
?r=links still decode and verify exactly as before.
- Legacy
Why it matters
- Short links are postable again on Twitter/X and other platforms without breaking the “all-proof-in-the-link” offline verification experience.
- Offline-first remains intact: opening a shared link renders and verifies directly from embedded public proof material—no server lookup required.
Security / Performance hardening
-
Added strict decode limits to prevent DoS / deflate-bomb expansion:
- Caps on encoded param length (
MAX_P_CHARS) - Caps on compressed bytes (
MAX_COMPRESSED_BYTES) - Caps on inflated output bytes (
MAX_INFLATED_BYTES) - Fail-fast decoding with safe abort during inflation
- Caps on encoded param length (
-
Legacy
?r=path also bounded to prevent accidental oversized payloads.
Implementation highlights
-
Added a dedicated codec module (
shareBundleCodec) with:encodeSharePayload()/decodeSharePayload()for?p=encodeLegacyRParam()/decodeLegacyRParam()for?r=- Canonical JSON via JCS before compression to maximize determinism + compression ratio.
Result
- VerifyPage share URLs are compact, deterministic, offline-verifiable, and safe against decompression abuse—without changing any KAS or ZK verification semantics.
What's Changed
- v42.3.0 by @Phinetwork in #120
Full Changelog: v42.2.0...v42.3.0