Remove buf bits which moved to mLib. Fix email addresses.
[u/mdw/catacomb] / key.1
1 .\" -*-nroff-*-
2 .ie t \{\
3 . if \n(.g \{\
4 . fam P
5 . \}
6 . ds ss \s8\u
7 . ds se \d\s0
8 . ds us \s8\d
9 . ds ue \u\s0
10 . ds *b \(*b
11 .\}
12 .el \{\
13 . ds ss ^
14 . ds se
15 . ds us _
16 . ds ue
17 . ds *b \fIbeta\fP
18 .\}
19 .de VS
20 .sp 1
21 .RS
22 .nf
23 .ft B
24 ..
25 .de VE
26 .ft R
27 .fi
28 .RE
29 .sp 1
30 ..
31 .TH key 1 "5 June 1999" "Straylight/Edgeware" "Catacomb cryptographic library"
32 .SH NAME
33 key \- simple key management system
34 .SH SYNOPSIS
35 .B key
36 .RB [ \-k
37 .IR keyring ]
38 .I command
39 .PP
40 where
41 .I command
42 is one of:
43 .PP
44 .B help
45 .RI [ command ...]
46 .br
47 .B show
48 .RI [ item ...]
49 .br
50 .B add
51 .RB [ \-lqrLS ]
52 .RB [ \-a
53 .IR alg ]
54 .RB [ \-b | \-B
55 .IR bits ]
56 .RB [ \-p
57 .IR param ]
58 .RB [ \-R
59 .IR tag ]
60 .br
61 \h'8n'
62 .RB [ \-A
63 .IR seed-alg ]
64 .RB [ \-s
65 .IR seed ]
66 .RB [ \-n
67 .IR bits ]
68 .br
69 \h'8n'
70 .RB [ \-e
71 .IR expire ]
72 .RB [ \-t
73 .IR tag ]
74 .RB [ \-c
75 .IR comment ]
76 .RB [ \-C
77 .IR curve ]
78 .br
79 \h'8n'
80 .I type
81 .IR attr ...
82 .br
83 .B expire
84 .IR tag ...
85 .br
86 .B delete
87 .IR tag ...
88 .br
89 .B tag
90 .I tag
91 .RI [ new-tag ]
92 .br
93 .B comment
94 .I tag
95 .RI [ comment ]
96 .br
97 .B setattr
98 .I tag
99 .IR attr ...
100 .br
101 .B lock
102 .I qtag
103 .br
104 .B unlock
105 .I qtag
106 .br
107 .B list
108 .RB [ \-uqv ]
109 .RB [ \-f
110 .IR filter ]
111 .RI [ tag ...]
112 .br
113 .B fingerprint
114 .RB [ \-f
115 .IR filter ]
116 .RB [ \-a
117 .IR hash ]
118 .RI [ tag ...]
119 .br
120 .B verify
121 .RB [ \-f
122 .IR filter ]
123 .RB [ \-a
124 .IR hash ]
125 .I tag
126 .I fingerprint
127 .br
128 .B tidy
129 .br
130 .B extract
131 .RB [ \-f
132 .IR filter ]
133 .I file
134 .RI [ tag ...]
135 .br
136 .B merge
137 .I file
138 .SH DESCRIPTION
139 The
140 .B key
141 command performs useful operations on Catacomb keyring files. It
142 provides a number of subcommands, by which the various operations may be
143 carried out.
144 .SS "Global options"
145 Before the command name,
146 .I "global options"
147 may be given. The following global options are supported:
148 .TP
149 .BR "\-h, \-\-help " [ \fIcommand ...]
150 Writes a brief summary of
151 .BR key 's
152 various options to standard output, and
153 returns a successful exit status. With command names, gives help on
154 those commands.
155 .TP
156 .B "\-v, \-\-version"
157 Writes the program's version number to standard output, and returns a
158 successful exit status.
159 .TP
160 .B "\-u, \-\-usage"
161 Writes a very terse command line summary to standard output, and returns
162 a successful exit status.
163 .TP
164 .BI "\-k, \-\-keyring " file
165 Names the keyring file which
166 .B key
167 is to process. The default keyring, used if this option doesn't specify
168 one, is the file named
169 .B keyring
170 in the current directory. The keyring must be stored in a regular file:
171 pipes, sockets, devices etc. are not allowed.
172 The
173 .B key
174 program attempts to lock the keyring before accessing it, using
175 .BR fcntl (2)
176 locking. It will however time out after a short while (10 seconds) and
177 report a failure.
178 .SS Concepts
179 In addition to the actual key data itself, a Catacomb key has a number
180 of other pieces of information attached to it:
181 .TP
182 .B "keyid"
183 Every key has a 32-bit identifying number, written in hexadecimal.
184 Keyids are not actually related to the key contents: they're generated
185 randomly. Applications use keyids to refer to specific keys; users are
186 probably better off with tags and types. A
187 .I deleted
188 key cannot be looked up by keyid.
189 .TP
190 .B "tag"
191 A key's tag is a unique string which can be used by users and
192 applications to identify the key. Tag strings may not contain spaces,
193 colons or dots. A
194 .I deleted
195 key cannot be looked up by tag. Whenever a tag name is wanted, a hex
196 keyid or key type string can be given instead.
197 .TP
198 .B "type"
199 A key's type string describes what the key may be used for. The type
200 string is arbitrary, except that it may not contain whitespace
201 characters, dots or colons. Applications use key types to obtain an
202 arbitrary but suitable key for some purpose. An
203 .I expired
204 key cannot be looked up by type, but may be looked up by keyid or tag.
205 .TP
206 .B "key encoding"
207 There are a number of different ways in which keys can be represented,
208 according to the uses to which the key will be put. Most symmetric
209 algorithms use
210 .I binary
211 keys. Keys used with number-theoretic systems (like most common
212 public-key systems) use
213 .I "multiprecision integer"
214 keys. Elliptic curve systems use
215 .I "curve point"
216 keys, which are either a pair of integers representing field elements,
217 or a `point at infinity'. Algorithms which require several key
218 constituents (again, like most public-key systems) use
219 .I structured
220 keys, which consist of a collection of named parts. It's possible to
221 store an
222 .I "ASCII string"
223 as a key, though this is usually done as a component of a structured
224 key. Finally, keys (including structured keys) can be encrypted.
225 .TP
226 .B "filter"
227 Keys and key components may be selected by a filter expression, a
228 sequence of flag names separated by commas. Flags are:
229 .BR binary ,
230 .BR integer ,
231 .BR struct ,
232 .BR ec ,
233 .BR string ,
234 or
235 .B encrypt
236 (describing the key encoding);
237 .BR symmetric ,
238 .BR private ,
239 .BR public ,
240 or
241 .B shared
242 (describing the category of key);
243 .B burn
244 and its negation
245 .B \-burn
246 (whether the key should be erased from memory after use); and
247 .B secret
248 and its negation
249 .B \-secret
250 (whether the key is safe to divulge).
251 .TP
252 .B "qualified tag"
253 A key component may be identified by the key's tag (or keyid, or type).
254 Subcomponents of structured keys are identified by following the tag by
255 a dot and the name of the subcomponent.
256 .TP
257 .B "expiry time"
258 Most keys expire after a certain amount of time. Once a key has
259 expired, it will no longer be chosen as a result of a lookup by key
260 type. However, it is not deleted until its deletion time is also
261 reached.
262 .TP
263 .B "deletion time"
264 A key's deletion time is the latest expiry time of any of the objects
265 which require that key. For example, a key used for authenticating
266 cryptographic cookies should have its deletion time set to the longest
267 expiry time of any of the cookies it can authenticate. Once a key's
268 deletion time is passed, it can no longer be referred to by
269 applications, and will be removed from the keyring next time it's
270 written to disk.
271 .TP
272 .B "comment"
273 A key may be given a comment when it's created. The comment is for the
274 benefit of users, and isn't interpreted by applications at all.
275 (Hopefully.)
276 .TP
277 .B "attributes"
278 A key as zero or more name/value pairs. The names and values are
279 arbitrary strings, except they may not contain null bytes. Some
280 attributes may have meaning for particular applications or key types;
281 others may be assigned global meanings in future.
282 .SH "COMMAND REFERENCE"
283 .SS help
284 The
285 .B help
286 command behaves exactly as the
287 .B \-\-help
288 option. With no arguments, it shows an overview of
289 .BR key 's
290 options; with arguments, it describes the named subcommands.
291 .SS show
292 The
293 .B show
294 command prints various lists of tokens understood by
295 .BR key .
296 With no arguments, it prints all of the lists; with arguments, it prints
297 just the named lists, in order. The recognized lists can be enumerated
298 using the
299 .VS
300 key show list
301 .VE
302 command. The lists are as follows.
303 .TP
304 .B list
305 The lists which can be enumerated by the
306 .B show
307 command.
308 .TP
309 .B hash
310 The hash functions which can be used with the
311 .B fingerprint
312 and
313 .B verify
314 commands.
315 .TP
316 .B ec
317 The built-in elliptic curves which can be used with the
318 .B add \-a ec
319 command.
320 .TP
321 .B dh
322 The built-in Diffie-Hellman groups which can be used with the
323 .B add \-a dh
324 command.
325 .TP
326 .B keygen
327 The key-generation algorithms which are acceptable to the
328 .B \-a
329 option of the
330 .B add
331 command.
332 .TP
333 .B seed
334 The pseudorandom generators which are acceptable to the
335 .B \-s
336 option of the
337 .B add
338 command.
339 .SS add
340 The
341 .B add
342 command creates a new key and adds it to the keyring. The command
343 accepts the following options:
344 .TP
345 .BI "\-a, \-\-algorithm " alg
346 Selects a key generation algorithm. The default algorithm is
347 .BR binary ;
348 the different algorithms are described below. The command
349 .B key show keygen
350 lists the recognized key-generation algorithms.
351 .TP
352 .BI "\-b, \-\-bits " bits
353 The length of the key to generate, in bits. The default, if this option
354 is not supplied, depends on the key-generation algorithm.
355 .TP
356 .BI "\-B, \-\-qbits " bits
357 The length of the subsidiary key or parameter, in bits. Not all
358 key-generation algorithms have a subsidiary key size.
359 .TP
360 .BI "\-p, \-\-parameters " tag
361 Selects a key containing parameter values to copy. Not all
362 key-generation algorithms allow the use of shared parameters. A new key
363 also inherits attributes from its parameter key.
364 .TP
365 .BI "\-A, \-\-seedalg " seed-alg
366 Use the deterministic random number generator algorithm
367 .I seed-alg
368 to generate the key. Use
369 .I before
370 the
371 .B \-s
372 or
373 .B \-n
374 options; without one of these,
375 .B \-A
376 has no effect. The default algorithm is
377 .BR rmd160-mgf .
378 The command
379 .B key show seed
380 shows a list of recognized seeding algorithms. The seeding algorithm
381 used to generate a key is recorded as the key's
382 .B seedalg
383 attribute.
384 .TP
385 .BI "\-s, \-\-seed " seed
386 Generate the key deterministically using the given
387 .IR seed ,
388 which should be a Base64-encoded binary string. This is mainly useful
389 for parameters keys (types
390 .BR dsa-param
391 and
392 .BR dh-param ),
393 to demonstrate that a set of parameters has been generated in an honest
394 fashion. The
395 .B dsarand
396 generation algorithm can be used to generate
397 .B dsa-param
398 keys as required by FIPS186. The requested seed is recorded,
399 Base64-encoded, as the new key's
400 .B seed
401 attribute.
402 .TP
403 .BI "\-n, \-\-newseed " bits
404 Generate a new seed, with the given length in
405 .IR bits .
406 The generated seed is recorded, Base64-encoded, as the new key's
407 .B seed
408 attribute.
409 .TP
410 .BI "\-e, \-\-expire " expire
411 The expiry date for the generated key. This may be the string
412 .RB ` forever '
413 if the key should never expire automatically, or any date acceptable to
414 the
415 .BR getdate (3)
416 library function. Briefly,
417 .B getdate
418 understands absolute dates such as
419 .RB ` 1999-08-02 '
420 or
421 .RB ` "August 2nd, 1999" ',
422 and (perhaps more usefully) relative dates such as
423 .RB ` "+2 weeks" '.
424 The default is to allow a 2 week expiry, which isn't useful.
425 .TP
426 .BI "\-c, \-\-comment " comment
427 Sets a comment for the key. The default is not to attach a comment.
428 .TP
429 .BI "\-C, \-\-curve " curve-spec
430 Use the elliptic curve described by
431 .I curve-spec
432 when generating elliptic curve parameters.
433 .TP
434 .BI "\-t, \-\-tag " tag
435 Selects a tag string for the key. The default is not to set a tag. It
436 is an error to select a tag which already exists.
437 .TP
438 .BI "\-r, \-\-retag"
439 If a
440 .B \-t
441 option is given, remove this tag from any key which already has it.
442 .TP
443 .BI "\-R, \-\-rand-id " tag
444 Selects the key to use for the random number generator. Catacomb's
445 random number generator can be
446 .IR keyed ,
447 so that, even if the inputs to the generator are compromised, knowledge
448 of the key is also necessary to be able to predict the output. By
449 default, the latest-expiring key with type
450 .B catacomb-rand
451 is used, if present; if not, no key is used.
452 .TP
453 .BI "\-l, \-\-lock"
454 Requests that the secret parts of the newly-generated key be encrypted
455 using a passphrase.
456 .TP
457 .BI "\-q, \-\-quiet"
458 Suppresses the progress indication which is usually generated while
459 time-consuming key generation tasks are being performed.
460 .TP
461 .BI "\-L, --lim-lee"
462 When generating Diffie-Hellman parameters, generate a Lim-Lee prime
463 rather than a random (or safe) prime. See the details on Diffie-Hellman
464 key generation below.
465 .TP
466 .BI "\-S, --subgroup"
467 When generating Diffie-Hellman parameters with a Lim-Lee prime, choose a
468 generator of a prime-order subgroup rather than a subgroup of order
469 .RI ( p "- 1)/2."
470 .PP
471 The key's type is given by the required
472 .I type
473 argument. Following the type are zero or more attributes, which are
474 attached to the key in the same way as for the
475 .B setattr
476 command.
477 .PP
478 The key-generation algorithms supported are as follows:
479 .TP
480 .B "binary"
481 Generates a plain binary key of the requested length. If the requested
482 key length is not a multiple of eight, the high-order bits of the first
483 octet of the key are zeroed. The default key length is 128 bits.
484 .TP
485 .B "des"
486 Generates a DES key, with parity bits. The key length must be 56, 112
487 or 168; the default is 56. The low-order bit of each octet is ignored by
488 the DES algorithm; it is used to give each octet odd parity.
489 .TP
490 .B "rsa"
491 Generates a public/private key pair for use with the RSA algorithm.
492 .IP
493 The key components are
494 .I p
495 and
496 .IR q ,
497 a pair of prime numbers;
498 .IR n ,
499 the product of
500 .I p
501 and
502 .IR q ;
503 .IR e ,
504 the public exponent;
505 .IR d ,
506 the private exponent, chosen such that
507 .IR ed \ \(==\ 1
508 (mod
509 .RI ( p \ \-\ 1)( q \ \-\ 1));
510 and some other values useful for optimizing private-key operations:
511 .IR q \*(ss\-1\*(se\ mod\ p ,
512 .IR d \ mod\ p \ \-\ 1,
513 and
514 .IR d \ mod\ q \ \-\ 1.
515 The values
516 .I n
517 and
518 .I e
519 constitute the public key; the rest must be kept secret. The key size
520 requested by the
521 .B \-b
522 option determines the size of the modulus
523 .IR n ;
524 the default is 1024 bits.
525 .IP
526 The key generation algorithm chooses
527 .I p
528 and
529 .I q
530 to be
531 .I strong
532 primes: both
533 .IR p \ \-\ 1
534 and
535 .IR p \ +\ 1
536 have large prime factors \- call them
537 .I r
538 and
539 .I s
540 respectively \- and
541 .IR r \ \-\ 1
542 also has a large prime factor;
543 .I q
544 has similar properties.
545 .IP
546 The modulus
547 .I n
548 cannot be sensibly used as a shared parameter, since knowledge of
549 corrssponding public and private exponents is sufficient to be able to
550 factor the modulus and recover other users' private keys.
551 .TP
552 .B "dh-param"
553 Generates parameters for use with the Diffie-Hellman key exchange
554 protocol, and many related systems, such as ElGamal encryption and
555 signatures, and even DSA. (The separate DSA algorithm uses the
556 generator described in FIPS186-1.)
557 .IP
558 The Diffie-Hellman parameters are a prime modulus
559 .I p
560 and a generator
561 .I g
562 of a subgroup of
563 .BR Z / \c
564 .IB p Z
565 of order
566 .IR q .
567 The
568 .B \-b
569 option controls the size of the modulus
570 .IR p ;
571 the default size is 1024 bits.
572 .IP
573 If no
574 .I q
575 size is selected using the
576 .B \-B
577 option and the Lim-Lee prime option is disabled, then
578 .I p
579 is chosen to be a `safe' prime (i.e.,
580 .IR p \ =\ 2 q \ +\ 1,
581 with
582 .I q
583 prime). Finding safe primes takes a very long time. In this case, the
584 value of
585 .I g
586 is fixed as 4.
587 .IP
588 If a size is chosen for
589 .I q
590 and Lim-Lee primes are not selected then the prime
591 .I q
592 is generated and
593 .I p
594 is chosen so that
595 .IR p \ \-\ 1
596 is a multiple of
597 .IR q .
598 .IP
599 If the
600 .B \-L
601 option was given Lim-Lee primes are selected: the parameters are chosen
602 such that
603 .IR p \ =\ 2\ q \*(us0\*(ue\ q \*(us1\*(ue\ q \*(us2\*(ue\ ...\ +\ 1,
604 where the
605 .IR q \*(us i\*(ue
606 are primes at least as large as the setting given by the
607 .B \-B
608 option (or 256 bits, if no setting was given).
609 .IP
610 If the
611 .B \-S
612 option was given, the generator
613 .I g
614 is chosen to generate the subgroup of order
615 .IR q \*(us0\*(ue;
616 otherwise,
617 .I g
618 will generate the group of order
619 .RI ( p \ \-\ 1)/2\ =\ q \*(us0\*(ue\ q \*(us1\*(ue\ q \*(us2\*(ue\ ...
620 .IP
621 Finally, the
622 .B \-C
623 option can be given, in which case the parameters are taken directly
624 from the provided group specification, which may either be the the name
625 of one of the built-in groups (say
626 .B "key show dh"
627 for a list) or a triple
628 .RI ( p ,\ q ,\ g ).
629 separated by commas. No random generation is done in this case: the
630 given parameters are simply stored.
631 .TP
632 .B "dh"
633 Generates a public/private key pair for use with offline Diffie-Hellman,
634 ElGamal, DSA or similar discrete-logarithm-based systems. It selects a
635 private key
636 .IR x \ <\ q ,
637 and computes the public key
638 .IR y \ =\ g\*(ssx\*(se \ mod\ p .
639 .TP
640 .B "dsa-param"
641 Generates parameters for the DSA algorithm. DSA parameters are also
642 suitable for use with Diffie-Hellman and ElGamal system.
643 .IP
644 The main difference between DSA and Diffie-Hellman parameter generation
645 is thatthe DSA parameter generation
646 algorithm creates a
647 .I seed
648 from which the parameters are derived, and, assuming that the SHA-1 hash
649 function is strong, it's not feasible to construct a seed from which
650 deliberately weak parameters are derived. The algorithm used is the one
651 described in the DSA standard, FIPS\ 186, extended only to allow
652 sequential search for a prime
653 .I q
654 and to allow arbitrary parameter sizes. The seed is stored,
655 Base64-encoded, as the value of the attribute
656 .BR seed .
657 .IP
658 The default lengths for
659 .I p
660 and
661 .I q
662 are 768 and 160 bits respectively, since the DSA standard specifies that
663 .I q
664 be 160 bits, and the choice of 768 bits for
665 .I p
666 gives commensurate security.
667 .TP
668 .B "dsa"
669 Generates a public/private key pair for DSA. As for Diffie-Hellman
670 keys, it selects a
671 private key
672 .IR x \ <\ q ,
673 and computes the public key
674 .IR y \ =\ g\*(ssx\*(se \ mod\ p .
675 .TP
676 .B "bbs"
677 Generates a public/private key pair for the Blum-Blum-Shub random-number
678 generator, and the Blum-Goldwasser semantically-secure public-key
679 encryption system.
680 .IP
681 The key components are prime numbers
682 .I p
683 and
684 .IR q ,
685 both congruent to 3 (mod\ 4), and their product
686 .IR n .
687 The public key is simply the modulus
688 .IR n ;
689 the factors
690 .I p
691 and
692 .I q
693 are the private key.
694 .IP
695 The key-generation algorithm ensures that the two primes
696 .I p
697 and
698 .I q
699 are
700 .I strong
701 (see the discussion of strong primes above, in the section on RSA keys),
702 and that
703 .RI ( p \ \-\ 1)/2
704 and
705 .RI ( q \ \-\ 1)/2
706 are relatively prime, giving a maximum possible period length.
707 .IP
708 The key size requested by the
709 .B \-b
710 option determines the length of the modulus
711 .IR n ;
712 the default length is 1024 bits.
713 .TP
714 .B "ec-param"
715 Store an elliptic curve specification. If no explicit
716 .I curve-spec
717 is given (the
718 .RB ` \-C '
719 option) then a curve is chosen whose order is about the size given by the
720 .RB ` \-b '
721 option (default is 256 bits).
722 .IP
723 A
724 .I curve-spec
725 can be given explicitly (in which case
726 .RB ` \-b '
727 is ignored). It can either be the name of a built-in curve (say
728 .B "key show ec"
729 for a list of curve names) or a full specification. The curve is
730 checked for correctness and security according to the SEC1
731 specification: failed checks cause a warning to be issued to standard
732 error (though the program continues anyway). The check can be
733 suppressed using the
734 .RB ` \-q '
735 option.
736 .IP
737 A curve specification consists of the following elements optionally
738 separated by whitespace: a
739 .IR "field type" ,
740 which is one of
741 .BR "prime" ,
742 .BR "niceprime" ,
743 .BR "binpoly" ,
744 .or
745 .BR "binnorm" ;
746 an optional
747 .RB ` : ';
748 the field modulus
749 .IR p ;
750 if the field type is
751 .B binnorm
752 then an optional
753 .RB ` , '
754 and the representation of the normal element \*(*b; an optional
755 .RB ` / ';
756 a
757 .IR "curve type" ,
758 which is one of
759 .BR "prime" ,
760 .BR "primeproj" ,
761 .BR "bin" ,
762 and
763 .BR "binproj"
764 (the `proj' types currently have much better performance);
765 an optional
766 .RB ` : ';
767 the two field-element parameters
768 .I a
769 and
770 .IR b
771 which define the elliptic curve
772 .IR E ,
773 separated by an optional
774 .RB ` , ';
775 an optional
776 .RB ` / ';
777 the
778 .IR x -
779 and
780 .IR y -coordinates
781 of the generator point
782 .IR G ,
783 separated by an optional
784 .RB ` , ';
785 an optional
786 .RB ` : ';
787 the order
788 .I r
789 of the group generated by
790 .IR G ;
791 an optional
792 .RB ` * ';
793 and the
794 .I cofactor
795 .I h
796 =
797 .RI # E / r .
798 .TP
799 .B "ec"
800 Generate a private scalar and a corresponding public point on an
801 elliptic curve. See
802 .B ec-param
803 above for how to specify elliptic curve parameter sets. The scalar
804 .I x
805 is chosen unformly between 0 and the curve order
806 .IR r ;
807 the public point is then
808 .I x
809 \(mu
810 .IR G .
811 .SS "expire"
812 Forces keys to immediately expire. An expired key is not chosen when a
813 program requests a key by its type. The keys to expire are listed by
814 their
815 .IR tag s.
816 .SS "delete"
817 Deletes keys immediately. The keys to delete are listed by their
818 .IR tag s.
819 Be careful when deleting keys. It might be a better idea
820 to expire keys rather than deleting them.
821 .SS "tag"
822 Sets, deletes or changes the tag attached to a key. The first tag or
823 keyid names the key to be modified; the second, if present specifies the
824 new tag to be set. If no second argument is given, the existing tag, if
825 any, is removed and no new tag is set. It is an error to set a tag
826 which already exists on another key, unless you give the
827 .B \-r
828 option, which removes the tag first.
829 .SS "setattr"
830 Attaches attributes to a key. The key to which the attributes should be
831 attached is given by its
832 .IR tag .
833 Each attribute has the form
834 .IB name = value\fR.
835 An attribute can be deleted by assigning it an empty value. Although
836 the keyring file format is capable of representing an attribute with an
837 empty value as distinct from a nonexistant attribute, this interface
838 does not allow empty attributes to be set.
839 .SS "comment"
840 Sets, deletes or changes the comment attached to a key. The first
841 argument is a key tag or keyid which names the key to be modified; the
842 second, if present, is the new comment. If no second argument is given,
843 the existing comment, if any, is removed, and no new comment is set.
844 .SS "lock"
845 Locks a key or key component using a passphrase. If the key is already
846 locked, the existing passphrase is requested, and a new passphrase is
847 set.
848 .SS "unlock"
849 Unlocks a passphrase-locked key or key component. If the key is not
850 locked, an error is reported.
851 .SS "list"
852 Lists the keys in the keyring. A couple of options are supported:
853 .TP
854 .B "\-v, \-\-verbose"
855 Increases the amount of information displayed for each key. Repeat for
856 a greater effect.
857 .TP
858 .B "\-q, \-\-quiet"
859 Decreases the amount of information displayed for each key. Each use
860 cancels a
861 .RB ` \-v '
862 option.
863 .TP
864 .B "\-u, \-\-utc"
865 Display key expiry times as UTC rather than using the local time zone.
866 .TP
867 .BI "\-f, \-\-filter " filter
868 Specifies a filter. Only keys and key components which match the filter
869 are listed.
870 .PP
871 By default, a single line of output is generated for each, showing
872 keyids, types, expiry and deletion dates, and comments. Additional
873 .RB ` \-v '
874 options show more information, such as the exact time of day for expiry
875 and deletion, key attributes, and a dump of the actual key data. If the
876 verbosity level is sufficiently high, passphrases are requested to
877 decrypt locked keys. Make sure nobody is looking over your shoulder
878 when you do this!
879 .SS "fingerprint"
880 Reports a fingerprint (secure hash) on components of requested keys.
881 The following options are supported:
882 .TP
883 .BI "\-f, \-\-filter " filter
884 Specifies a filter. Only keys and key components which match the filter
885 are fingerprinted. The default is to only fingerprint nonsecret
886 components.
887 .TP
888 .BI "\-a, \-\-algorithm " hash
889 Names the hashing algorithm. Run
890 .B key show hash
891 for a list of hashing algorithms. The default is
892 .BR rmd160 .
893 .PP
894 The keys to be fingerprinted are named by their tags or keyids given as
895 command line arguments. If no key tags are given, all keys which match
896 the filter are fingerprinted. See
897 .BR keyring (5)
898 for a description of how key fingerprints are computed.
899 .SS "verify"
900 Check a key's fingerprint against a reference copy. The following
901 options are supported:
902 .TP
903 .BI "\-f, \-\-filter " filter
904 Specifies a filter. Only key components which match the filter are
905 hashed. The default is to only fingerprint nonsecret components. An
906 error is reported if no part of the key matches.
907 .TP
908 .BI "\-a, \-\-algorithm " hash
909 Names the hashing algorithm. Run
910 .B key show hash
911 for a list of hashing algorithms. The default is
912 .BR rmd160 .
913 .PP
914 The reference fingerprint is given as hex, in upper or lower case. The
915 hash may contain hyphens, colons and whitespace. Other characters are
916 not permitted.
917 .SS "tidy"
918 Simply reads the keyring from file and writes it back again. This has
919 the effect of removing any deleted keys from the file.
920 .SS "extract"
921 Writes a selection of keys to a file. An option is supported:
922 .TP
923 .BI "\-f, \-\-filter " filter
924 Specifies a filter. Only keys and key components which match the filter
925 are written.
926 .PP
927 Keys extracted are written to the file named by the first argument,
928 which may be
929 .RB ` \- '
930 to designate standard output. The keys to extract are listed by their
931 tags; if no tags are given, all keys which match the filter are
932 extracted. The output is a valid keyring file.
933 .SS "merge"
934 Merges the keys from the named
935 .IR file ,
936 which may be
937 .RB ` \- '
938 to designate standard input, with the keyring. Keys already in the
939 keyring are not overwritten: you must explicitly remove them first if
940 you want them to be replaced during the merge.
941 .SH "SEE ALSO"
942 .BR keyring (5).
943 .SH AUTHOR
944 Mark Wooding, <mdw@distorted.org.uk>
945