pub struct KeychainPassphraseProvider { /* private fields */ }Expand description
A PassphraseProvider that wraps an inner provider with OS keychain caching.
On get_passphrase(), checks the OS keychain first via PassphraseCache::load.
If a cached value exists and hasn’t expired per the configured policy/TTL,
returns it immediately. Otherwise delegates to the inner provider, then
stores the result in the OS keychain for subsequent invocations.
Args:
inner: The underlying provider to prompt the user when cache misses.cache: Platform keychain cache (macOS Security Framework, Linux Secret Service, etc.).alias: Key alias used as the cache key in the OS keychain.policy: The configuredPassphraseCachePolicy.ttl_secs: Optional TTL in seconds (forDurationpolicy).
Usage:
ⓘ
use auths_core::signing::{KeychainPassphraseProvider, PassphraseProvider};
use auths_core::config::PassphraseCachePolicy;
use auths_core::storage::passphrase_cache::get_passphrase_cache;
let inner = Arc::new(some_provider);
let cache = get_passphrase_cache(true);
let provider = KeychainPassphraseProvider::new(
inner, cache, "main".to_string(),
PassphraseCachePolicy::Duration, Some(3600),
);
let passphrase = provider.get_passphrase("Enter passphrase:")?;Implementations§
Source§impl KeychainPassphraseProvider
impl KeychainPassphraseProvider
Sourcepub fn new(
inner: Arc<dyn PassphraseProvider + Send + Sync>,
cache: Box<dyn PassphraseCache>,
alias: String,
policy: PassphraseCachePolicy,
ttl_secs: Option<i64>,
) -> Self
pub fn new( inner: Arc<dyn PassphraseProvider + Send + Sync>, cache: Box<dyn PassphraseCache>, alias: String, policy: PassphraseCachePolicy, ttl_secs: Option<i64>, ) -> Self
Creates a new KeychainPassphraseProvider.
Args:
inner: Fallback provider for cache misses.cache: OS keychain cache implementation.alias: Key alias used as the keychain entry identifier.policy: Caching policy controlling storage/expiry behavior.ttl_secs: TTL in seconds whenpolicyisDuration.
Trait Implementations§
Source§impl PassphraseProvider for KeychainPassphraseProvider
impl PassphraseProvider for KeychainPassphraseProvider
Source§fn get_passphrase(
&self,
prompt_message: &str,
) -> Result<Zeroizing<String>, AgentError>
fn get_passphrase( &self, prompt_message: &str, ) -> Result<Zeroizing<String>, AgentError>
Securely obtains a passphrase, potentially by prompting the user. Read more
Source§fn on_incorrect_passphrase(&self, prompt_message: &str)
fn on_incorrect_passphrase(&self, prompt_message: &str)
Notifies the provider that the passphrase returned for
prompt_message was wrong. Read moreAuto Trait Implementations§
impl Freeze for KeychainPassphraseProvider
impl !RefUnwindSafe for KeychainPassphraseProvider
impl Send for KeychainPassphraseProvider
impl Sync for KeychainPassphraseProvider
impl Unpin for KeychainPassphraseProvider
impl UnsafeUnpin for KeychainPassphraseProvider
impl !UnwindSafe for KeychainPassphraseProvider
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