Fix detection of card removal and insertion.
[gnupg.git] / doc / tools.texi
index 2b8d153..5e9a024 100644 (file)
@@ -16,8 +16,12 @@ GnuPG comes with a couple of smaller tools:
 * gpgsm-gencert.sh::      Generate an X.509 certificate request.
 * gpg-preset-passphrase:: Put a passphrase into the cache.
 * gpg-connect-agent::     Communicate with a running agent.
+@ifset gpgtwoone
+* dirmngr-client::        How to use the Dirmngr client tool.
+@end ifset
 * gpgparsemail::          Parse a mail message into an annotated format
 * symcryptrun::           Call a simple symmetric encryption tool.
+* gpg-zip::               Encrypt or sign files into an archive.
 @end menu
 
 @c
@@ -40,11 +44,12 @@ GnuPG comes with a couple of smaller tools:
 @end ifset
 
 @mansect description
-Most of the main utilities are able to write there log files to a
-Unix Domain socket if configured that way.  @command{watchgnupg} is a simple
-listener for such a socket.  It ameliorates the output with a time
-stamp and makes sure that long lines are not interspersed with log
-output from other utilities.
+Most of the main utilities are able to write their log files to a Unix
+Domain socket if configured that way.  @command{watchgnupg} is a simple
+listener for such a socket.  It ameliorates the output with a time stamp
+and makes sure that long lines are not interspersed with log output from
+other utilities.  This tool is not available for Windows.
+
 
 @noindent
 @command{watchgnupg} is commonly invoked as
@@ -56,7 +61,7 @@ watchgnupg --force ~/.gnupg/S.log
 
 @noindent
 This starts it on the current terminal for listening on the socket
-@file{~/.gnupg/S.log}.  
+@file{~/.gnupg/S.log}.
 
 @mansect options
 @noindent
@@ -64,29 +69,69 @@ This starts it on the current terminal for listening on the socket
 
 @table @gnupgtabopt
 
-@item --force 
+@item --force
 @opindex force
 Delete an already existing socket file.
 
+@anchor{option watchgnupg --tcp}
+@item --tcp @var{n}
+Instead of reading from a local socket, listen for connects on TCP port
+@var{n}.
+
 @item --verbose
 @opindex verbose
 Enable extra informational output.
 
 @item --version
 @opindex version
-print version of the program and exit
+Print version of the program and exit.
 
 @item --help
 @opindex help
-Display a brief help page and exit
+Display a brief help page and exit.
 
 @end table
 
+@noindent
+@mansect examples
+@chapheading Examples
+
+@example
+$ watchgnupg --force /home/foo/.gnupg/S.log
+@end example
+
+This waits for connections on the local socket
+@file{/home/foo/.gnupg/S.log} and shows all log entries.  To make this
+work the option @option{log-file} needs to be used with all modules
+which logs are to be shown.  The value for that option must be given
+with a special prefix (e.g. in the conf file):
+
+@example
+log-file socket:///home/foo/.gnupg/S.log
+@end example
+
+For debugging purposes it is also possible to do remote logging.  Take
+care if you use this feature because the information is send in the
+clear over the network.  Use this syntax in the conf files:
+
+@example
+log-file tcp://192.168.1.1:4711
+@end example
+
+You may use any port and not just 4711 as shown above; only IP addresses
+are supported (v4 and v6) and no host names.  You need to start
+@command{watchgnupg} with the @option{tcp} option.  Note that under
+Windows the registry entry @var{HKCU\Software\GNU\GnuPG:DefaultLogFile}
+can be used to change the default log output from @code{stderr} to
+whatever is given by that entry.  However the only useful entry is a TCP
+name for remote debugging.
+
+
 @mansect see also
 @ifset isman
-@command{gpg}(1), 
-@command{gpgsm}(1), 
-@command{gpg-agent}(1), 
+@command{gpg}(1),
+@command{gpgsm}(1),
+@command{gpg-agent}(1),
 @command{scdaemon}(1)
 @end ifset
 @include see-also-note.texi
