pub struct Member {
pub capabilities: MemberCapabilities,
pub verify_key: Option<String>,
pub kdf_nonce: Option<String>,
pub seed_wrap_passphrase: Option<String>,
pub seed_wrap_recovery: Option<String>,
pub enrollment_verifier: Option<String>,
pub ai_delegations: BTreeMap<String, AiDelegationEntry>,
pub crypt_wraps: BTreeMap<String, String>,
pub attestation: Option<Attestation>,
}Fields§
§capabilities: MemberCapabilities§verify_key: Option<String>§kdf_nonce: Option<String>§seed_wrap_passphrase: Option<String>AES-256-GCM ciphertext of the member’s identity seed, encrypted
under a KEK derived from passphrase + kdf_nonce via Argon2id
(ADR-039). Hex-encoded nonce || ciphertext || tag.
seed_wrap_recovery: Option<String>AES-256-GCM ciphertext of the same seed, encrypted under a KEK
derived from a recovery key via Argon2id (ADR-039). The recovery
key itself is generated at joy auth init, displayed once, and
stored externally by the user. Hex-encoded.
enrollment_verifier: Option<String>§ai_delegations: BTreeMap<String, AiDelegationEntry>§crypt_wraps: BTreeMap<String, String>Per-member Crypt zone-key wraps. Map from zone name to the
hex-encoded nonce || ciphertext || tag produced by
joy_crypt::wrap::wrap over the zone key. The KEK derives from
the member’s identity seed via HKDF-SHA256 with a fixed
“crypt-member-kek” tag.
attestation: Option<Attestation>Implementations§
Source§impl Member
impl Member
Sourcepub fn new(capabilities: MemberCapabilities) -> Self
pub fn new(capabilities: MemberCapabilities) -> Self
Create a member with the given capabilities and no auth fields.
Sourcepub fn has_capability(&self, cap: &Capability) -> bool
pub fn has_capability(&self, cap: &Capability) -> bool
Check whether this member has a specific capability.