pub struct NSSKeyManager { /* private fields */ }
Expand description
Use the NSSKeyManager
to use NSS for key management.
NSS stores keys in key4.db
within the profile and wraps the key with a key derived from the
primary password, if set. It defers to the provided PrimaryPasswordAuthenticator
implementation to handle user authentication. Note that if no primary password is set, the
wrapping key is deterministically derived from an empty string.
Make sure to initialize NSS using ensure_initialized_with_profile_dir
before creating a
NSSKeyManager.
§Examples
use std::sync::Arc;
use async_trait::async_trait;
use logins::{PrimaryPasswordAuthenticator, LoginsApiError, NSSKeyManager};
use logins::encryption::KeyManager;
struct MyPrimaryPasswordAuthenticator {}
#[async_trait]
impl PrimaryPasswordAuthenticator for MyPrimaryPasswordAuthenticator {
async fn get_primary_password(&self) -> Result<String, LoginsApiError> {
// Most likely, you would want to prompt for a password.
// let password = prompt_string("primary password").unwrap_or_default();
Ok("secret".to_string())
}
fn on_authentication_success(&self) {
println!("success");
}
fn on_authentication_failure(&self) {
println!("this did not work, please try again:");
}
}
let key_manager = NSSKeyManager::new(Arc::new(MyPrimaryPasswordAuthenticator {}));
assert_eq!(key_manager.get_key().unwrap().len(), 63);
Implementations§
Source§impl NSSKeyManager
impl NSSKeyManager
Sourcepub fn new(
primary_password_authenticator: Arc<dyn PrimaryPasswordAuthenticator>,
) -> Self
pub fn new( primary_password_authenticator: Arc<dyn PrimaryPasswordAuthenticator>, ) -> Self
Initialize new NSSKeyManager
with a given PrimaryPasswordAuthenticator
.
There must be a previous initializiation of NSS before initializing
NSSKeyManager
, otherwise this panics.
Trait Implementations§
Source§impl KeyManager for NSSKeyManager
impl KeyManager for NSSKeyManager
Source§impl<UT> LiftRef<UT> for NSSKeyManager
impl<UT> LiftRef<UT> for NSSKeyManager
type LiftType = Arc<NSSKeyManager>
Source§impl<UT> LowerError<UT> for NSSKeyManager
impl<UT> LowerError<UT> for NSSKeyManager
Source§fn lower_error(obj: Self) -> RustBuffer
fn lower_error(obj: Self) -> RustBuffer
Lower this value for scaffolding function return Read more
Source§impl<UT> LowerReturn<UT> for NSSKeyManager
impl<UT> LowerReturn<UT> for NSSKeyManager
Source§type ReturnType = <Arc<NSSKeyManager> as LowerReturn<UniFfiTag>>::ReturnType
type ReturnType = <Arc<NSSKeyManager> as LowerReturn<UniFfiTag>>::ReturnType
The type that should be returned by scaffolding functions for this type. Read more
Source§fn lower_return(obj: Self) -> Result<Self::ReturnType, RustCallError>
fn lower_return(obj: Self) -> Result<Self::ReturnType, RustCallError>
Lower the return value from an scaffolding call Read more
§fn handle_failed_lift(
error: LiftArgsError,
) -> Result<Self::ReturnType, RustCallError>
fn handle_failed_lift( error: LiftArgsError, ) -> Result<Self::ReturnType, RustCallError>
Lower the return value for failed argument lifts Read more
Source§impl<UT> TypeId<UT> for NSSKeyManager
impl<UT> TypeId<UT> for NSSKeyManager
const TYPE_ID_META: MetadataBuffer = _
Auto Trait Implementations§
impl Freeze for NSSKeyManager
impl !RefUnwindSafe for NSSKeyManager
impl Send for NSSKeyManager
impl Sync for NSSKeyManager
impl Unpin for NSSKeyManager
impl !UnwindSafe for NSSKeyManager
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
Mutably borrows from an owned value. Read more
§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
Create a new handle for an Arc value Read more
§unsafe fn clone_handle(handle: Handle) -> Handle
unsafe fn clone_handle(handle: Handle) -> Handle
Clone a handle Read more
§unsafe fn consume_handle(handle: Handle) -> Arc<T>
unsafe fn consume_handle(handle: Handle) -> Arc<T>
Consume a handle, getting back the initial
Arc<>
Read more