@@ -105,7 +150,7 @@ Display a brief help page and exit
 @node addgnupghome
 @section Create .gnupg home directories.
 @ifset manverb
-.B addgnupghome 
+.B addgnupghome
 \- Create .gnupg home directories
 @end ifset
 
@@ -152,7 +197,7 @@ addgnupghome account1 account2 ... accountn
 .br
 .B gpgconf
 .RI [ options ]
-.B \-\-list-options 
+.B \-\-list-options
 .I component
 .br
 .B gpgconf
@@ -229,10 +274,23 @@ List all options of the component @var{component}.
 @item --change-options @var{component}
 Change the options of the component @var{component}.
 
+@item --check-options @var{component}
+Check the options for the component @var{component}.
+
 @item --apply-defaults
 Update all configuration files with values taken from the global
 configuration file (usually @file{/etc/gnupg/gpgconf.conf}).
 
+@item --list-dirs
+Lists the directories used by @command{gpgconf}.  One directory is
+listed per line, and each line consists of a colon-separated list where
+the first field names the directory type (for example @code{sysconfdir})
+and the second field contains the percent-escaped directory.  Although
+they are not directories, the socket file names used by
+@command{gpg-agent} and @command{dirmngr} are printed as well.  Note
+that the socket file names and the @code{homedir} lines are the default
+names and they may be overridden by command line switches.
+
 @item --list-config [@var{filename}]
 List the global configuration file in a colon separated format.  If
 @var{filename} is given, check that file instead.
@@ -241,6 +299,19 @@ List the global configuration file in a colon separated format.  If
 Run a syntax check on the global configuration file.  If @var{filename}
 is given, check that file instead.
 
+@item --reload [@var{component}]
+@opindex reload
+Reload all or the given component. This is basically the same as sending
+a SIGHUP to the component.  Components which don't support reloading are
+ignored.
+
+@item --kill [@var{component}]
+@opindex kill
+Kill the given component.  Components which support killing are
+gpg-agent and scdaemon.  Components which don't support reloading are
+ignored.  Note that as of now reload and kill have the same effect for
+scdaemon.
+
 @end table
 
 
@@ -259,11 +330,10 @@ The following options may be used:
 Outputs additional information while running.  Specifically, this
 extends numerical field values by human-readable descriptions.
 
-@c FIXME: Not yet supported.
-@c @item -n
-@c @itemx --dry-run
-@c Do not actually change anything.  Useful together with
-@c @code{--change-options} for testing purposes.
+@item -n
+@itemx --dry-run
+Do not actually change anything.  This is currently only implemented
+for @code{--change-options} and can be used for testing purposes.
 
 @item -r
 @itemx --runtime
@@ -321,7 +391,7 @@ never contain any special characters.
 Some fields contain strings that are described to be
 @emph{percent-escaped}.  Such strings need to be de-escaped before
 their content can be presented to the user.  A percent-escaped string
-is de-escaped by replacing all occurences of @code{%XY} by the byte
+is de-escaped by replacing all occurrences of @code{%XY} by the byte
 that has the hexadecimal value @code{XY}.  @code{X} and @code{Y} are
 from the set @code{0-9a-f}.
 
@@ -464,7 +534,7 @@ dirmngr:Directory Manager:/usr/local/bin/dirmngr:
 
 The command @code{--check-programs} is similar to
 @code{--list-components} but works on backend programs and not on
-components.  It runs each program to test wether it is installed and
+components.  It runs each program to test whether it is installed and
 runnable.  This also includes a syntax check of all config file options
 of the program.
 
@@ -501,17 +571,17 @@ The @emph{boolean value} in this field indicates whether the program's
 config file is syntactically okay.
 
 @item cfgfile
