pub struct RevocationView { /* private fields */ }Expand description
Which keys of which projects are certified or revoked, merged from the
user chain, the identity journal and the certificate files. Built only
by Self::build; there is no way to add an unverified certificate.
Implementations§
Source§impl RevocationView
impl RevocationView
Sourcepub fn build(
user_pubkey: &[u8; 32],
events: &[ChainEvent],
journal: &[JournalRecord],
cert_files: &[ProjectCert],
) -> Self
pub fn build( user_pubkey: &[u8; 32], events: &[ChainEvent], journal: &[JournalRecord], cert_files: &[ProjectCert], ) -> Self
Merge events (only SOURCE events count), journal records and
cert_files into one view. Every certificate must verify against
user_pubkey or it is dropped (see Self::rejected).
Sourcepub fn build_with(
trust: &UserKeyHistory,
events: &[ChainEvent],
journal: &[JournalRecord],
cert_files: &[ProjectCert],
) -> Self
pub fn build_with( trust: &UserKeyHistory, events: &[ChainEvent], journal: &[JournalRecord], cert_files: &[ProjectCert], ) -> Self
Self::build under a user-key rotation history: a certificate sealed
by a retired user key counts when it is dated at or before that key’s
rotation point (ADR-103 A13); one dated after it is dropped.
Sourcepub fn all_project_ids(&self) -> Vec<String>
pub fn all_project_ids(&self) -> Vec<String>
Every project id the view knows (certified, rekeyed or revoked).
Sourcepub fn key_history(&self, project_id: &str) -> Vec<&ProjectCert>
pub fn key_history(&self, project_id: &str) -> Vec<&ProjectCert>
Every certificate ever issued for project_id whose key was not
revoked for compromise: the current key and keys replaced by a
rekey. A key removed by project.revoke is excluded. Statements the
project signed with these keys are history, not forgeries.
Sourcepub fn is_compromised(&self, project_id: &str, key_id: &str) -> bool
pub fn is_compromised(&self, project_id: &str, key_id: &str) -> bool
Was key_id removed by project.revoke (not replaced by a rekey)?
Sourcepub fn all_certs(&self, project_id: &str) -> Vec<&ProjectCert>
pub fn all_certs(&self, project_id: &str) -> Vec<&ProjectCert>
Every certificate ever issued for project_id, compromised keys
included. For re-verifying records the daemon itself accepted while
the key was valid.
Sourcepub fn export_records(&self) -> Vec<JournalRecord>
pub fn export_records(&self) -> Vec<JournalRecord>
The state as journal records, for rebuilding a lost journal: every verified certificate, then every revocation this view knows. A revocation that only the lost journal remembered cannot be recovered.
Sourcepub fn rejected(&self) -> usize
pub fn rejected(&self) -> usize
Certificates dropped because they did not verify against the user key.
Sourcepub fn is_revoked(&self, project_id: &str, key_id: &str) -> bool
pub fn is_revoked(&self, project_id: &str, key_id: &str) -> bool
Is this key revoked for this project?
Sourcepub fn was_revoked(&self, project_id: &str) -> bool
pub fn was_revoked(&self, project_id: &str) -> bool
True when project.revoke revoked a key of this project (a key only
replaced by project.rekey does not count).
Sourcepub fn current_cert(&self, project_id: &str) -> Option<&ProjectCert>
pub fn current_cert(&self, project_id: &str) -> Option<&ProjectCert>
The certificate in force: the highest-serial one whose key is not revoked.
Sourcepub fn bound_key_id(&self, project_id: &str) -> Option<&str>
pub fn bound_key_id(&self, project_id: &str) -> Option<&str>
The key_id currently certified for project_id.
Sourcepub fn last_serial(&self, project_id: &str) -> u64
pub fn last_serial(&self, project_id: &str) -> u64
Highest serial ever issued for project_id (0 when none).
Sourcepub fn key_owner(&self, key_id: &str) -> Option<&str>
pub fn key_owner(&self, key_id: &str) -> Option<&str>
The project that first claimed key_id, certified or revoked.
Sourcepub fn check_cert(&self, cert: &ProjectCert) -> Result<(), IdentityError>
pub fn check_cert(&self, cert: &ProjectCert) -> Result<(), IdentityError>
Refuse a certificate whose key was revoked or replaced.
Sourcepub fn plan_registration(
&self,
project_id: &str,
project_pubkey: &[u8; 32],
) -> Result<Registration, IdentityError>
pub fn plan_registration( &self, project_id: &str, project_pubkey: &[u8; 32], ) -> Result<Registration, IdentityError>
TOFU decision for project.register of project_pubkey.
Sourcepub fn plan_rekey(
&self,
project_id: &str,
new_pubkey: &[u8; 32],
) -> Result<(String, u64), IdentityError>
pub fn plan_rekey( &self, project_id: &str, new_pubkey: &[u8; 32], ) -> Result<(String, u64), IdentityError>
Rekey decision: the project must have a certified key, and the new
one must differ from it, never have been revoked and not belong to
another project. Returns the old key_id and the next serial.
Trait Implementations§
Source§impl Clone for RevocationView
impl Clone for RevocationView
Auto Trait Implementations§
impl Freeze for RevocationView
impl RefUnwindSafe for RevocationView
impl Send for RevocationView
impl Sync for RevocationView
impl Unpin for RevocationView
impl UnsafeUnpin for RevocationView
impl UnwindSafe for RevocationView
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<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more