Provided by: sopv-doc_1.1.0-1_all bug

NAME

       sopv - Verify OpenPGP signatures

SYNOPSIS

       sopv [--debug] subcommand

DESCRIPTION

       sopv  is  the  verification-only  subset  of  the OpenPGP Stateless Command Line Interface, also known as
       "SOP".

       sopv is designed to verify OpenPGP signatures. It can  verify  detached  signatures  as  well  as  inline
       signatures. The caller indicates which signers are acceptable by supplying a set of OpenPGP certificates.

EXAMPLES

       $ sopv version
       ExampleSop 2.3.0
       $ sopv verify libfoo-3.1.2.tgz.sig libfoo-keys.pgp < libfoo-3.1.2.tgz
       2025-02-03T0:02:25Z 8CD219FC05D9DE9F3D59B784160B8EF5536B0D27 8CD219FC05D9DE9F3D59B784160B8EF5536B0D27 mode:binary {"signers":["libfoo-keys.pgp"]}
       $ sopv inline-verify --verifications-out=verifs.txt alice.cert < alice-message.csf
       This is a message from Alice
       $ cat verifs.txt
       2025-02-13T00:04:49Z 63339423454CA210DAA886C08723C4D38E0802F6 F255F2A602AC1DFF2331085E5DAE32C783FC418D mode:text {"signers":["alice.cert"]}
       $

       To do something only when a detached signature is valid:

           if sopv verify libfoo-3.1.2.tgz.sig libfoo-keys.pgp < libfoo-3.1.2.tgz > /dev/null; then
             # The software was signed correctly ...
           fi

       To do something only when an inline signature is valid:

           if sopv inline-verify alice.cert < alice-message.csf > alice.message; then
             # alice.message is data that was signed by alice ...
           fi

SUBCOMMANDS

       Exactly one subcommand must be supplied.

       sopv version
              Get   version,   build,   and   compatibility  information  about  the  sopv  implementation.  See
              sopv-version(1) for more information.

       sopv verify
              Verify detached OpenPGP signatures over a message. See sopv-verify(1) for more information.

       sopv inline-verify
              Verify an inline-signed OpenPGP message. See sopv-inline-verify(1) for more information.

COMMON OPTIONS

       All sopv subcommands accept this option.

       --debug
              Emit more detailed output on standard error, if available.

       Each subcommand also has its own distinct options and arguments, see the corresponding manual page.

INPUT DATA TYPES

       Some sopv subcommands take data types as inputs, either as arguments or on standard input.

       DATE   Dates are represented directly in ISO-8601-compliant  format,  in  UTC  with  the  Z  suffix.  For
              example, 2025-02-12T05:22:33Z

       CERTS  A  collection  of OpenPGP certificates, also known as "Transferable Public Keys". Each CERTS input
              may be unarmored, or may use OpenPGP ASCII armor.

       SIGNATURES
              A collection of OpenPGP signatures. Each SIGNATURES input may be unarmored,  or  may  use  OpenPGP
              ASCII armor.

       INLINESIGNED
              An  OpenPGP Signed Message or a text document that is signed internally with the OpenPGP Cleartext
              Signing Framework. An OpenPGP Signed Message input may be unarmored,  or  may  use  OpenPGP  ASCII
              armor.

