Skip to main content

Argon2Keyring

Struct Argon2Keyring 

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

Headless fallback (spec §10.2): derive the master key from a passphrase with Argon2id. Deterministic given the same passphrase and salt, so the same vault unlocks across runs without an OS keyring. There is nothing to storeset_master_key is unsupported.

Implementations§

Source§

impl Argon2Keyring

Source

pub fn new( passphrase: impl Into<Vec<u8>>, salt: impl Into<Vec<u8>>, ) -> Result<Self, CoreError>

Build a fallback keyring from a passphrase and a salt. The salt is not secret but must be stable for a given vault (store it alongside the vault) and at least MIN_SALT_LEN bytes.

Trait Implementations§

Source§

impl Keyring for Argon2Keyring

Source§

fn get_master_key(&self) -> Result<MasterKey, CoreError>

Fetch the master key, materializing it (e.g. reading the OS keyring or deriving from a passphrase).
Source§

fn set_master_key(&self, _key: &MasterKey) -> Result<(), CoreError>

Persist the master key (e.g. write it to the OS keyring). Backends that derive the key (see Argon2Keyring) have nothing to store and return an error.

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, 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> 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