AccessPoint

Struct AccessPoint 

Source
pub struct AccessPoint<E>
where E: Error + Debug + From<Error> + From<Error> + From<Error> + Send + Sync + 'static,
{ /* private fields */ }
Expand description

Access to an in-memory vault optionally mirroring changes to storage.

It stores the derived private key in memory so should only be used on client implementations.

Calling lock() will zeroize the private key in memory and prevent any access to the vault until unlock() is called successfully.

To allow for meta data to be displayed before secret decryption certain parts of a vault are encrypted separately which means that technically it would be possible to use different private keys for different secrets and for the meta data however this would be a very poor user experience and would lead to confusion so the access point is also responsible for ensuring the same private key is used to encrypt the different chunks.

Implementations§

Source§

impl<E> AccessPoint<E>
where E: Error + Debug + From<Error> + From<Error> + From<Error> + Send + Sync + 'static,

Source

pub fn new(vault: Vault) -> Self

Create a new access point.

Source

pub fn new_mirror( vault: Vault, mirror: Box<dyn EncryptedEntry<Error = E> + Send + Sync + 'static>, ) -> Self

Create a new access point that writes in-memory changes to a mirror.

Trait Implementations§

Source§

impl<E> From<AccessPoint<E>> for Vault
where E: Error + Debug + From<Error> + From<Error> + From<Error> + Send + Sync + 'static,

Source§

fn from(value: AccessPoint<E>) -> Self

Converts to this type from the input type.
Source§

impl<E> From<Vault> for AccessPoint<E>
where E: Error + Debug + From<Error> + From<Error> + From<Error> + Send + Sync + 'static,

Source§

fn from(value: Vault) -> Self

Converts to this type from the input type.
Source§

impl<E> SecretAccess for AccessPoint<E>
where E: Error + Debug + From<Error> + From<Error> + From<Error> + Send + Sync + 'static,

Source§

type Error = E

Error type.
Source§

fn is_mirror(&self) -> bool

Indicates whether the access point is mirroring changes to storage.
Source§

fn vault(&self) -> &Vault

In-memory vault.
Source§

fn replace_vault<'life0, 'async_trait>( &'life0 mut self, vault: Vault, mirror_changes: bool, ) -> Pin<Box<dyn Future<Output = Result<(), E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Replace this vault with a new updated vault. Read more
Source§

fn reload_vault<'life0, 'async_trait, P>( &'life0 mut self, path: P, ) -> Pin<Box<dyn Future<Output = Result<(), E>> + Send + 'async_trait>>
where P: 'async_trait + AsRef<Path> + Send, Self: 'async_trait, 'life0: 'async_trait,

Reload the vault from disc. Read more
Source§

fn summary(&self) -> &Summary

Vault summary information.
Source§

fn id(&self) -> &VaultId

Vault identifier.
Source§

fn name(&self) -> &str

Public name for the vault.
Source§

fn set_vault_name<'life0, 'async_trait>( &'life0 mut self, name: String, ) -> Pin<Box<dyn Future<Output = Result<WriteEvent, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Set the public name for the vault.
Source§

fn set_vault_flags<'life0, 'async_trait>( &'life0 mut self, flags: VaultFlags, ) -> Pin<Box<dyn Future<Output = Result<WriteEvent, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Set the vault flags.
Source§

fn vault_meta<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<VaultMeta, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Attempt to decrypt the meta data for the vault using the key assigned to this access point.
Source§

fn set_vault_meta<'life0, 'life1, 'async_trait>( &'life0 mut self, meta_data: &'life1 VaultMeta, ) -> Pin<Box<dyn Future<Output = Result<WriteEvent, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Set the meta data for the vault.
Source§

fn create_secret<'life0, 'life1, 'async_trait>( &'life0 mut self, secret_data: &'life1 SecretRow, ) -> Pin<Box<dyn Future<Output = Result<WriteEvent, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Add a secret to the vault.
Source§

fn raw_secret<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 SecretId, ) -> Pin<Box<dyn Future<Output = Result<Option<(VaultCommit, ReadEvent)>, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Read the encrypted contents of a secret.
Source§

fn read_secret<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 SecretId, ) -> Pin<Box<dyn Future<Output = Result<Option<(SecretMeta, Secret, ReadEvent)>, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get a secret and it’s meta data.
Source§

fn update_secret<'life0, 'life1, 'async_trait>( &'life0 mut self, id: &'life1 SecretId, secret_meta: SecretMeta, secret: Secret, ) -> Pin<Box<dyn Future<Output = Result<Option<WriteEvent>, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Update a secret.
Source§

fn delete_secret<'life0, 'life1, 'async_trait>( &'life0 mut self, id: &'life1 SecretId, ) -> Pin<Box<dyn Future<Output = Result<Option<WriteEvent>, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Delete a secret and it’s meta data.
Source§

fn verify<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 AccessKey, ) -> Pin<Box<dyn Future<Output = Result<(), E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Verify an encryption password.
Source§

fn unlock<'life0, 'life1, 'async_trait>( &'life0 mut self, key: &'life1 AccessKey, ) -> Pin<Box<dyn Future<Output = Result<VaultMeta, E>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Unlock the vault using the access key. Read more
Source§

fn lock(&mut self)

Lock the vault by deleting the stored private key associated with the vault and securely zeroing the underlying memory.

Auto Trait Implementations§

§

impl<E> Freeze for AccessPoint<E>

§

impl<E> !RefUnwindSafe for AccessPoint<E>

§

impl<E> Send for AccessPoint<E>

§

impl<E> Sync for AccessPoint<E>

§

impl<E> Unpin for AccessPoint<E>

§

impl<E> !UnwindSafe for AccessPoint<E>

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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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