pub struct PinnedIdentityStore { /* private fields */ }Expand description
File-backed store of pinned identities.
Storage format: a single JSON array file (~/.auths/known_identities.json).
All mutations are atomic (write to temp + rename).
Concurrent access is guarded by an advisory lock file.
§Example
use auths_core::trust::PinnedIdentityStore;
let store = PinnedIdentityStore::new(PinnedIdentityStore::default_path());
// Look up a pinned identity
if let Some(pin) = store.lookup("did:keri:ETest...")? {
println!("Pinned key: {}", pin.public_key_hex);
}Implementations§
Source§impl PinnedIdentityStore
impl PinnedIdentityStore
Sourcepub fn new(path: PathBuf) -> PinnedIdentityStore
pub fn new(path: PathBuf) -> PinnedIdentityStore
Create a store at the given path.
Sourcepub fn default_path() -> PathBuf
pub fn default_path() -> PathBuf
Default path: ~/.auths/known_identities.json
Sourcepub fn lookup(&self, did: &str) -> Result<Option<PinnedIdentity>, TrustError>
pub fn lookup(&self, did: &str) -> Result<Option<PinnedIdentity>, TrustError>
Look up a pinned identity by DID.
Backed by a persistent sidecar index ([PinIndex]) so a single-DID
lookup is O(log n) in the registry size instead of re-parsing the whole
store (O(n)). The index is a pure accelerator: it only ever yields a
candidate byte span, which is confirmed by reading and parsing the entry
from the canonical store before it is returned. If the index path errors
for any reason, the lookup falls back to the authoritative full scan, so
correctness never depends on the sidecar.
Sourcepub fn pin(&self, identity: PinnedIdentity) -> Result<(), TrustError>
pub fn pin(&self, identity: PinnedIdentity) -> Result<(), TrustError>
Pin a new identity.
The public key hex is validated at pin-time.
Errors if the DID is already pinned (use update for rotation).
Sourcepub fn update(&self, identity: PinnedIdentity) -> Result<(), TrustError>
pub fn update(&self, identity: PinnedIdentity) -> Result<(), TrustError>
Update an existing pin (after verified rotation).
Sourcepub fn remove(&self, did: &str) -> Result<bool, TrustError>
pub fn remove(&self, did: &str) -> Result<bool, TrustError>
Remove a pinned identity by DID.
Returns true if an entry was removed, false if not found.
Sourcepub fn is_pinned(&self, did: &str) -> Result<bool, TrustError>
pub fn is_pinned(&self, did: &str) -> Result<bool, TrustError>
Check if an identity is pinned (lightweight existence check).
More efficient than lookup when you only need a yes/no answer.
Sourcepub fn list(&self) -> Result<Vec<PinnedIdentity>, TrustError>
pub fn list(&self) -> Result<Vec<PinnedIdentity>, TrustError>
List all pinned identities.