Struct tor_keymgr::KeyMgr
source · pub struct KeyMgr { /* private fields */ }keymgr only.Expand description
Implementations§
source§impl KeyMgr
impl KeyMgr
sourcepub fn get<K: ToEncodableKey>(
&self,
key_spec: &dyn KeySpecifier
) -> Result<Option<K>>
pub fn get<K: ToEncodableKey>( &self, key_spec: &dyn KeySpecifier ) -> Result<Option<K>>
Read a key from one of the key stores, and try to deserialize it as K::Key.
The key returned is retrieved from the first key store that contains an entry for the given specifier.
Returns Ok(None) if none of the key stores have the requested key.
sourcepub fn generate<K: ToEncodableKey>(
&self,
key_spec: &dyn KeySpecifier,
selector: KeystoreSelector<'_>,
rng: &mut dyn KeygenRng,
overwrite: bool
) -> Result<Option<()>>
pub fn generate<K: ToEncodableKey>( &self, key_spec: &dyn KeySpecifier, selector: KeystoreSelector<'_>, rng: &mut dyn KeygenRng, overwrite: bool ) -> Result<Option<()>>
Generate a new key of type K, and insert it into the key store specified by selector.
If the key already exists in the specified key store, the overwrite flag is used to
decide whether to overwrite it with a newly generated key.
Returns Ok(Some(()) if a new key was created, and Ok(None) otherwise.
IMPORTANT: using this function concurrently with any other KeyMgr operation that
mutates the key store state is not recommended, as it can yield surprising results! The
outcome of KeyMgr::generate depends on whether the selected key store
contains the specified key, and thus suffers from a a TOCTOU race.
sourcepub fn insert<K: ToEncodableKey>(
&self,
key: K,
key_spec: &dyn KeySpecifier,
selector: KeystoreSelector<'_>
) -> Result<()>
pub fn insert<K: ToEncodableKey>( &self, key: K, key_spec: &dyn KeySpecifier, selector: KeystoreSelector<'_> ) -> Result<()>
Insert key into the Keystore specified by selector.
If the key already exists, it is overwritten.
sourcepub fn remove<K: ToEncodableKey>(
&self,
key_spec: &dyn KeySpecifier,
selector: KeystoreSelector<'_>
) -> Result<Option<()>>
pub fn remove<K: ToEncodableKey>( &self, key_spec: &dyn KeySpecifier, selector: KeystoreSelector<'_> ) -> Result<Option<()>>
Remove the key identified by key_spec from the Keystore specified by selector.
Returns Ok(None) if the key does not exist in the requested keystore.
Returns Ok(Some(()) if the key was successfully removed.
Returns Err if an error occurred while trying to remove the key.
Auto Trait Implementations§
impl !RefUnwindSafe for KeyMgr
impl Send for KeyMgr
impl Sync for KeyMgr
impl Unpin for KeyMgr
impl !UnwindSafe for KeyMgr
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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
source§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.source§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.