pub struct Keys {
pub own: Vec<Cert>,
pub others: Vec<Cert>,
pub cards: Vec<KnownCard>,
pub shared: Vec<KnownCard>,
pub addresses: Vec<String>,
}Expand description
The keys Sioul knows: yours (their secret parts here, or on a security key), others’, and your security keys.
Fields§
§own: Vec<Cert>§others: Vec<Cert>§cards: Vec<KnownCard>Your security keys read on this device, as pgp/cards.toml lists
them: they alone sign here (review of 19 October 2026, F18).
Your security keys your other devices made known and this one did not
read (pgp/cards/), those stopped here aside (pgp/stopped.toml):
they serve encryption to you, Autocrypt and the reader’s words, never
signing here.
addresses: Vec<String>Your addresses: your accounts’ (config.toml). With the addresses
your security keys serve, they are yours whatever certificate claims
them; never taken from a certificate’s user IDs (review of 19 October
2026, F1).
Implementations§
Source§impl Keys
impl Keys
pub fn load() -> Keys
Sourcepub fn load_at(root: &Path) -> Keys
pub fn load_at(root: &Path) -> Keys
The keys of the folder root (pgp/): yours, others’, your security
keys (cards.toml), and those your other devices made known
(cards/, securitykey::shared_cards): a security key read on your
computer, its certificate with it, so that a phone encrypts to you,
hands your key by Autocrypt and says what waits for the key. A key
this device read itself says what it is; its certificate is merged
with the shared one (a renewal made on another computer).
Sourcepub fn own_for(&self, address: &str) -> Option<Own<'_>>
pub fn own_for(&self, address: &str) -> Option<Own<'_>>
Your key for an address, able to sign now. A security key read on this device that serves the address comes first, and alone: a key kept here for the same address only opens older mail. When that security key’s certificate expired, nothing signs for the address until it is renewed. A security key another computer read signs nowhere but there (review of 19 October 2026, F18): to sign here, it is read here.
Sourcepub fn card_for(&self, address: &str) -> Option<(&KnownCard, &Cert)>
pub fn card_for(&self, address: &str) -> Option<(&KnownCard, &Cert)>
The security key read here that signs for address, and its
certificate, even when it expired: to say so.
Sourcepub fn serving_card(&self, address: &str) -> Option<(&KnownCard, &Cert)>
pub fn serving_card(&self, address: &str) -> Option<(&KnownCard, &Cert)>
The security key of yours that serves address, read here or on
another device of yours, and its certificate: encryption to you,
Autocrypt, and what the reader says wait for it.
Sourcepub fn all_cards(&self) -> impl Iterator<Item = &KnownCard>
pub fn all_cards(&self) -> impl Iterator<Item = &KnownCard>
Every security key of yours known here: read here first, then those your other devices made known.
Sourcepub fn for_address(&self, address: &str) -> Option<&Cert>
pub fn for_address(&self, address: &str) -> Option<&Cert>
A key to encrypt to address: someone’s, or yours. For one of your
own addresses, your own key alone: never a certificate someone sent
claiming it (an Autocrypt header, a lookup), which would read what you
send yourself; none when yours cannot take encryption now.
Someone’s keys are kept for the address each came for alone
(for_its_address). Two of them for one address (a key made anew,
the old one kept): the one whose newest live encryption key is the
most recent, then the one whose primary key is, then by fingerprint;
never the order the folder lists them in (review of 19 October 2026,
F2). Others’ before a key of yours that names the address.
Sourcepub fn self_cert_for(&self, address: &str) -> Option<&Cert>
pub fn self_cert_for(&self, address: &str) -> Option<&Cert>
Your own certificate to encrypt to, for address: your security key’s
when one serves the address (its certificate as your computer read
it), else a key of yours naming it; none when it cannot take
encryption now (expired, revoked).
Sourcepub fn own_certs(&self) -> Vec<&Cert>
pub fn own_certs(&self) -> Vec<&Cert>
Your own certificates that can take what is sealed for you alone (your security keys’, as your computer read them, and your keys here): an encryption key not revoked, expired or not, since you open such a seal with it (F19); never a certificate revoked as a whole (N3). Encrypted to each, any of them opens it.
Sourcepub fn is_own_address(&self, address: &str) -> bool
pub fn is_own_address(&self, address: &str) -> bool
Whether address is yours: one of your accounts’ addresses, or one a
security key of yours serves. Never from a certificate’s user IDs,
which anyone can write (review of 19 October 2026, F1).
Sourcepub fn usable(&self, cert: &Cert) -> bool
pub fn usable(&self, cert: &Cert) -> bool
Whether cert may serve: valid, not revoked as a whole (usable),
and not revoked by its designated revoker (a Revocation Key, GnuPG’s
addrevoker) whose own certificate is kept here, yours or someone’s,
the revocation checked against it (review of 19 October 2026, R2).
Sequoia says such a revocation “could be”, leaving that check to
whoever holds the revoker’s certificate; one that does not check is
passed over, since anyone can attach one.
Sourcefn serves(&self, cert: &Cert, address: &str) -> bool
fn serves(&self, cert: &Cert, address: &str) -> bool
Whether cert serves address: bound to it and usable here (names,
Keys::usable).
Sourcepub fn is_yours(&self, fingerprint: &Fingerprint) -> bool
pub fn is_yours(&self, fingerprint: &Fingerprint) -> bool
Whether fingerprint is one of your certificates: kept with yours,
or your security keys’ (cards.toml).
fn all(&self) -> impl Iterator<Item = &Cert>
fn by_handle(&self, handle: &KeyHandle) -> Option<&Cert>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Keys
impl RefUnwindSafe for Keys
impl Send for Keys
impl Sync for Keys
impl Unpin for Keys
impl UnsafeUnpin for Keys
impl UnwindSafe for Keys
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.