VERIFICATIONS

       In  some  cases,  sopv  emits  a VERIFICATIONS text stream, which contains a concise description of every
       valid OpenPGP signature discovered.

       Each line in a VERIFICATIONS stream represents a valid signature from an acceptable signer. There are  at
       least  three  fixed  fields  which  are  separated  from  one  another  and  the final optional fields by
       whitespace.

       The fields are, in order:

       timestamp
              The time of the signature, in ISO-8601 date format, in UTC.

       signing_key_fingerprint
              The fingerprint of the signing key (may be a primary key or a signing-capable subkey).

       primary_key_fingerprint
              The fingerprint of the primary key of the OpenPGP certificate that contains the signing  key  (may
              be the same as the signing key)

       signing_mode
              This optional field is either mode:text or mode:binary.

       optional_additional_data
              If signing_mode is present, the final optional field extends to the end of the line, and is either
              free-form  text,  or  a  JSON object. If it starts with { it is a JSON object. The JSON object may
              contain a "signers" member, which is a JSON list of the names of each CERTS object that could have
              authored the signature.

SPECIAL DESIGNATORS

       Wherever a CERTS or SIGNATURES or VERIFICATIONS object is pointed to on the command line, it is typically
       presented as a path to a filename. In addition, sopv should also accept a special  designator,  which  is
       any string starting with a @ character.

       There are two established kinds of special designator:

       @FD:nnn
              This  means  to read from or write to the file descriptor identified numerically by nnn. Note that
              this is also a valid argument for --verifications-out in sop inline-verify. It can be  used  there
              to operate sopv on an entirely read-only filesystem.

       @ENV:varname
              This means to read the value from the environment variable named varname. Note that typically only
              text-based  data  is  transmittable  in this way; a CERTS argument should be armored, for example.
              Note also that this can only be used for input to sopv, not output (as sopv cannot set the  values
              in its callers' environment).

       If  you  want  to  refer  to  a file in the filesystem whose name actually begins with an @ (for example,
       @foo), you should indicate that file to sopv using ./@foo to avoid an AMBIGUOUS_INPUT error.

VERSION HISTORY

       The sopv specification keeps a  version  history  similar  to  semantic  versioning  https://semver.org/.
       Implementations indicate their compliance with a specific level of the spec with sopv version --sopv (see
       sopv-version(1))

       1.0    The  subcommands  version,  verify,  and  inline-verify.  The  common argument --debug (even if it
              produces no additional  messages  to  stderr).  sopv  version  arguments  --extended,  --sop-spec,
              --backend,  --sopv.  For  sopv  verify  and  sopv  inline-verify,  the  arguments --not-before and
              --not-after. For sopv inline-verify, the --verifications-out argument. Special  designators  @ENV:
              and @FD: for any CERTS and SIGNATURES input. Special designator @FD: for any VERIFICATIONS output.
              At least the first three fields in any VERIFICATIONS output.

       1.1    Everything   from   1.0.   Additionally,  the  VERIFICATIONS  output  includes  the  fourth  field
              (signing_mode), and the final field of VERIFICATIONS is  a  JSON  object  containing  at  least  a
              "signers" member as described above.

RETURN CODES

       sopv indicates success by returning 0.

       A  failure  is  indicated  by  returning  any non-zero return code, often using values from the following
       table.
       ┌───────┬────────────────────────────┬───────────────────────────────────────────────────────────┐
       │ Value │ Mnemonic                   │ Meaning                                                   │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 0     │ OK                         │ Success                                                   │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 1     │ UNSPECIFIED_FAILURE        │ An otherwise unspecified failure occurred                 │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 3     │ NO_SIGNATURE               │ No acceptable signatures found                            │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 19    │ MISSING_ARG                │ Missing required argument                                 │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 37    │ UNSUPPORTED_OPTION         │ Unsupported option                                        │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 41    │ BAD_DATA                   │ Invalid data type (secret key where CERTS expected, etc)  │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 59    │ OUTPUT_EXISTS              │ Output file already exists                                │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 61    │ MISSING_INPUT              │ Input file does not exist                                 │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 69    │ UNSUPPORTED_SUBCOMMAND     │ Unsupported subcommand                                    │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 71    │ UNSUPPORTED_SPECIAL_PREFIXsopv does not know how to handle the special designator   │
       ├───────┼────────────────────────────┼───────────────────────────────────────────────────────────┤
       │ 73    │ AMBIGUOUS_INPUT            │ A file with the name of the special designator is present │
       └───────┴────────────────────────────┴───────────────────────────────────────────────────────────┘

       Details about warnings or errors may also be emitted to standard error.

AUTHOR

       This manual page was written by Daniel Kahn Gillmor. Your implementation of sopv  is  likely  written  by
       someone  else  in  alignment with the SOP specification. Please run sopv version to learn more about your
       implementation.

SEE ALSO

       sopv-version(1),  sopv-verify(1),  sopv-inline-verify(1),  Stateless  OpenPGP  Command   Line   Interface
       https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/,                RFC                9580
       https://www.rfc-editor.org/rfc/rfc9580.html

sopv 1.1                                          February 2025                                          SOPV(1)