Skip to main content

Keys

Struct Keys 

Source
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).

§shared: Vec<KnownCard>

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

Source

pub fn load() -> Keys

Source

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).

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn cert(&self, fingerprint: &str) -> Option<&Cert>

Your certificate of this fingerprint.

Source

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.

Source

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).

Source

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.

Source

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).

Source

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.

Source

fn serves(&self, cert: &Cert, address: &str) -> bool

Whether cert serves address: bound to it and usable here (names, Keys::usable).

Source

pub fn is_yours(&self, fingerprint: &Fingerprint) -> bool

Whether fingerprint is one of your certificates: kept with yours, or your security keys’ (cards.toml).

Source

fn all(&self) -> impl Iterator<Item = &Cert>

Source

fn by_handle(&self, handle: &KeyHandle) -> Option<&Cert>

Trait Implementations§

Source§

impl Clone for Keys

Source§

fn clone(&self) -> Keys

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for Keys

Source§

fn default() -> Keys

Returns the “default value” for a type. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> DynClone for T
where T: Clone,

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows 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) -> R
where R: 'a,

Mutably borrows 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V