pub struct Keychain { /* private fields */ }Expand description
A keychain managing trusted author keys and module signature verification.
Implementations§
Source§impl Keychain
impl Keychain
Sourcepub fn new(require_signatures: bool) -> Self
pub fn new(require_signatures: bool) -> Self
Create a new keychain.
When require_signatures is true, unsigned modules are rejected.
Sourcepub fn add_trusted(&mut self, author: TrustedAuthor)
pub fn add_trusted(&mut self, author: TrustedAuthor)
Add or replace a trusted author in the keychain.
Sourcepub fn remove_trusted(&mut self, public_key: &[u8; 32]) -> Option<TrustedAuthor>
pub fn remove_trusted(&mut self, public_key: &[u8; 32]) -> Option<TrustedAuthor>
Remove a trusted author by public key.
Returns the removed author, or None if the key was not in the keychain.
Sourcepub fn is_trusted(
&self,
public_key: &[u8; 32],
module_name: &str,
manifest_hash: &[u8; 32],
) -> bool
pub fn is_trusted( &self, public_key: &[u8; 32], module_name: &str, manifest_hash: &[u8; 32], ) -> bool
Check whether the given public key is trusted for a module with the specified name and manifest hash.
Sourcepub fn verify_module(
&self,
module_name: &str,
manifest_hash: &[u8; 32],
signature: Option<&ModuleSignatureData>,
) -> VerifyResult
pub fn verify_module( &self, module_name: &str, manifest_hash: &[u8; 32], signature: Option<&ModuleSignatureData>, ) -> VerifyResult
Verify a module’s signature against the keychain trust policy.
Checks:
- If no signature is present, passes only when signatures are not required.
- Cryptographic validity of the Ed25519 signature.
- The signing key is in the keychain and trusted for this module.
Sourcepub fn requires_signatures(&self) -> bool
pub fn requires_signatures(&self) -> bool
Whether this keychain requires all modules to be signed.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Keychain
impl RefUnwindSafe for Keychain
impl Send for Keychain
impl Sync for Keychain
impl Unpin for Keychain
impl UnsafeUnpin for Keychain
impl UnwindSafe for Keychain
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
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>
Converts
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>
Converts
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