pub struct Gnupg {
program: PathBuf,
home: Option<PathBuf>,
}Expand description
GnuPG, as Sioul runs it on your press: the gpg program, and the home it
reads (none: GnuPG’s own, GNUPGHOME or ~/.gnupg; a throwaway one in tests).
Fields§
§program: PathBuf§home: Option<PathBuf>Implementations§
Source§impl Gnupg
impl Gnupg
Sourcepub fn find() -> Result<Gnupg, GnupgProblem>
pub fn find() -> Result<Gnupg, GnupgProblem>
GnuPG here: gpg on the path, else where its installers put it (a
window started from the desktop may not have them on its path).
Sourcepub fn with_home(program: &Path, home: &Path) -> Gnupg
pub fn with_home(program: &Path, home: &Path) -> Gnupg
This gpg with its home in home (--homedir): tests, never yours.
Sourcefn run(&self, args: &[&str]) -> Result<Vec<u8>, GnupgProblem>
fn run(&self, args: &[&str]) -> Result<Vec<u8>, GnupgProblem>
gpg run with args, in batch mode, nothing on its input; its output,
or why not. GnuPG’s own pinentry may ask for a PIN meanwhile.
Sourcefn run_watching(
&self,
args: &[&str],
watch: Option<&(dyn Fn(GnupgStep) + Sync)>,
) -> Result<Vec<u8>, GnupgProblem>
fn run_watching( &self, args: &[&str], watch: Option<&(dyn Fn(GnupgStep) + Sync)>, ) -> Result<Vec<u8>, GnupgProblem>
The same, saying where it is as it goes (watch: its status read as
it comes): the pinentry open, then the key that may wait for a touch.
A security key that waited in vain is said as such.
Sourcepub fn export(&self, fingerprint: &str) -> Result<Vec<u8>, GnupgProblem>
pub fn export(&self, fingerprint: &str) -> Result<Vec<u8>, GnupgProblem>
The certificate of the key fingerprint, armored, as GnuPG keeps it
(gpg --export --armor): public parts only.
Sourcepub fn holds_secret(&self, fingerprint: &str) -> bool
pub fn holds_secret(&self, fingerprint: &str) -> bool
Whether GnuPG holds the secret part of fingerprint, or knows the card
that does: then it can renew the key.
Sourcepub fn renew(
&self,
fingerprint: &str,
period: &str,
watch: &(dyn Fn(GnupgStep) + Sync),
) -> Result<(), GnupgProblem>
pub fn renew( &self, fingerprint: &str, period: &str, watch: &(dyn Fn(GnupgStep) + Sync), ) -> Result<(), GnupgProblem>
The key fingerprint renewed for period (“2y”), then its subkeys:
gpg --quick-set-expire, twice, GnuPG’s own pinentry asking the PIN
(a security key’s: and a touch) each time it needs it.
Its subkeys are named one by one, expired ones included: GnuPG’s “*”
sets only those not yet expired, and a subkey expired since long
stayed so. watch is told where it is: GnuPG’s pinentry open, then
the key that may wait for a touch. Meanwhile Sioul’s own looks at the
keys wait (may_look); at the end, done or not, GnuPG lets the
security key go (Gnupg::release), so that Sioul can read it next.
Sourcepub fn subkeys(&self, fingerprint: &str) -> Vec<String>
pub fn subkeys(&self, fingerprint: &str) -> Vec<String>
The subkeys of fingerprint that are not revoked, expired ones
included, as GnuPG lists them; none when it does not list them.
Sourcepub fn release(&self) -> Released
pub fn release(&self) -> Released
GnuPG’s smart card daemon stopped, after Sioul’s own GnuPG used the
security key: it holds the key for itself (unless pcsc-shared is in
scdaemon.conf) and Sioul could not read it next. gpg starts it again
when it needs the key. GnuPG’s settings stay as they are.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Gnupg
impl RefUnwindSafe for Gnupg
impl Send for Gnupg
impl Sync for Gnupg
impl Unpin for Gnupg
impl UnsafeUnpin for Gnupg
impl UnwindSafe for Gnupg
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> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§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> Pointable for T
impl<T> Pointable for T
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.