22 \h'-\w'\\$1\ 'u'\\$1\ \c
27 .TH catsign 1 "17 March 2005" "Straylight/Edgeware" "Catacomb cryptographic library"
29 catsign \- sign and verify messages
112 command signs and verifies messages. It also works as a simple PEM
113 encoder and decoder. It provides a number of subcommands, by which the
114 various operations may be carried out.
116 Before the command name,
118 may be given. The following global options are supported:
120 .BR "\-h, \-\-help " [ \fIcommand ...]
121 Writes a brief summary of
123 various options to standard output, and returns a successful exit
124 status. With command names, gives help on those commands.
126 .B "\-v, \-\-version"
127 Writes the program's version number to standard output, and returns a
128 successful exit status.
131 Writes a very terse command line summary to standard output, and returns
132 a successful exit status.
134 .BI "\-k, \-\-keyring " file
135 Names the keyring file which
137 is to process. The default keyring, used if this option doesn't specify
138 one, is the file named
140 in the current directory. See
144 for more details about keyring files.
146 Algorithms to be used with a particular key are described by attributes
147 on the key, or its type. The
149 command deals with signing keys. (Note that
151 uses signing keys in the same way as
162 attribute is present on the key, then it must have this form; otherwise,
163 the key's type must have the form
166 Algorithm selections are taken from appropriately-named attributes, or,
167 failing that, from the
170 The signature algorithm is chosen according to the setting of
174 for a list of supported signature algorithms.
177 This is almost the same as the RSASSA-PKCS1-v1_5 algorithm described in
178 RFC3447; the difference is that the hash is left bare rather than being
179 wrapped in a DER-encoded
181 structure. This doesn't affect security since the key can only be used
182 with the one hash function anyway, and dropping the DER wrapping permits
183 rapid adoption of new hash functions. Regardless, use of this algorithm
184 is not recommended, since the padding method has been shown vulnerable
194 This is the RSASSA-PSS algorithm described in RFC3447. It is the
195 preferred RSA-based signature scheme. Use the
204 This is the DSA algorithm described in FIPS180-1 and FIPS180-2. Use the
213 This is the ECDSA algorithm described in ANSI X9.62 and FIPS180-2. Use
223 This is the revised KCDSA (Korean Certificate-based Digital Signature
224 Algorithm) described in
225 .I The Revised Version of KCDSA
226 .RB ( http://dasan.sejong.ac.kr/~chlim/pub/kcdsa1.ps ).
238 This is an unofficial elliptic-curve analogue of the KCDSA algorithm.
247 As well as the signature algorithm itself, a hash function is used.
248 This is taken from the
250 attribute on the key, or, failing that, from the
254 or, if that is absent, determined by the signature algorithm as follows.
262 the default hash function is
269 the default hash function is
274 for a list of supported hash functions.
276 Two encodings for the ciphertext are supported.
279 The raw format, which has the benefit of being smaller, but needs to be
280 attached to mail messages and generally handled with care.
283 PEM-encapsulated Base-64 encoded text. This format can be included
284 directly in email and picked out again automatically; but there is a
285 4-to-3 data expansion as a result.
286 .SH "SIGNATURE FORMATS"
287 There are two basic signature formats understood by
290 Embedded signatures include (embed) the message they sign; hence they're
291 complete in and of themselves. The
293 program extracts the message during signature verification.
295 Detached signatures are separate from the messages they sign, and both
296 the original file and the signature are required for a successful
299 Another important distinction is whether the message data is considered
300 to be plain text or raw binary data.
302 When dealing with plain text,
304 allows a limited quantity of leeway in the messages it processes. It
305 ignores trailing whitespace on a line, including stray carriage-returns,
306 which may appear if Windows boxes have had their way with the data. It
307 also appends a final newline if there wasn't one before. In embedded
308 signatures, the text is left unencoded, so that the message is readable.
310 Binary files are preserved completely, and no variation whatever is
317 command can convert between detached and embedded signatures; it cannot
318 convert between binary and text mode signatures. (The data actually
319 signed includes a flag saying whether the message is textual. The
320 rationale here is that what looks like an ASCII space before a newline
321 may be devastatingly significant in a binary data file, and if a message
322 is signed as raw binary then no changes whatever should be allowed.)
323 .SH "COMMAND REFERENCE"
327 command behaves exactly as the
329 option. With no arguments, it shows an overview of
331 options; with arguments, it describes the named subcommands.
335 command prints various lists of tokens understood by
337 With no arguments, it prints all of the lists; with arguments, it prints
338 just the named lists, in order. The recognized lists can be enumerated
343 command. The lists are as follows.
346 The lists which can be enumerated by the
351 The signature algorithms which can be used in a signing key's
356 The hash functions which can be used in a key's
361 The encodings which can be applied to encrypted messages; see
367 command signs a message and writes out an appropriately-encoded
368 signature. By default, it reads a message from standard input and
369 writes the signature to standard output. If a filename argument is
370 given, this file is read instead.
372 The following options are recognized.
375 Produce ASCII-armoured output. This is equivalent to specifying
382 Read and sign the input as binary data. The default is to treat the
386 Produce a detached signature. The default is to produce a signature
387 with embedded message.
389 .BI "\-f, \-\-format " format
390 Produce output encoded according to
393 .BI "\-k, \-\-key " tag
394 Use the signing key named
396 in the current keyring; the default key is
399 .BI "\-o, \-\-ouptut " file
402 rather than to standard output.
405 Read and sign the input as text. This is the default.
409 command checks a signature's validity, producing as output information
410 about the signature and the signed message.
412 The first non-option argument is the name of the file containing the
413 signature data; this may be omitted or
415 to indicate that the signature be read from standard input. The second
416 non-option argument, if any, is the name of the file to read the message
417 from, if the signature is detached. An error is reported if a message
418 file is specified but the signature contains an embedded message
419 already; if the signature is detached but no filename is given, then the
420 message is expected on stdin (immediately after the signature, if any).
423 Read ASCII-armoured input. This is equivalent to specifying
430 Buffer the message until the signature is verified. This is forced on
431 if output is to stdout, but is always available as an option.
433 .BI "\-f, \-\-format " format
434 Read input encoded according to
437 .B "\-v, \-\-verbose"
438 Produce more verbose messages. See below for the messages produced
439 during decryption. The default verbosity level is 1. (Currently this
440 is the most verbose setting. This might not be the case always.)
443 Produce fewer messages.
445 .BI "\-k, \-\-key " tag
448 uses the signature header to work out which key to use to verify a
449 signature. Using this option causes verification to fail unless the
450 signature header specifies the key named
453 .BI "\-t, \-\-freshtime " time
454 Only accept signatures claiming to have been made more recently than
460 (the default) then any timestamp in the past is acceptable.
463 Show the datestamp in the signature in UTC rather than (your) local
468 .BI "\-o, \-\-output " file
469 Write the verified message to
471 The file is written in text or binary
472 mode as appropriate. The default is to write the message to standard
473 output unless verifying a detached signature, in which case nothing is
476 Output is written to standard output in a machine-readable format.
477 Major problems cause the program to write a diagnostic to standard error
478 and exit nonzero as usual. The quantity of output varies depending on
479 the verbosity level and whether the message is also being written to
480 standard output. Output lines begin with a keyword:
483 An error prevented verification. The program will exit nonzero.
487 encountered a situation which may or may not invalidate the
491 Verification was successful. This is only produced if the message is
492 being sent somewhere other than standard output.
495 The message follows, starting just after the next newline character or
496 sequence. This is only produced if the message is being written to
500 Any other information.
502 The information written at the various verbosity levels is as follows.
504 No output. Watch the exit status.
509 All output written has been checked for authenticity. However, output
510 can fail madway through for many reasons, and the resulting message may
511 therefore be truncated. Don't rely on the output being complete until
519 command analyses a signature without verifying it, and prints
520 interesting information about it. This might be useful for diagnostic
521 purposes. No keys are needed for this operation, though you get more
522 useful information if you have them.
524 If a non-option argument is given, and it is not
526 then it is taken to name the file containing the signature to parse;
527 otherwise a signature is read from standard input.
529 The following options are recognized.
532 Read ASCII-armoured input. This is equivalent to specifying
538 .BI "\-f, \-\-format " format
539 Read input encoded according to
543 Show the datestamp in the signature in UTC rather than (your) local
548 A description of the signature block is produced on standard output; it
549 is mostly machine-readable. The first word on each line explains what
550 kind of output it is.
553 The signature data is invalid and cannot be parsed.
556 Something is wrong with the data, but isn't fatal.
559 An environmental problem means that the information isn't as helpful as
560 it might be. For example, the keyring file can't be opened, so we don't
561 know whether the verification key is there.
563 .BI "INFO flags " flags
564 Describes the flags set in the signature header. The
566 are a list of flags, one per word, preceded by a
568 if the flag is clear.
570 .BI "INFO expected-flags " flags
571 If the PEM boundary string didn't match the actual signature data then
572 this line is output, listing the expected flags and their settings.
573 Problems with boundary mismatches can be resolved using the
577 .BI "INFO date " yyyy "\-" mm "\-" dd " " hh ":" mm ":" ss " " tz
578 Signature was (allegedly!) made at the given time and date. If the
580 option was given, this will be in UTC.
583 Signature was (allegedly!) made using the key
585 which is present in the current keyring.
587 .BI "INFO unknown-key " keyid
588 Signature was (allegedly!) made using the key with id
590 which is not in the current keyring (or the keyring wasn't found).
594 command translates signatures between the various supported formats.
595 This is a (slightly) more complex operation than re-encoding, though it
596 does not require any cryptographic operations.
598 The first non-option argument is the name of the file containing the
599 signature data; this may be omitted or
601 to indicate that the signature be read from standard input. The second
602 non-option argument, if any, is the name of the file to read the message
603 from, if the signature is detached. An error is reported if a message
604 file is specified but the signature contains an embedded message
605 already; if the signature is detached but no filename is given, then the
606 message is expected on stdin (immediately after the signature, if any).
608 The options follow a rough convention: options describing the input
609 format are lower-case and options specifying the output format are
610 upper-case. The following options are recognized.
612 .BI "\-a, \-\-armour-in"
613 Read ASCII-armoured input. This is equivalent to specifying
619 .BI "\-A, \-\-armour-out"
620 Produce ASCII-armoured output. This is equivalent to specifying
627 Produce a detached signature. This may be used to detach a signature
628 from an embedded message.
631 Produce a signature with embedded message. This may be used to
632 reattach a message to its detached signature.
634 .BI "\-f, \-\-format-in " format
635 Read input encoded according to
638 .BI "\-F, \-\-format-out " format
639 Produce output encoded according to
642 .BI "\-m, \-\-message " file
649 then write the message to standard output. Don't send the message and
650 signature to the same place because it doesn't work.
652 .BI "\-o, \-\-output " file
653 Write the signature to
659 option is given, a signature is written to standard output.
663 command encodes an input file according to one of the encodings
666 The input is read from the
668 given on the command line, or from standard input if none is specified.
669 Options provided are:
671 .BI "\-f, \-\-format " format
676 for a list of encoding formats.
678 .BI "\-b, \-\-boundary " label
679 Set the PEM boundary string to
681 i.e., assuming we're encoding in PEM format, the output will have
682 .BI "\-\-\-\-\-BEGIN " label "\-\-\-\-\-"
684 .BI "\-\-\-\-\-END " label "\-\-\-\-\-"
685 at the bottom. The default
690 .BI "\-o, \-\-output " file
693 instead of to standard output.
697 command decodes an input file encoded according to one of the encodings
700 The input is read from the
702 given on the command line, or from standard input if none is specified.
703 Options provided are:
705 .BI "\-f, \-\-format " format
710 for a list of encoding formats.
712 .BI "\-b, \-\-boundary " label
713 Set the PEM boundary string to
715 i.e., assuming we're encoding in PEM format, start processing input
717 .BI "\-\-\-\-\-BEGIN " label "\-\-\-\-\-"
719 .BI "\-\-\-\-\-END " label "\-\-\-\-\-"
720 lines. Without this option,
722 will start reading at the first plausible boundary string, and continue
723 processing until it reaches the matching end boundary.
725 .BI "\-o, \-\-output " file
728 instead of to standard output.
730 The trailing-whitespace deletion doesn't work for more than 32K of
731 whitespace. I don't think this is a big problem, really.
735 command does something unhelpful if message and signature are sent to
744 Mark Wooding, <mdw@distorted.org.uk>