gpg: New option --quick-set-expire.
[gnupg.git] / doc / gpg-agent.texi
index b45874d..3177af4 100644 (file)
@@ -76,7 +76,7 @@ the included Secure Shell Agent you may start the agent using:
 @c   interface that the owner has access to, but the supplicant does not).
 @c
 @c   The rationale for this separation is that it allows access to the
-@c   secret key to be tightly controled and audited, and it doesn't permit
+@c   secret key to be tightly controlled and audited, and it doesn't permit
 @c   the the supplicant to either copy the key or to override the owner's
 @c   intentions.
 
@@ -85,6 +85,15 @@ gpg-connect-agent /bye
 @end example
 
 @noindent
+If you want to manually terminate the currently-running agent, you can
+safely do so with:
+
+@example
+gpgconf --kill gpg-agent
+@end example
+
+@noindent
+@efindex GPG_TTY
 You should always add the following lines to your @code{.bashrc} or
 whatever initialization file is used for all shell invocations:
 
@@ -107,7 +116,7 @@ one (e.g. @file{@value{BINDIR}/pinentry}).
 
 @manpause
 @noindent
-@xref{Option Index},for an index to @command{GPG-AGENT}'s commands and options.
+@xref{Option Index}, for an index to @command{GPG-AGENT}'s commands and options.
 @mancont
 
 @menu
@@ -157,6 +166,20 @@ As an alternative you may create a new process as a child of
 gpg-agent: @code{gpg-agent --daemon /bin/sh}.  This way you get a new
 shell with the environment setup properly; after you exit from this
 shell, gpg-agent terminates within a few seconds.
+
+@item --supervised
+@opindex supervised
+Run in the foreground, sending logs by default to stderr, and
+listening on provided file descriptors, which must already be bound to
+listening sockets.  This command is useful when running under systemd
+or other similar process supervision schemes.  This option is not
+supported on Windows.
+
+In --supervised mode, different file descriptors can be provided for
+use as different socket types (e.g. ssh, extra) as long as they are
+identified in the environment variable @code{LISTEN_FDNAMES} (see
+sd_listen_fds(3) on some Linux distributions for more information on
+this convention).
 @end table
 
 @mansect options
@@ -229,7 +252,7 @@ however carefully selected to best aid in debugging.
 
 @item --debug @var{flags}
 @opindex debug
-This option is only useful for debugging and the behaviour may change at
+This option is only useful for debugging and the behavior may change at
 any time without notice.  FLAGS are bit encoded and may be given in
 usual C-Syntax. The currently defined bits are:
 
@@ -245,7 +268,7 @@ memory allocation
 @item 6  (64)
 caching
 @item 7  (128)
-show memory statistics.
+show memory statistics
 @item 9  (512)
 write hashed data to files named @code{dbgmd-000*}
 @item 10 (1024)
@@ -295,6 +318,7 @@ debugging.
 @itemx --csh
 @opindex sh
 @opindex csh
+@efindex SHELL
 Format the info output in daemon mode for use with the standard Bourne
 shell or the C-shell respectively.  The default is to guess it based on
 the environment variable @code{SHELL} which is correct in almost all
@@ -309,11 +333,13 @@ should in general not be used to avoid X-sniffing attacks.
 @anchor{option --log-file}
 @item --log-file @var{file}
 @opindex log-file
