Skip to main content

Keyring

Struct Keyring 

Source
pub struct Keyring { /* private fields */ }
Expand description

Runtime key rotation for one node, from Memberlist::keyring.

Every call acts on this node only. To rotate a cluster, run each step on every node and wait for it to finish everywhere before starting the next:

  1. install the new key, so every node can read it;
  2. use_key it, so every node sends with it;
  3. remove the old key.

A node that falls a step behind looks dead to its peers until it catches up, and they count what they dropped as decrypt_failures in Stats. A node that runs without encryption refuses every call with Error::NotEncrypted. Key ids are safe to log; key bytes never are.

A handle is cheap to clone and keeps working only while the node runs: calls on a closed node fail with Error::Closed.

Implementations§

Source§

impl Keyring

Source

pub async fn install(&self, key: Key) -> Result<(), Error>

Adds key to the keys this node can decrypt with. Does nothing if it is installed.

Source

pub async fn use_key(&self, key: Key) -> Result<(), Error>

Makes the installed key the one this node encrypts with. Every installed key still decrypts. Fails with Error::KeyNotInstalled for a key that was never installed.

Named use_key because use is a Rust keyword; Python spells it use.

Source

pub async fn remove(&self, key: Key) -> Result<(), Error>

Drops key. Fails with Error::KeyInUse for the key this node encrypts with and Error::LastKey for the only one; a key that is not installed is already gone.

Source

pub fn key_ids(&self) -> Vec<KeyId>

The ids of the installed keys, the one this node encrypts with first. Empty when the node runs without encryption. Never waits on the actor.

Trait Implementations§

Source§

impl Clone for Keyring

Source§

fn clone(&self) -> Keyring

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Keyring

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more