Provided by: inn2_2.7.2~20230806-1_amd64 bug

NAME

       pgpverify - Cryptographically verify Usenet control messages

SYNOPSIS

       pgpverify [--findid=string] [--test] < message

DESCRIPTION

       The pgpverify program reads (on standard input) a Usenet control message that has been
       cryptographically signed using the signcontrol program (or some other program that
       produces a compatible format).  pgpverify then uses a PGP implementation to determine who
       signed the control message.  If the control message has a valid signature, pgpverify
       prints (to stdout) the user ID of the key that signed the message.  Otherwise, it exits
       with a non-zero exit status.

       If pgpverify is installed as part of INN, it uses INN's configuration to determine what
       signature verification program to use, how to log errors, what temporary directory to use,
       and what keyring to use.  Otherwise, all of those parameters can be set by editing the
       beginning of this script.

       By default, when running as part of INN, pgpverify expects the PGP key ring to be found in
       pathetc/pgp (as either pubring.pgp or pubring.gpg depending on whether PGP or GnuPG is
       used to verify signatures).  If that directory doesn't exist, it will fall back on using
       the default key ring, which is in a .pgp or .gnupg subdirectory of the running user's home
       directory.

       INN, when using GnuPG, configures pgpverify to use gpg or gpgv, which by default expects
       keys to be in a keyring named trustedkeys.gpg, since it doesn't implement trust checking
       directly.  pgpverify uses that file if present but falls back to pubring.gpg if it's not
       found.  This bypasses the trust model for checking keys, but is compatible with the way
       that pgpverify used to behave.  Of course, if a keyring is found in pathetc/pgp or
       configured at the top of the script, that overrides all of this behavior.

       Note that a few Usenet hierarchies still send control articles signed with old PGP keys
       using a weak hash algorithm (MD5).  Modern versions of GnuPG (2.1.0+) no longer validate
       such signatures, so you should use GnuPG 1.x or 2.0.x if you need verifying such control
       articles.

OPTIONS

       --findid=string
           The --findid flag causes pgpverify to explicitly search for string in the output from
           PGP's analysis of the message.  This option is useful when several UIDs are defined on
           a single PGP key, and the caller to pgpverify needs checking whether a given one is
           defined on this key.  In case the signature is valid but does not contain string,
           pgpverify exits with exit status 4.

       --test
           The --test flag causes pgpverify to print out the input that it is passing to PGP
           (which is a reconstructed version of the input that supposedly created the control
           message) as well as the output from PGP's analysis of the message.

EXIT STATUS

       pgpverify may exit with the following statuses:

       0   The control message had a good PGP signature.

       1   The control message had no PGP signature.

       2   The control message had an unknown PGP signature.

       3   The control message had a bad PGP signature.

       4   The control message had a good PGP signature but the argument given to the --findid
           flag had non been found in the output from PGP's analysis of the message.

       255 A problem occurred not directly related to PGP analysis of signature.

ENVIRONMENT

       pgpverify does not modify or otherwise alter the environment before invoking the pgp, gpgv
       or gpg program.  It is the responsibility of the person who installs pgpverify to ensure
       that when pgp, gpgv or gpg runs, it has the ability to locate and read a PGP key file that
       contains the PGP public keys for the appropriate Usenet hierarchy administrators.
       pgpverify can be pointed to an appropriate key ring by editing variables at the beginning
       of this script.

NOTES

       Historically, Usenet news server administrators have configured their news servers to
       automatically honor Usenet control messages based on the originator of the control
       messages and the hierarchies for which the control messages applied.  For example, in the
       past, David Lawrence always issued control messages for the "Big 8" hierarchies (comp,
       humanities, misc, news, rec, sci, soc, talk).  Usenet news administrators would configure
       their news server software to automatically honor newgroup and rmgroup control messages
       that originated from David Lawrence and applied to any of the Big 8 hierarchies.

       Unfortunately, Usenet news articles (including control messages) are notoriously easy to
       forge.  Soon, malicious users realized they could create or remove (at least temporarily)
       any Big 8 newsgroup they wanted by simply forging an appropriate control message in David
       Lawrence's name.  As Usenet became more widely used, forgeries became more common.

       The pgpverify program was designed to allow Usenet news administrators to configure their
       servers to cryptographically verify control messages before automatically acting on them.
       Under the pgpverify system, a Usenet hierarchy maintainer creates a PGP public/private key
       pair and disseminates the public key.  Whenever the hierarchy maintainer issues a control
       message, he uses the signcontrol program to sign the control message with the PGP private
       key.  Usenet news administrators configure their news servers to run the pgpverify program
       on the appropriate control messages, and take action based on the PGP key User ID that
       signed the control message, not the name and address that appear in the control message's
       From: or Sender: headers.

       Thus, appropriate use of the signcontrol and pgpverify programs essentially eliminates the
       possibility of malicious users forging Usenet control messages that sites will act upon,
       as such users would have to obtain the PGP private key in order to forge a control message
       that would pass the cryptographic verification step.  If the hierarchy administrators
       properly protect their PGP private keys, the only way a malicious user could forge a
       validly-signed control message would be by breaking the public key encryption algorithm,
       which (at least at this time) is believed to be prohibitively difficult for PGP keys of a
       sufficient bit length.

HISTORY

       pgpverify was written by David C Lawrence <tale@isc.org>.  Manual page provided by James
       Ralston.  It is currently maintained by Russ Allbery <eagle@eyrie.org>.

COPYRIGHT AND LICENSE

       David Lawrence wrote:  "Our lawyer told me to include the following.  The upshot of it is
       that you can use the software for free as much as you like."

       Copyright (c) 1996 UUNET Technologies, Inc.  All rights reserved.

       Redistribution and use in source and binary forms, with or without modification, are
       permitted provided that the following conditions are met:

       1.  Redistributions of source code must retain the above copyright notice, this list of
           conditions and the following disclaimer.

       2.  Redistributions in binary form must reproduce the above copyright notice, this list of
           conditions and the following disclaimer in the documentation and/or other materials
           provided with the distribution.

       3.  All advertising materials mentioning features or use of this software must display the
           following acknowledgement:

             This product includes software developed by UUNET Technologies, Inc.

       4.  The name of UUNET Technologies ("UUNET") may not be used to endorse or promote
           products derived from this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY UUNET "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
       INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
       PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL UUNET BE LIABLE FOR ANY DIRECT,
       INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
       LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
       BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
       STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
       THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

SEE ALSO

       gpg(1), gpgv(1), pgp(1).

       <https://ftp.isc.org/pub/pgpcontrol/> is where the most recent versions of signcontrol and
       pgpverify live, along with PGP public keys used for hierarchy administration.