-If an error occured in the configuraion file (as indicated by a false
+If an error occurred in the configuration file (as indicated by a false
 value in the field @code{okay}), this field has the name of the failing
 configuration file.  It is @emph{percent-escaped}.
 
 @item line
-If an error occured in the configuration file, this field has the line
-number of the failing statement in the configuration file.  
+If an error occurred in the configuration file, this field has the line
+number of the failing statement in the configuration file.
 It is an @emph{unsigned number}.
 
 @item error
-If an error occured in the configuration file, this field has the error
+If an error occurred in the configuration file, this field has the error
 text of the failing statement in the configuration file.  It is
 @emph{percent-escaped} and @emph{localized}.
 
@@ -530,6 +600,11 @@ gpgsm:GPG for S/MIME:/usr/local/bin/gpgsm:1:1:
 dirmngr:Directory Manager:/usr/local/bin/dirmngr:0:0:
 @end example
 
+@noindent
+The command @w{@code{--check-options @var{component}}} will verify the
+configuration file in the same manner as @code{--check-programs}, but
+only for the component @var{component}.
+
 
 @node Listing options
 @subsection Listing options
@@ -667,6 +742,22 @@ not necessarily need to exist.
 A @emph{string} that describes an LDAP server in the format:
 
 @code{@var{hostname}:@var{port}:@var{username}:@var{password}:@var{base_dn}}
+
+@item key fingerprint (34)
+A @emph{string} with a 40 digit fingerprint specifying a certificate.
+
+@item pub key (35)
+A @emph{string} that describes a certificate by user ID, key ID or
+fingerprint.
+
+@item sec key (36)
+A @emph{string} that describes a certificate with a key by user ID,
+key ID or fingerprint.
+
+@item alias list (37)
+A @emph{string} that describes an alias list, like the one used with
+gpg's group option.  The list consists of a key, an equal sign and space
+separated values.
 @end table
 
 More types will be added in the future.  Please see the @var{alt-type}
@@ -713,7 +804,7 @@ no argument is given.
 @item value
 This field is defined only for options.  Its format is that of an
 @emph{option argument}.  If it is empty, then the option is not
-explicitely set in the current configuration, and the default applies
+explicitly set in the current configuration, and the default applies
 (if any).  Otherwise, it contains the current value of the option.
 Note that this field is also meaningful if the option itself does not
 take a real argument (in this case, it contains the number of times
@@ -757,6 +848,10 @@ argument is used (only allowed if the argument is optional for this
 option).  Otherwise, the option will be set to the specified value.
 @end table
 
+@noindent
+The output of the command is the same as that of
+@code{--check-options} for the modified configuration file.
+
 Examples:
 
 To set the force option, which is of basic type @code{none (0)}:
@@ -779,7 +874,7 @@ effect.
 @subsection Listing global options
 
 Sometimes it is useful for applications to look at the global options
-file @file{gpgconf.conf}. 
+file @file{gpgconf.conf}.
 The colon separated listing format is record oriented and uses the first
 field to identify the record type:
 
@@ -827,7 +922,7 @@ empty string.
 @end table
 
 @noindent
-Unknown record typs should be ignored.  Note that there is intentionally
+Unknown record types should be ignored.  Note that there is intentionally
 no feature to change the global option file through @command{gpgconf}.
 
 
@@ -848,9 +943,9 @@ no feature to change the global option file through @command{gpgconf}.
 
 @mansect see also
 @ifset isman
-@command{gpg}(1), 
-@command{gpgsm}(1), 
-@command{gpg-agent}(1), 
+@command{gpg}(1),
+@command{gpgsm}(1),
+@command{gpg-agent}(1),
 @command{scdaemon}(1),
 @command{dirmngr}(1)
 @end ifset
@@ -901,7 +996,7 @@ applygnupgdefaults
 @ifset manverb
 .B gpgsm-gencert.sh
 \- Generate an X.509 certificate request
-@end ifset 
+@end ifset
 
 @mansect synopsis
 @ifset manverb
@@ -909,7 +1004,7 @@ applygnupgdefaults
 @end ifset
 
 @mansect description
-This is a simple tool to interactivly generate a certificate request
+This is a simple tool to interactively generate a certificate request
 which will be printed to stdout.
 
 @manpause
@@ -920,8 +1015,8 @@ which will be printed to stdout.
 
 @mansect see also
 @ifset isman
-@command{gpgsm}(1), 
-@command{gpg-agent}(1), 
+@command{gpgsm}(1),
+@command{gpg-agent}(1),
 @command{scdaemon}(1)
 @end ifset
 @include see-also-note.texi
@@ -944,7 +1039,7 @@ which will be printed to stdout.
 .B  gpg-preset-passphrase
 .RI [ options ]
 .RI [ command ]
-.I keygrip
+.I cache-id
 @end ifset
 
 @mansect description
@@ -974,14 +1069,19 @@ starting @command{gpg-agent} with the
 @command{gpg-preset-passphrase} is invoked this way:
 
 @example
-gpg-preset-passphrase [options] [command] @var{keygrip}
+gpg-preset-passphrase [options] [command] @var{cacheid}
 @end example
 
-@var{keygrip} is a 40 character string of hexadecimal characters
-identifying the key for which the passphrase should be set or cleared.
-This keygrip is listed along with the key when running the command:
-@code{gpgsm --dump-secret-keys}. One of the following command options
-must be given:
+@var{cacheid} is either a 40 character keygrip of hexadecimal
+characters identifying the key for which the passphrase should be set
+or cleared.  The keygrip is listed along with the key when running the
+command: @code{gpgsm --dump-secret-keys}.  Alternatively an arbitrary
+string may be used to identify a passphrase; it is suggested that such
+a string is prefixed with the name of the application (e.g
+@code{foo:12346}).
+
+@noindent
+One of the following command options must be given:
 
 @table @gnupgtabopt
 @item --preset
@@ -992,7 +1092,7 @@ use. @command{gpg-preset-passphrase} will then read the passphrase from
 
 @item --forget
 @opindex forget
-Flush the passphrase for the given keygrip from the cache.
+Flush the passphrase for the given cache ID from the cache.
 
 @end table
 
@@ -1003,7 +1103,7 @@ The following additional options may be used:
 @item -v
 @itemx --verbose
 @opindex verbose
-Output additional information while running.  
+Output additional information while running.
 
 @item -P @var{string}
 @itemx --passphrase @var{string}
@@ -1015,9 +1115,9 @@ for other users.
 
 @mansect see also
 @ifset isman
-@command{gpg}(1), 
-@command{gpgsm}(1), 
-@command{gpg-agent}(1), 
+@command{gpg}(1),
+@command{gpgsm}(1),
+@command{gpg-agent}(1),
 @command{scdaemon}(1)
 @end ifset
 @include see-also-note.texi
@@ -1039,14 +1139,14 @@ for other users.
 @mansect synopsis
 @ifset manverb
 .B  gpg-connect-agent
-.RI [ options ]
+.RI [ options ] [commands]
 @end ifset
 
 @mansect description
 The @command{gpg-connect-agent} is a utility to communicate with a
 running @command{gpg-agent}.  It is useful to check out the commands
 gpg-agent provides using the Assuan interface.  It might also be useful
-for scripting simple applications.  Inputis expected at stdin and out
+for scripting simple applications.  Input is expected at stdin and out
 put gets printed to stdout.
 
 It is very similar to running @command{gpg-agent} in server mode; but
@@ -1065,7 +1165,7 @@ here we connect to a running instance.
 @command{gpg-connect-agent} is invoked this way:
 
 @example
-gpg-connect-agent [options]
+gpg-connect-agent [options] [commands]
 @end example
 @mancont
 
@@ -1076,7 +1176,7 @@ The following options may be used:
 @item -v
 @itemx --verbose
 @opindex verbose
-Output additional information while running.  
+Output additional information while running.
 
 @item -q
 @item --quiet
@@ -1086,9 +1186,13 @@ Try to be as quiet as possible.
 
 @include opt-homedir.texi
 
+@item --agent-program @var{file}
+@opindex agent-program
+Specify the agent program to be started if none is running.
+
+
 @item -S
 @itemx --raw-socket @var{name}
-@opindex S        
 @opindex raw-socket
 Connect to socket @var{name} assuming this is an Assuan style server.
 Do not run any special initializations or environment checks.  This may
@@ -1102,7 +1206,7 @@ execute it as an assuan server. Here is how you would run @command{gpgsm}:
 @smallexample
  gpg-connect-agent --exec gpgsm --server
 @end smallexample
-
+Note that you may not use options on the command line in this case.
 
 @item --no-ext-connect
 @opindex no-ext-connect
@@ -1111,9 +1215,10 @@ connects to the assuan server in extended mode to allow descriptor
 passing.  This option makes it use the old mode.
 
 @item --run @var{file}
-@opindex run 
+@opindex run
 Run the commands from @var{file} at startup and then continue with the
-regular input method.
+regular input method.  Note, that commands given on the command line are
+executed after this file.
 
 @item -s
 @itemx --subst
@@ -1148,11 +1253,11 @@ Just print @var{args}.
 @item /let @var{name} @var{value}
 Set the variable @var{name} to @var{value}.  Variables are only
 substituted on the input if the @command{/subst} has been used.
-Variables are referenced by prefixing the name with a dollr sign and
+Variables are referenced by prefixing the name with a dollar sign and
 optionally include the name in curly braces.  The rules for a valid name
-are idnetically to those of the standard bourne shell.  This is not yet
+are identically to those of the standard bourne shell.  This is not yet
 enforced but may be in the future.  When used with curly braces no
-leading or trailing white space is allowed. 
+leading or trailing white space is allowed.
 
 If a variable is not found, it is searched in the environment and if
 found copied to the table of variables.
@@ -1165,7 +1270,7 @@ following functions are available:
 @item get
 Return a value described by the argument.  Available arguments are:
 
-@table @code    
+@table @code
 @item cwd
 The current working directory.
 @item homedir
@@ -1187,31 +1292,46 @@ have been given to return a useful value.
 
 @item unescape @var{args}
 Remove C-style escapes from @var{args}.  Note that @code{\0} and
-@code{\x00} terminate the returned string implictly.  The string to be
+@code{\x00} terminate the returned string implicitly.  The string to be
 converted are the entire arguments right behind the delimiting space of
 the function name.
 
 @item unpercent @var{args}
 @itemx unpercent+ @var{args}
-Remove percent style ecaping from @var{args}.  Note that @code{%00}
+Remove percent style escaping from @var{args}.  Note that @code{%00}
 terminates the string implicitly.  The string to be converted are the
 entire arguments right behind the delimiting space of the function
 name. @code{unpercent+} also maps plus signs to a spaces.
 
 @item percent @var{args}
 @itemx percent+ @var{args}
-Escape the @var{args} using percent style ecaping.  Tabs, formfeeds,
+Escape the @var{args} using percent style escaping.  Tabs, formfeeds,
 linefeeds, carriage returns and colons are escaped. @code{percent+} also
 maps spaces to plus signs.
 
+@item errcode @var{arg}
+@itemx errsource @var{arg}
+@itemx errstring @var{arg}
+Assume @var{arg} is an integer and evaluate it using @code{strtol}.  Return
+the gpg-error error code, error source or a formatted string with the
+error code and error source.
+
+
 @item +
 @itemx -
-@item *
-@item /
-@item %
+@itemx *
+@itemx /
+@itemx %
 Evaluate all arguments as long integers using @code{strtol} and apply
 this operator.  A division by zero yields an empty string.
 
+@item !
+@itemx |
+@itemx &
+Evaluate all arguments as long integers using @code{strtol} and apply
+the logical oeprators NOT, OR or AND.  The NOT operator works on the
+last argument only.
+
 
 @end table
 
@@ -1229,6 +1349,14 @@ Use content of @var{file} for inquiries with @var{name}.
 Run @var{prog} for inquiries matching @var{name} and pass the
 entire line to it as command line arguments.
 
+@item /datafile @var{name}
+Write all data lines from the server to the file @var{name}.  The file
+is opened for writing and created if it does not exists.  An existing
+file is first truncated to 0.  The data written to the file fully
+decoded.  Using a single dash for @var{name} writes to stdout.  The
+file is kept open until a new file is set using this command or this
+command is used without an argument.
+
 @item /showdef
 Print all definitions
 
@@ -1253,7 +1381,7 @@ Close the file descriptor @var{fd}.  Warning: This command is
 experimental and might change in future versions.
 
 @item /showopen
-Show a listy of open files.
+Show a list of open files.
 
 @item /serverpid
 Send the Assuan command @command{GETINFO pid} to the server and store
@@ -1274,7 +1402,7 @@ Same as the command line option @option{--decode}.
 @itemx /nosubst
 Enable and disable variable substitution.  It defaults to disabled
 unless the command line option @option{--subst} has been used.
-If /subst as been enabled once, leading white spaces are removed from
+If /subst as been enabled once, leading whitespace is removed from
 input lines which makes scripts easier to read.
 
 @item /while @var{condition}
@@ -1309,11 +1437,173 @@ Print a list of available control commands.
 
 @ifset isman
 @mansect see also
-@command{gpg-agent}(1), 
+@command{gpg-agent}(1),
 @command{scdaemon}(1)
 @include see-also-note.texi
 @end ifset
 
+@ifset gpgtwoone
+@c
+@c   DIRMNGR-CLIENT
+@c
+@node dirmngr-client
+@section The Dirmngr Client Tool
+
+@manpage dirmngr-client.1
+@ifset manverb
+.B dirmngr-client
+\- Tool to access the Dirmngr services
+@end ifset
+
+@mansect synopsis
+@ifset manverb
+.B  dirmngr-client
+.RI [ options ]
+.RI [ certfile | pattern ]
+@end ifset
+
+@mansect description
+The @command{dirmngr-client} is a simple tool to contact a running
+dirmngr and test whether a certificate has been revoked --- either by
+being listed in the corresponding CRL or by running the OCSP protocol.
+If no dirmngr is running, a new instances will be started but this is
+in general not a good idea due to the huge performance overhead.
+
+@noindent
+The usual way to run this tool is either:
+
+@example
+dirmngr-client @var{acert}
+@end example
+
+@noindent
+or
+
+@example
+dirmngr-client <@var{acert}
+@end example
+
+Where @var{acert} is one DER encoded (binary) X.509 certificates to be
+tested.
+@ifclear isman
+The return value of this command is
+@end ifclear
+
+@mansect return value
+@ifset isman
+@command{dirmngr-client} returns these values:
+@end ifset
+@table @code
+
+@item 0
+The certificate under question is valid; i.e. there is a valid CRL
+available and it is not listed tehre or teh OCSP request returned that
+that certificate is valid.
+
+@item 1
+The certificate has been revoked
+
+@item 2 (and other values)
+There was a problem checking the revocation state of the certificate.
+A message to stderr has given more detailed information.  Most likely
+this is due to a missing or expired CRL or due to a network problem.
+
+@end table
+
+@mansect options
+@noindent
+@command{dirmngr-client} may be called with the following options:
+
+
+@table @gnupgtabopt
+@item --version
+@opindex version
+Print the program version and licensing information.  Note that you cannot
+abbreviate this command.
+
+@item --help, -h
+@opindex help
+Print a usage message summarizing the most useful command-line options.
+Note that you cannot abbreviate this command.
+
+@item --quiet, -q
+@opindex quiet
+Make the output extra brief by suppressing any informational messages.
+
+@item -v
+@item --verbose
+@opindex v
+@opindex verbose
+Outputs additional information while running.
+You can increase the verbosity by giving several
+verbose commands to @sc{dirmngr}, such as @samp{-vv}.
+
+@item --pem
+@opindex pem
+Assume that the given certificate is in PEM (armored) format.
+
+@item --ocsp
+@opindex ocsp
+Do the check using the OCSP protocol and ignore any CRLs.
+
+@item --force-default-responder
+@opindex force-default-responder
+When checking using the OCSP protocl, force the use of the default OCSP
+responder.  That is not to use the Reponder as given by the certificate.
+
+@item --ping
+@opindex ping
+Check whether the dirmngr daemon is up and running.
+
+@item --cache-cert
+@opindex cache-cert
+Put the given certificate into the cache of a running dirmngr.  This is
+mainly useful for debugging.
+
+@item --validate
+@opindex validate
+Validate the given certificate using dirmngr's internal validation code.
+This is mainly useful for debugging.
+
+@item --load-crl
+@opindex load-crl
+This command expects a list of filenames with DER encoded CRL files.
+With the option @option{--url} URLs are expected in place of filenames
+and they are loaded directly from the given location.  All CRLs will be
+validated and then loaded into dirmngr's cache.
+
+@item --lookup
+@opindex lookup
+Take the remaining arguments and run a lookup command on each of them.
+The results are Base-64 encoded outputs (without header lines).  This
+may be used to retrieve certificates from a server. However the output
+format is not very well suited if more than one certificate is returned.
+
+@item --url
+@itemx -u
+@opindex url
+Modify the @command{lookup} and @command{load-crl} commands to take an URL.
+
+@item --local
+@itemx -l
+@opindex url
+Let the @command{lookup} command only search the local cache.
+
+@item --squid-mode
+@opindex squid-mode
+Run @sc{dirmngr-client} in a mode suitable as a helper program for
+Squid's @option{external_acl_type} option.
+
+
+@end table
+
+@ifset isman
+@mansect see also
+@command{dirmngr}(8),
+@command{gpgsm}(1)
+@include see-also-note.texi
+@end ifset
+@end ifset
 
 @c
 @c   GPGPARSEMAIL
@@ -1389,7 +1679,7 @@ configured with @samp{--enable-symcryptrun} at build time.
 @command{symcryptrun} is invoked this way:
 
 @example
-symcryptrun --class CLASS --program PROGRAM --keyfile KEYFILE 
+symcryptrun --class CLASS --program PROGRAM --keyfile KEYFILE
    [--decrypt | --encrypt] [inputfile]
 @end example
 @mancont
@@ -1399,14 +1689,14 @@ argument @var{inputfile}, and the ciphertext will be output to STDOUT.
 For decryption vice versa.
 
 @var{CLASS} describes the calling conventions of the external tool.
-Currently it must be given as @samp{confucius}.  @var{PROGRAM} is the
+Currently it must be given as @samp{confucius}.  @var{PROGRAM} is
 the full filename of that external tool.
+
 For the class @samp{confucius} the option @option{--keyfile} is
 required; @var{keyfile} is the name of a file containing the secret key,
 which may be protected by a passphrase.  For detailed calling
 conventions, see the source code.
+
 @noindent
 Note, that @command{gpg-agent} must be running before starting
 @command{symcryptrun}.
@@ -1418,7 +1708,7 @@ The following additional options may be used:
 @item -v
 @itemx --verbose
 @opindex verbose
-Output additional information while running.  
+Output additional information while running.
 
 @item -q
 @item --quiet
@@ -1432,7 +1722,7 @@ Try to be as quiet as possible.
 @item --log-file @var{file}
 @opindex log-file
 Append all logging output to @var{file}.  Default is to write logging
-informaton to STDERR.
+information to STDERR.
 
 @end table
 
@@ -1440,22 +1730,163 @@ informaton to STDERR.
 The possible exit status codes of @command{symcryptrun} are:
 
 @table @code
-@item 0 
+@item 0
         Success.
-@item 1 
+@item 1
         Some error occured.
-@item 2 
+@item 2
         No valid passphrase was provided.
-@item 3 
+@item 3
         The operation was canceled by the user.
 
 @end table
 
 @mansect see also
 @ifset isman
-@command{gpg}(1), 
-@command{gpgsm}(1), 
-@command{gpg-agent}(1), 
+@command{gpg}(1),
+@command{gpgsm}(1),
+@command{gpg-agent}(1),
 @end ifset
 @include see-also-note.texi
 
+
+@c
+@c  GPG-ZIP
+@c
+@c The original manpage on which this section is based was written
+@c by Colin Tuckley  <colin@tuckley.org> and Daniel Leidert
+@c <daniel.leidert@wgdd.de> for the Debian distribution (but may be used by
+@c others).
+@manpage gpg-zip.1
+@node gpg-zip
+@section Encrypt or sign files into an archive
+@ifset manverb
+.B gpg-zip \- Encrypt or sign files into an archive
+@end ifset
+
+@mansect synopsis
+@ifset manverb
+.B  gpg-zip
+.RI [ options ]
+.I filename1
+.I [ filename2, ... ]
+.I directory1
+.I [ directory2, ... ]
+@end ifset
+
+@mansect description
+@command{gpg-zip} encrypts or signs files into an archive.  It is an
+gpg-ized tar using the same format as used by PGP's PGP Zip.
+
+@manpause
+@noindent
+@command{gpg-zip} is invoked this way:
+
+@example
+gpg-zip [options] @var{filename1} [@var{filename2}, ...] @var{directory} [@var{directory2}, ...]
+@end example
+
+@mansect options
+@noindent
+@command{gpg-zip} understands these options:
+
+@table @gnupgtabopt
+
+@item --encrypt
+@itemx -e
+@opindex encrypt
+Encrypt data.  This option may be combined with @option{--symmetric} (for  output that may be decrypted via a secret key or a passphrase).
+
+@item --decrypt
+@itemx -d
+@opindex decrypt
+Decrypt data.
+
+@item --symmetric
+@itemx -c
+Encrypt with a symmetric cipher using a passphrase.  The default
+symmetric cipher used is CAST5, but may be chosen with the
+@option{--cipher-algo} option to @command{gpg}.
+
+@item --sign
+@itemx -s
+Make a signature.  See @command{gpg}.
+
+@item --recipient @var{user}
+@itemx -r @var{user}
+@opindex recipient
+Encrypt for user id @var{user}. See @command{gpg}.
+
+@item --local-user @var{user}
+@itemx -u @var{user}
+@opindex local-user
+Use @var{user} as the key to sign with.  See @command{gpg}.
+
+@item --list-archive
+@opindex list-archive
+List the contents of the specified archive.
+
+@item --output @var{file}
+@itemx -o @var{file}
+@opindex output
+Write output to specified file @var{file}.
+
+@item --gpg @var{gpgcmd}
+@opindex gpg
+Use the specified command @var{gpgcmd} instead of @command{gpg}.
+
+@item --gpg-args @var{args}
+@opindex gpg-args
+Pass the specified options to @command{gpg}.
+
+@item --tar @var{tarcmd}
+@opindex tar
+Use the specified command @var{tarcmd} instead of @command{tar}.
+
+@item --tar-args @var{args}
+@opindex tar-args
+Pass the specified options to @command{tar}.
+
+@item --version
+@opindex version
+Print version of the program and exit.
+
+@item --help
+@opindex help
+Display a brief help page and exit.
+
+@end table
+
+@mansect diagnostics
+@noindent
+The program returns 0 if everything was fine, 1 otherwise.
+
+
+@mansect examples
+@ifclear isman
+@noindent
+Some examples:
+
+@end ifclear
+@noindent
+Encrypt the contents of directory @file{mydocs} for user Bob to file
+@file{test1}:
+
+@example
+gpg-zip --encrypt --output test1 --gpg-args  -r Bob mydocs
+@end example
+
+@noindent
+List the contents of archive @file{test1}:
+
+@example
+gpg-zip --list-archive test1
+@end example
+
+
+@mansect see also
+@ifset isman
+@command{gpg}(1),
+@command{tar}(1),
+@end ifset
+@include see-also-note.texi