[package] name = "jouleclaw-hpke" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true authors.workspace = true description = "HPKE (RFC 9180) confidential JCR-1 receipts for JouleClaw. Encrypts a JCR-1 receipt body so only the designated recipient can read it; the verifier (anyone) still proves authenticity offline against a pinned issuer public key. The Sello / Notarized-Agents pattern: confidential payload inside a public envelope. Uses X25519 + HKDF-SHA-256 + ChaCha20-Poly1305 (HPKE base mode, suite ID matches RFC 9180). Pairs with jouleclaw-jcr1: the inner payload is the canonical receipt body, the outer envelope carries an Ed25519 COSE_Sign1 signature." [dependencies] serde = { workspace = true } serde_json = { workspace = true } thiserror = { workspace = true } blake3 = { workspace = true } # The suite this crate implements and nothing else: X25519, HKDF-SHA-256, # ChaCha20-Poly1305, with the operating system's random source. hpke = { version = "0.15", default-features = false, features = ["getrandom", "alloc", "x25519", "hkdfsha2", "chacha"] } # Only for `KeyPair::from_seed`: ChaCha12 seeded with the caller's bytes. rand = { version = "0.10", default-features = false, features = ["std_rng"] } [dev-dependencies] hex = "0.4"