pub struct WrappedOrgKey {
pub car_wrap: String,
pub org: String,
pub epoch: u64,
pub recipient: String,
pub publisher: String,
pub ephemeral_pub: String,
pub recipient_pub: String,
pub envelope: Value,
pub signature: String,
}Expand description
A shared org master key wrapped for one member — AUTHENTICATED ECIES over
X25519. Sealed to the member’s X25519 key (only their secret unwraps it) AND
signed by the publisher’s Ed25519 identity (only a caller-trusted publisher is
accepted). Every member unwraps the SAME k_org and derives the org-audience
AEAD key from it, so org-scoped ops become mutually readable.
Fields§
§car_wrap: StringAlgorithm tag (ALG_ORG_KEY_WRAP, “org-key-wrap/v2”).
org: String§epoch: u64The key-rotation epoch this k_org belongs to (member removal bumps it).
recipient: StringThe member this blob is addressed to. ADVISORY ONLY — not
integrity-protected for ROUTING: unwrap binds the CALLER’s own my_user_id
into both the KDF and the signature transcript, not this field. Do not
route or authorize on it.
publisher: StringThe publisher (signer) user id. ADVISORY — a routing/label hint. unwrap authorizes on the injected TRUSTED verifying-key set, NEVER on this field.
ephemeral_pub: StringEphemeral X25519 public key (hex) — re-fed into the KDF on unwrap.
recipient_pub: StringRecipient’s X25519 public key (hex) — bound into the KDF.
envelope: ValueAEAD envelope over { "k_org": <hex> }.
signature: StringEd25519 signature (hex, 64 bytes) by the publisher over
[wrap_sign_transcript]. Verified with verify_strict against a trusted
key on unwrap, BEFORE any decrypt.