Skip to main content

ProtectedStore

Struct ProtectedStore 

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

Secure key-value storage for user secrets, backed by the platform’s secure keyring when available and falling back to an on-disk insecure keyring when permitted by config.

Implementations§

Source§

impl ProtectedStore

Source

pub fn delete_all(&self)

Remove every known Veilid-managed protected store key, logging any failures.

Idempotent: keys already absent are skipped. Blocks on the keyring backend (OS keyring or disk) once per key.

Source

pub fn save_user_secret_string<K: AsRef<str> + Debug, V: AsRef<str> + Debug>( &self, key: K, value: V, ) -> VeilidAPIResult<bool>

Store a string secret under a key. Returns true if a value already existed for that key.

Overwrites any prior value, so re-saving the same key/value is idempotent. Holds the inner lock and blocks on the keyring backend (OS keyring or disk).

Errors with VeilidAPIError::NotInitialized if the store has no open keyring, or VeilidAPIError::Generic if the keyring backend rejects the write.

Source

pub fn load_user_secret_string<K: AsRef<str> + Debug>( &self, key: K, ) -> VeilidAPIResult<Option<String>>

Load a string secret by key, or None if no value is stored for it.

Holds the inner lock and blocks on the keyring backend (OS keyring or disk).

A missing key returns Ok(None). Errors with VeilidAPIError::NotInitialized if the store has no open keyring, or VeilidAPIError::Generic if the keyring backend fails the read.

Source

pub fn save_user_secret_json<K, T>( &self, key: K, value: &T, ) -> VeilidAPIResult<bool>
where K: AsRef<str> + Debug, T: Serialize,

Serialize a value to JSON and store it as a secret. Returns true if a value already existed for that key.

Overwrites any prior value. Blocks on the keyring backend (OS keyring or disk).

Errors with VeilidAPIError::Generic if value fails to serialize, if the keyring backend rejects the write, or VeilidAPIError::NotInitialized if the store has no open keyring.

Source

pub fn load_user_secret_json<K, T>(&self, key: K) -> VeilidAPIResult<Option<T>>
where K: AsRef<str> + Debug, T: for<'de> Deserialize<'de>,

Load a secret by key and deserialize it from JSON, or None if no value is stored for it.

Blocks on the keyring backend (OS keyring or disk).

A missing key returns Ok(None). Errors with VeilidAPIError::Generic if the stored bytes fail to deserialize or are not a valid buffer, or VeilidAPIError::NotInitialized if the store has no open keyring.

Source

pub fn save_user_secret<K: AsRef<str> + Debug>( &self, key: K, value: &[u8], ) -> VeilidAPIResult<bool>

Store a byte buffer as a secret. Returns true if a value already existed for that key.

Overwrites any prior value. Blocks on the keyring backend (OS keyring or disk).

Errors with VeilidAPIError::NotInitialized if the store has no open keyring, or VeilidAPIError::Generic if the keyring backend rejects the write.

Source

pub fn load_user_secret<K: AsRef<str> + Debug>( &self, key: K, ) -> VeilidAPIResult<Option<Vec<u8>>>

Load a byte buffer secret by key, or None if no value is stored for it.

Blocks on the keyring backend (OS keyring or disk).

A missing key returns Ok(None). Errors with VeilidAPIError::Generic if the stored value lacks the buffer marker or fails base64 decode, or VeilidAPIError::NotInitialized if the store has no open keyring.

Source

pub fn remove_user_secret<K: AsRef<str> + Debug>( &self, key: K, ) -> VeilidAPIResult<bool>

Remove a secret by key. Returns true if a value was present and deleted.

No-op returning false when the key is absent, so repeated removes are idempotent. Holds the inner lock and blocks on the keyring backend (OS keyring or disk).

An absent key returns Ok(false). Errors with VeilidAPIError::NotInitialized if the store has no open keyring, or VeilidAPIError::Generic if the keyring backend fails the delete.

Trait Implementations§

Source§

impl Debug for ProtectedStore

Source§

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

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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