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