pub enum Derivation {
Root,
Attenuation {
parent: GrantId,
},
Elevation {
parent: GrantId,
attestation: AttestationId,
},
}Expand description
How a Grant came to hold its authority (the authorization proof — L6).
Variants§
Root
A root grant — the session baseline, derived from nothing.
Attenuation
Attenuated from parent: the algebra requires child ⊑ parent
(check_derivation enforces it). An attenuation can NEVER widen.
Elevation
Elevated from parent: widens by definition, so the algebra cannot bless
it — it is legal only through a valid operator attestation
(signature). Signatures are deferred (contract §8); until a verifier
lands, check_derivation fail-closes every elevation.
Because this grant’s CID depends on attestation, the attestation body
must not name this grant’s id in turn — see the acyclicity invariant on
AttestationId.
Trait Implementations§
Source§impl Clone for Derivation
impl Clone for Derivation
Source§impl Debug for Derivation
impl Debug for Derivation
Source§impl<'de> Deserialize<'de> for Derivation
impl<'de> Deserialize<'de> for Derivation
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for Derivation
Source§impl PartialEq for Derivation
impl PartialEq for Derivation
Source§impl Serialize for Derivation
impl Serialize for Derivation
impl StructuralPartialEq for Derivation
Auto Trait Implementations§
impl Freeze for Derivation
impl RefUnwindSafe for Derivation
impl Send for Derivation
impl Sync for Derivation
impl Unpin for Derivation
impl UnsafeUnpin for Derivation
impl UnwindSafe for Derivation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more