pub enum GrantChainError {
Empty,
BadTimestamp {
index: usize,
},
ScopeWidened {
parent: usize,
},
ExpiryWidened {
parent: usize,
},
DepthNotIncremented {
parent: usize,
},
DepthExceedsMax {
parent: usize,
},
AudienceChanged {
parent: usize,
},
ObjectiveChanged {
parent: usize,
},
}Expand description
Why a grant chain failed its attenuation invariants.
Variants§
Empty
Chain was empty.
BadTimestamp
A grant carried an unparseable issued_at/expiry.
ScopeWidened
child.scope is not a subset of parent.scope.
ExpiryWidened
child.expiry is later than parent.expiry.
DepthNotIncremented
child.delegation_depth is not exactly parent.delegation_depth + 1.
DepthExceedsMax
child.delegation_depth exceeds parent.max_delegation.
AudienceChanged
child.audience differs from parent.audience.
ObjectiveChanged
The declared objective changed, or was dropped, across a delegation.
objective_hash commits to what task a grant was issued to serve.
Scope says which actions are permitted; the objective says what they
were permitted for. A delegation that keeps the scope and swaps the
objective is authority minted for one task being spent on another –
every existing check passes, because none of them look at why.
Dropping it is the same violation. A child with no objective is unconstrained by one, so removing it widens authority exactly as extending an expiry does.
Trait Implementations§
Source§impl Clone for GrantChainError
impl Clone for GrantChainError
Source§fn clone(&self) -> GrantChainError
fn clone(&self) -> GrantChainError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GrantChainError
impl Debug for GrantChainError
Source§impl Display for GrantChainError
impl Display for GrantChainError
impl Eq for GrantChainError
Source§impl Error for GrantChainError
impl Error for GrantChainError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl PartialEq for GrantChainError
impl PartialEq for GrantChainError
impl StructuralPartialEq for GrantChainError
Auto Trait Implementations§
impl Freeze for GrantChainError
impl RefUnwindSafe for GrantChainError
impl Send for GrantChainError
impl Sync for GrantChainError
impl Unpin for GrantChainError
impl UnsafeUnpin for GrantChainError
impl UnwindSafe for GrantChainError
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.