-Append all logging output to @var{file}.  This is very helpful in seeing
-what the agent actually does.  If neither a log file nor a log file
-descriptor has been set on a Windows platform, the Registry entry
-@code{HKCU\Software\GNU\GnuPG:DefaultLogFile}, if set, is used to specify
-the logging output.
+@efindex HKCU\Software\GNU\GnuPG:DefaultLogFile
+Append all logging output to @var{file}.  This is very helpful in
+seeing what the agent actually does. Use @file{socket://} to log to
+socket.  If neither a log file nor a log file descriptor has been set
+on a Windows platform, the Registry entry
+@code{HKCU\Software\GNU\GnuPG:DefaultLogFile}, if set, is used to
+specify the logging output.
 
 
 @anchor{option --no-allow-mark-trusted}
@@ -362,7 +388,7 @@ version of the used Pinentry.
 @opindex ignore-cache-for-signing
 This option will let @command{gpg-agent} bypass the passphrase cache for all
 signing operation.  Note that there is also a per-session option to
-control this behaviour but this command line option takes precedence.
+control this behavior but this command line option takes precedence.
 
 @item --default-cache-ttl @var{n}
 @opindex default-cache-ttl
@@ -533,12 +559,16 @@ pinentry to pop up at the @code{tty} or display you started the agent.
 @anchor{option --extra-socket}
 @item --extra-socket @var{name}
 @opindex extra-socket
+The extra socket is created by default, you may use this option to
+change the name of the socket.  To disable the creation of the socket
+use ``none'' or ``/dev/null'' for @var{name}.
+
 Also listen on native gpg-agent connections on the given socket.  The
 intended use for this extra socket is to setup a Unix domain socket
 forwarding from a remote machine to this socket on the local machine.
 A @command{gpg} running on the remote machine may then connect to the
-local gpg-agent and use its private keys.  This allows to decrypt or
-sign data on a remote machine without exposing the private keys to the
+local gpg-agent and use its private keys.  This enables decrypting or
+signing data on a remote machine without exposing the private keys to the
 remote machine.
 
 
@@ -548,7 +578,8 @@ remote machine.
 @opindex enable-ssh-support
 @opindex enable-putty-support
 
-Enable the OpenSSH Agent protocol.
+The OpenSSH Agent protocol is always enabled, but @command{gpg-agent}
+will only set the @code{SSH_AUTH_SOCK} variable if this flag is given.
 
 In this mode of operation, the agent does not only implement the
 gpg-agent protocol, but also the agent protocol used by OpenSSH
@@ -613,7 +644,7 @@ agent. By default they may all be found in the current home directory
 @table @file
 
 @item gpg-agent.conf
-@cindex gpg-agent.conf
+@efindex gpg-agent.conf
   This is the standard configuration file read by @command{gpg-agent} on
   startup.  It may contain any valid long option; the leading
   two dashes may not be entered and the option may not be abbreviated.
@@ -623,13 +654,14 @@ agent. By default they may all be found in the current home directory
   You should backup this file.
 
 @item trustlist.txt
+@efindex trustlist.txt
   This is the list of trusted keys.  You should backup this file.
 
   Comment lines, indicated by a leading hash mark, as well as empty
   lines are ignored.  To mark a key as trusted you need to enter its
   fingerprint followed by a space and a capital letter @code{S}.  Colons
   may optionally be used to separate the bytes of a fingerprint; this
-  allows to cut and paste the fingerprint from a key listing output.  If
+  enables cutting and pasting the fingerprint from a key listing output.  If
   the line is prefixed with a @code{!} the key is explicitly marked as
   not trusted.
 
@@ -656,7 +688,7 @@ trustworthy enough into this file.  Places where to look for the
 fingerprint of a root certificate are letters received from the CA or
 the website of the CA (after making 100% sure that this is indeed the
 website of that CA).  You may want to consider disallowing interactive
-updates of this file by using the @xref{option --no-allow-mark-trusted}.
+updates of this file by using the @ref{option --no-allow-mark-trusted}.
 It might even be advisable to change the permissions to read-only so
 that this file can't be changed inadvertently.
 
@@ -684,7 +716,7 @@ fails, try again using the chain validation model.
 
 
 @item sshcontrol
-@cindex sshcontrol
+@efindex sshcontrol
 This file is used when support for the secure shell agent protocol has
 been enabled (@pxref{option --enable-ssh-support}). Only keys present in
 this file are used in the SSH protocol.  You should backup this file.
@@ -703,7 +735,7 @@ that key.  The flag is automatically set if a new key was loaded into
 @code{gpg-agent} using the option @option{-c} of the @code{ssh-add}
 command.
 
-The keygrip may be prefixed with a @code{!} to disable an entry entry.
+The keygrip may be prefixed with a @code{!} to disable an entry.
 
 The following example lists exactly one key.  Note that keys available
 through a OpenPGP smartcard in the active smartcard reader are
@@ -718,6 +750,7 @@ implicitly added to this list; i.e. there is no need to list them.
 @end cartouche
 
 @item private-keys-v1.d/
+@efindex private-keys-v1.d
 
   This is the directory where gpg-agent stores the private keys.  Each
   key is stored in a file with the name made up of the keygrip and the
@@ -739,7 +772,7 @@ a small helper script is provided to create these files (@pxref{addgnupghome}).
 @c
 @mansect signals
 @node Agent Signals
-@section Use of some signals.
+@section Use of some signals
 A running @command{gpg-agent} may be controlled by signals, i.e. using
 the @command{kill} command to send a signal to the process.
 
@@ -794,7 +827,7 @@ This signal is used for internal purposes.
 @node Agent Examples
 @section Examples
 
-It is important to set the GPG_TTY environment variable in
+It is important to set the environment variable @code{GPG_TTY} in
 your login shell, for example in the @file{~/.bashrc} init script:
 
 @cartouche
@@ -810,7 +843,7 @@ it by adding this to your init script:
 @example
 unset SSH_AGENT_PID
 if [ "$@{gnupg_SSH_AUTH_SOCK_by:-0@}" -ne $$ ]; then
-  export SSH_AUTH_SOCK="$@{HOME@}/.gnupg/S.gpg-agent.ssh"
+  export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
 fi
 @end example
 @end cartouche
@@ -933,7 +966,7 @@ Here is an example session:
    S: # session key follows
    S: S PADDING 0
    S: D (value 1234567890ABCDEF0)
-   S: OK descryption successful
+   S: OK decryption successful
 @end smallexample
 @end cartouche
 
@@ -945,7 +978,7 @@ that the padding has been removed.
 @node Agent PKSIGN
 @subsection Signing a Hash
 
-The client ask the agent to sign a given hash value.  A default key
+The client asks the agent to sign a given hash value.  A default key
 will be chosen if no key has been set.  To set a key a client first
 uses:
 
@@ -955,7 +988,7 @@ uses:
 
 This can be used multiple times to create multiple signature, the list
 of keys is reset with the next PKSIGN command or a RESET.  The server
-test whether the key is a valid key to sign something and responds with
+tests whether the key is a valid key to sign something and responds with
 okay.
 
 @example
@@ -987,7 +1020,7 @@ The actual signing is done using
    PKSIGN <options>
 @end example
 
-Options are not yet defined, but my later be used to choose among
+Options are not yet defined, but may later be used to choose among
 different algorithms.  The agent does then some checks, asks for the
 passphrase and as a result the server returns the signature as an SPKI
 like S-expression in "D" lines:
@@ -1036,8 +1069,8 @@ Here is an example session:
 @subsection Generating a Key
 
 This is used to create a new keypair and store the secret key inside the
-active PSE --- which is in most cases a Soft-PSE.  An not yet defined
-option allows to choose the storage location.  To get the secret key out
+active PSE --- which is in most cases a Soft-PSE.  A not-yet-defined
+option allows choosing the storage location.  To get the secret key out
 of the PSE, a special export tool has to be used.
 
 @example
@@ -1107,7 +1140,7 @@ are to be used for this.
 
 There is no actual need because we can expect that secret keys
 created by a 3rd party are stored on a smartcard.  If we have
-generated the key ourself, we do not need to import it.
+generated the key ourselves, we do not need to import it.
 
 @node Agent EXPORT
 @subsection Export a Secret Key
@@ -1196,7 +1229,7 @@ Format the fingerprint according to gpg rules for a v4 keys.
 @item @@FPR@@
 Choose an appropriate format to format the fingerprint.
 @item @@@@
-Replaced by a single @code{@@}
+Replaced by a single @code{@@}.
 @end table
 
 @node Agent GET_PASSPHRASE
@@ -1286,7 +1319,7 @@ passphrase will be retrieved from the pinentry module unless the
 retrieved from the client.
 
 The @var{timeout} parameter keeps the passphrase cached for the specified
-number of seconds. A value of @code{-1} means infinate while @code{0} means
+number of seconds. A value of @code{-1} means infinite while @code{0} means
 the default (currently only a timeout of -1 is allowed, which means to never
 expire it).
 
@@ -1335,8 +1368,8 @@ least one of the keygrips corresponds to an available secret key.
   LEARN [--send]
 @end example
 
-This command is used to register a smartcard.  With the --send
-option given the certificates are send back.
+This command is used to register a smartcard.  With the @option{--send}
+option given the certificates are sent back.
 
 
 @node Agent PASSWD
@@ -1470,8 +1503,7 @@ following values are defined:
   Use a loopback pinentry.  This fakes a pinentry by using inquiries
   back to the caller to ask for a passphrase.  This option may only be
   set if the agent has been configured for that.
-  To disable this feature use @xref{option --no-allow-loopback-pinentry}.
-
+  To disable this feature use @ref{option --no-allow-loopback-pinentry}.
   @end table
 
 @item cache-ttl-opt-preset
@@ -1492,8 +1524,9 @@ much slower or faster than the actual box.
 
 @mansect see also
 @ifset isman
-@command{gpg2}(1),
+@command{@gpgname}(1),
 @command{gpgsm}(1),
+@command{gpgconf}(1),
 @command{gpg-connect-agent}(1),
 @command{scdaemon}(1)
 @end ifset