gpg: Allow predefined names as answer to the keygen.algo prompt.
[gnupg.git] / doc / scdaemon.texi
1 @c Copyright (C) 2002 Free Software Foundation, Inc.
2 @c This is part of the GnuPG manual.
3 @c For copying conditions, see the file gnupg.texi.
4
5 @node Invoking SCDAEMON
6 @chapter Invoking the SCDAEMON
7 @cindex SCDAEMON command options
8 @cindex command options
9 @cindex options, SCDAEMON command
10
11 @manpage scdaemon.1
12 @ifset manverb
13 .B scdaemon
14 \- Smartcard daemon for the GnuPG system
15 @end ifset
16
17 @mansect synopsis
18 @ifset manverb
19 .B  scdaemon
20 .RB [ \-\-homedir
21 .IR dir ]
22 .RB [ \-\-options
23 .IR file ]
24 .RI [ options ]
25 .B  \-\-server
26 .br
27 .B  scdaemon
28 .RB [ \-\-homedir
29 .IR dir ]
30 .RB [ \-\-options
31 .IR file ]
32 .RI [ options ]
33 .B  \-\-daemon
34 .RI [ command_line ]
35 @end ifset
36
37
38 @mansect description
39 The @command{scdaemon} is a daemon to manage smartcards.  It is usually
40 invoked by @command{gpg-agent} and in general not used directly.
41
42 @manpause
43 @xref{Option Index}, for an index to @command{scdaemon}'s commands and
44 options.
45 @mancont
46
47 @menu
48 * Scdaemon Commands::      List of all commands.
49 * Scdaemon Options::       List of all options.
50 * Card applications::      Description of card applications.
51 * Scdaemon Configuration:: Configuration files.
52 * Scdaemon Examples::      Some usage examples.
53 * Scdaemon Protocol::      The protocol the daemon uses.
54 @end menu
55
56 @mansect commands
57
58 @node Scdaemon Commands
59 @section Commands
60
61 Commands are not distinguished from options except for the fact that
62 only one command is allowed.
63
64 @table @gnupgtabopt
65 @item --version
66 @opindex version
67 Print the program version and licensing information.  Not that you can
68 abbreviate this command.
69
70 @item --help, -h
71 @opindex help
72 Print a usage message summarizing the most useful command-line options.
73 Not that you can abbreviate this command.
74
75 @item --dump-options
76 @opindex dump-options
77 Print a list of all available options and commands.  Not that you can
78 abbreviate this command.
79
80 @item --server
81 @opindex server
82 Run in server mode and wait for commands on the @code{stdin}.  This is
83 default mode is to create a socket and listen for commands there.
84
85 @item --multi-server
86 @opindex multi-server
87 Run in server mode and wait for commands on the @code{stdin} as well as
88 on an additional Unix Domain socket.  The server command @code{GETINFO}
89 may be used to get the name of that extra socket.
90
91 @item --daemon
92 @opindex daemon
93 Run the program in the background.  This option is required to prevent
94 it from being accidentally running in the background.
95
96 @end table
97
98
99 @mansect options
100
101 @node Scdaemon Options
102 @section Option Summary
103
104 @table @gnupgtabopt
105
106 @item --options @var{file}
107 @opindex options
108 Reads configuration from @var{file} instead of from the default
109 per-user configuration file.  The default configuration file is named
110 @file{scdaemon.conf} and expected in the @file{.gnupg} directory directly
111 below the home directory of the user.
112
113 @include opt-homedir.texi
114
115
116 @item -v
117 @item --verbose
118 @opindex v
119 @opindex verbose
120 Outputs additional information while running.
121 You can increase the verbosity by giving several
122 verbose commands to @command{gpgsm}, such as @samp{-vv}.
123
124 @item --debug-level @var{level}
125 @opindex debug-level
126 Select the debug level for investigating problems.  @var{level} may be
127 a numeric value or a keyword:
128
129 @table @code
130 @item none
131 No debugging at all.  A value of less than 1 may be used instead of
132 the keyword.
133 @item basic
134 Some basic debug messages.  A value between 1 and 2 may be used
135 instead of the keyword.
136 @item advanced
137 More verbose debug messages.  A value between 3 and 5 may be used
138 instead of the keyword.
139 @item expert
140 Even more detailed messages.  A value between 6 and 8 may be used
141 instead of the keyword.
142 @item guru
143 All of the debug messages you can get. A value greater than 8 may be
144 used instead of the keyword.  The creation of hash tracing files is
145 only enabled if the keyword is used.
146 @end table
147
148 How these messages are mapped to the actual debugging flags is not
149 specified and may change with newer releases of this program. They are
150 however carefully selected to best aid in debugging.
151
152 @quotation Note
153 All debugging options are subject to change and thus should not be used
154 by any application program.  As the name says, they are only used as
155 helpers to debug problems.
156 @end quotation
157
158
159 @item --debug @var{flags}
160 @opindex debug
161 This option is only useful for debugging and the behaviour may change at
162 any time without notice.  FLAGS are bit encoded and may be given in
163 usual C-Syntax. The currently defined bits are:
164
165 @table @code
166 @item 0  (1)
167 command I/O
168 @item 1  (2)
169 values of big number integers
170 @item 2  (4)
171 low level crypto operations
172 @item 5  (32)
173 memory allocation
174 @item 6  (64)
175 caching
176 @item 7  (128)
177 show memory statistics.
178 @item 9  (512)
179 write hashed data to files named @code{dbgmd-000*}
180 @item 10 (1024)
181 trace Assuan protocol.  See also option @option{--debug-assuan-log-cats}.
182 @item 11 (2048)
183 trace APDU I/O to the card.  This may reveal sensitive data.
184 @item 12 (4096)
185 trace some card reader related function calls.
186 @end table
187
188 @item --debug-all
189 @opindex debug-all
190 Same as @code{--debug=0xffffffff}
191
192 @item --debug-wait @var{n}
193 @opindex debug-wait
194 When running in server mode, wait @var{n} seconds before entering the
195 actual processing loop and print the pid.  This gives time to attach a
196 debugger.
197
198 @item --debug-ccid-driver
199 @opindex debug-wait
200 Enable debug output from the included CCID driver for smartcards.
201 Using this option twice will also enable some tracing of the T=1
202 protocol.  Note that this option may reveal sensitive data.
203
204 @item --debug-disable-ticker
205 @opindex debug-disable-ticker
206 This option disables all ticker functions like checking for card
207 insertions.
208
209 @item --debug-allow-core-dump
210 @opindex debug-allow-core-dump
211 For security reasons we won't create a core dump when the process
212 aborts.  For debugging purposes it is sometimes better to allow core
213 dump.  This options enables it and also changes the working directory to
214 @file{/tmp} when running in @option{--server} mode.
215
216 @item --debug-log-tid
217 @opindex debug-log-tid
218 This option appends a thread ID to the PID in the log output.
219
220 @item --debug-assuan-log-cats @var{cats}
221 @opindex debug-assuan-log-cats
222 Changes the active Libassuan logging categories to @var{cats}.  The
223 value for @var{cats} is an unsigned integer given in usual C-Syntax.
224 A value of of 0 switches to a default category.  If this option is not
225 used the categories are taken from the environment variable
226 @samp{ASSUAN_DEBUG}.  Note that this option has only an effect if the
227 Assuan debug flag has also been with the option @option{--debug}.  For
228 a list of categories see the Libassuan manual.
229
230 @item --no-detach
231 @opindex no-detach
232 Don't detach the process from the console.  This is mainly useful for
233 debugging.
234
235 @item --log-file @var{file}
236 @opindex log-file
237 Append all logging output to @var{file}.  This is very helpful in
238 seeing what the agent actually does.
239
240
241 @item --pcsc-driver @var{library}
242 @opindex pcsc-driver
243 Use @var{library} to access the smartcard reader.  The current default
244 is @file{libpcsclite.so}.  Instead of using this option you might also
245 want to install a symbolic link to the default file name
246 (e.g. from @file{libpcsclite.so.1}).
247
248 @item --ctapi-driver @var{library}
249 @opindex ctapi-driver
250 Use @var{library} to access the smartcard reader.  The current default
251 is @file{libtowitoko.so}.  Note that the use of this interface is
252 deprecated; it may be removed in future releases.
253
254 @item --disable-ccid
255 @opindex disable-ccid
256 Disable the integrated support for CCID compliant readers.  This
257 allows to fall back to one of the other drivers even if the internal
258 CCID driver can handle the reader.  Note, that CCID support is only
259 available if libusb was available at build time.
260
261 @item --reader-port @var{number_or_string}
262 @opindex reader-port
263 This option may be used to specify the port of the card terminal.  A
264 value of 0 refers to the first serial device; add 32768 to access USB
265 devices.  The default is 32768 (first USB device).  PC/SC or CCID
266 readers might need a string here; run the program in verbose mode to get
267 a list of available readers.  The default is then the first reader
268 found.
269
270 To get a list of available CCID readers you may use this command:
271 @smallexample
272 echo scd getinfo reader_list | gpg-connect-agent --decode | awk '/^D/ @{print $2@}'
273 @end smallexample
274
275
276 @item --card-timeout @var{n}
277 @opindex card-timeout
278 If @var{n} is not 0 and no client is actively using the card, the card
279 will be powered down after @var{n} seconds.  Powering down the card
280 avoids a potential risk of damaging a card when used with certain
281 cheap readers.  This also allows non Scdaemon aware applications to
282 access the card.  The disadvantage of using a card timeout is that
283 accessing the card takes longer and that the user needs to enter the
284 PIN again after the next power up.
285
286 Note that with the current version of Scdaemon the card is powered
287 down immediately at the next timer tick for any value of @var{n} other
288 than 0.
289
290 @item --enable-pinpad-varlen
291 @opindex enable-pinpad-varlen
292 Please specify this option when the card reader supports variable
293 length input for pinpad (default is no).  For known readers (listed in
294 ccid-driver.c and apdu.c), this option is not needed.  Note that if
295 your card reader doesn't supports variable length input but you want
296 to use it, you need to specify your pinpad request on your card.
297
298
299 @item --disable-pinpad
300 @opindex disable-pinpad
301 Even if a card reader features a pinpad, do not try to use it.
302
303
304 @item --deny-admin
305 @opindex deny-admin
306 @opindex allow-admin
307 This option disables the use of admin class commands for card
308 applications where this is supported.  Currently we support it for the
309 OpenPGP card. This commands is useful to inhibit accidental access to
310 admin class command which could ultimately lock the card through wrong
311 PIN numbers.  Note that GnuPG versions older than 2.0.11 featured an
312 @option{--allow-admin} command which was required to use such admin
313 commands.  This option has no more effect today because the default is
314 now to allow admin commands.
315
316 @item --disable-application @var{name}
317 @opindex disable-application
318 This option disables the use of the card application named
319 @var{name}.  This is mainly useful for debugging or if a application
320 with lower priority should be used by default.
321
322 @end table
323
324 All the long options may also be given in the configuration file after
325 stripping off the two leading dashes.
326
327
328 @mansect card applications
329 @node Card applications
330 @section Description of card applications
331
332 @command{scdaemon} supports the card applications as described below.
333
334 @menu
335 * OpenPGP Card::          The OpenPGP card application
336 * NKS Card::              The Telesec NetKey card application
337 * DINSIG Card::           The DINSIG card application
338 * PKCS#15 Card::          The PKCS#15 card application
339 * Geldkarte Card::        The Geldkarte application
340 * Undefined Card::        The Undefined stub application
341 @end menu
342
343 @node OpenPGP Card
344 @subsection The OpenPGP card application ``openpgp''
345
346 This application is currently only used by @command{gpg} but may in
347 future also be useful with @command{gpgsm}.  Version 1 and version 2 of
348 the card is supported.
349
350 The specifications for these cards are available at
351 @uref{http://g10code.com/docs/openpgp-card-1.0.pdf} and
352 @uref{http://g10code.com/docs/openpgp-card-2.0.pdf}.
353
354 @node NKS Card
355 @subsection The Telesec NetKey card ``nks''
356
357 This is the main application of the Telesec cards as available in
358 Germany.  It is a superset of the German DINSIG card.  The card is
359 used by @command{gpgsm}.
360
361 @node DINSIG Card
362 @subsection The DINSIG card application ``dinsig''
363
364 This is an application as described in the German draft standard
365 @emph{DIN V 66291-1}.  It is intended to be used by cards supporting
366 the German signature law and its bylaws (SigG and SigV).
367
368 @node PKCS#15 Card
369 @subsection The PKCS#15 card application ``p15''
370
371 This is common framework for smart card applications.  It is used by
372 @command{gpgsm}.
373
374 @node Geldkarte Card
375 @subsection The Geldkarte card application ``geldkarte''
376
377 This is a simple application to display information of a German
378 Geldkarte.  The Geldkarte is a small amount debit card application which
379 comes with almost all German banking cards.
380
381 @node Undefined Card
382 @subsection The Undefined card application ``undefined''
383
384 This is a stub application to allow the use of the APDU command even
385 if no supported application is found on the card.  This application is
386 not used automatically but must be explicitly requested using the
387 SERIALNO command.
388
389
390 @c *******************************************
391 @c ***************            ****************
392 @c ***************   FILES    ****************
393 @c ***************            ****************
394 @c *******************************************
395 @mansect files
396 @node Scdaemon Configuration
397 @section Configuration files
398
399 There are a few configuration files to control certain aspects of
400 @command{scdaemons}'s operation. Unless noted, they are expected in the
401 current home directory (@pxref{option --homedir}).
402
403 @table @file
404
405 @item scdaemon.conf
406 @cindex scdaemon.conf
407 This is the standard configuration file read by @command{scdaemon} on
408 startup.  It may contain any valid long option; the leading two dashes
409 may not be entered and the option may not be abbreviated.  This default
410 name may be changed on the command line (@pxref{option --options}).
411
412 @item scd-event
413 @cindex scd-event
414 If this file is present and executable, it will be called on veyer card
415 reader's status changed. An example of this script is provided with the
416 distribution
417
418 @item reader_@var{n}.status
419 This file is created by @command{sdaemon} to let other applications now
420 about reader status changes.  Its use is now deprecated in favor of
421 @file{scd-event}.
422
423 @end table
424
425
426 @c
427 @c  Examples
428 @c
429 @mansect examples
430 @node Scdaemon Examples
431 @section Examples
432
433 @c man begin EXAMPLES
434
435 @example
436 $ scdaemon --server -v
437 @end example
438
439 @c man end
440
441 @c
442 @c  Assuan Protocol
443 @c
444 @manpause
445 @node Scdaemon Protocol
446 @section Scdaemon's Assuan Protocol
447
448 The SC-Daemon should be started by the system to provide access to
449 external tokens.  Using Smartcards on a multi-user system does not
450 make much sense expect for system services, but in this case no
451 regular user accounts are hosted on the machine.
452
453 A client connects to the SC-Daemon by connecting to the socket named
454 @file{/var/run/scdaemon/socket}, configuration information is read from
455 @var{/etc/scdaemon.conf}
456
457 Each connection acts as one session, SC-Daemon takes care of
458 synchronizing access to a token between sessions.
459
460 @menu
461 * Scdaemon SERIALNO::     Return the serial number.
462 * Scdaemon LEARN::        Read all useful information from the card.
463 * Scdaemon READCERT::     Return a certificate.
464 * Scdaemon READKEY::      Return a public key.
465 * Scdaemon PKSIGN::       Signing data with a Smartcard.
466 * Scdaemon PKDECRYPT::    Decrypting data with a Smartcard.
467 * Scdaemon GETATTR::      Read an attribute's value.
468 * Scdaemon SETATTR::      Update an attribute's value.
469 * Scdaemon WRITEKEY::     Write a key to a card.
470 * Scdaemon GENKEY::       Generate a new key on-card.
471 * Scdaemon RANDOM::       Return random bytes generate on-card.
472 * Scdaemon PASSWD::       Change PINs.
473 * Scdaemon CHECKPIN::     Perform a VERIFY operation.
474 * Scdaemon RESTART::      Restart connection
475 * Scdaemon APDU::         Send a verbatim APDU to the card
476 @end menu
477
478 @node Scdaemon SERIALNO
479 @subsection Return the serial number
480
481 This command should be used to check for the presence of a card.  It is
482 special in that it can be used to reset the card.  Most other commands
483 will return an error when a card change has been detected and the use of
484 this function is therefore required.
485
486 Background: We want to keep the client clear of handling card changes
487 between operations; i.e. the client can assume that all operations are
488 done on the same card unless he call this function.
489
490 @example
491   SERIALNO
492 @end example
493
494 Return the serial number of the card using a status response like:
495
496 @example
497   S SERIALNO D27600000000000000000000 0
498 @end example
499
500 The trailing 0 should be ignored for now, it is reserved for a future
501 extension.  The serial number is the hex encoded value identified by
502 the @code{0x5A} tag in the GDO file (FIX=0x2F02).
503
504
505
506 @node Scdaemon LEARN
507 @subsection Read all useful information from the card
508
509 @example
510   LEARN [--force]
511 @end example
512
513 Learn all useful information of the currently inserted card.  When
514 used without the force options, the command might do an INQUIRE
515 like this:
516
517 @example
518       INQUIRE KNOWNCARDP <hexstring_with_serialNumber> <timestamp>
519 @end example
520
521 The client should just send an @code{END} if the processing should go on
522 or a @code{CANCEL} to force the function to terminate with a cancel
523 error message.  The response of this command is a list of status lines
524 formatted as this:
525
526 @example
527      S KEYPAIRINFO @var{hexstring_with_keygrip} @var{hexstring_with_id}
528 @end example
529
530 If there is no certificate yet stored on the card a single "X" is
531 returned in @var{hexstring_with_keygrip}.
532
533 @node Scdaemon READCERT
534 @subsection Return a certificate
535
536 @example
537  READCERT @var{hexified_certid}|@var{keyid}
538 @end example
539
540 This function is used to read a certificate identified by
541 @var{hexified_certid} from the card.  With OpenPGP cards the keyid
542 @code{OpenPGP.3} may be used to rad the certificate of version 2 cards.
543
544
545 @node Scdaemon READKEY
546 @subsection Return a public key
547
548 @example
549 READKEY @var{hexified_certid}
550 @end example
551
552 Return the public key for the given cert or key ID as an standard
553 S-Expression.
554
555
556
557 @node Scdaemon PKSIGN
558 @subsection Signing data with a Smartcard
559
560 To sign some data the caller should use the command
561
562 @example
563  SETDATA @var{hexstring}
564 @end example
565
566 to tell @command{scdaemon} about the data to be signed.  The data must be given in
567 hex notation.  The actual signing is done using the command
568
569 @example
570   PKSIGN @var{keyid}
571 @end example
572
573 where @var{keyid} is the hexified ID of the key to be used.  The key id
574 may have been retrieved using the command @code{LEARN}.  If another
575 hash algorithm than SHA-1 is used, that algorithm may be given like:
576
577 @example
578   PKSIGN --hash=@var{algoname} @var{keyid}
579 @end example
580
581 With @var{algoname} are one of @code{sha1}, @code{rmd160} or @code{md5}.
582
583
584 @node Scdaemon PKDECRYPT
585 @subsection Decrypting data with a Smartcard
586
587 To decrypt some data the caller should use the command
588
589 @example
590  SETDATA @var{hexstring}
591 @end example
592
593 to tell @command{scdaemon} about the data to be decrypted.  The data
594 must be given in hex notation.  The actual decryption is then done
595 using the command
596
597 @example
598   PKDECRYPT @var{keyid}
599 @end example
600
601 where @var{keyid} is the hexified ID of the key to be used.
602
603 If the card is ware of the apdding format a status line with padding
604 information is send before the plaintext data.  The key for this
605 status line is @code{PADDING} with the only defined value being 0 and
606 meaning padding has been removed.
607
608 @node Scdaemon GETATTR
609 @subsection Read an attribute's value.
610
611 TO BE WRITTEN.
612
613 @node Scdaemon SETATTR
614 @subsection Update an attribute's value.
615
616 TO BE WRITTEN.
617
618 @node Scdaemon WRITEKEY
619 @subsection Write a key to a card.
620
621 @example
622   WRITEKEY [--force] @var{keyid}
623 @end example
624
625 This command is used to store a secret key on a smartcard.  The
626 allowed keyids depend on the currently selected smartcard
627 application. The actual keydata is requested using the inquiry
628 @code{KEYDATA} and need to be provided without any protection.  With
629 @option{--force} set an existing key under this @var{keyid} will get
630 overwritten.  The key data is expected to be the usual canonical encoded
631 S-expression.
632
633 A PIN will be requested in most cases.  This however depends on the
634 actual card application.
635
636
637 @node Scdaemon GENKEY
638 @subsection Generate a new key on-card.
639
640 TO BE WRITTEN.
641
642 @node Scdaemon RANDOM
643 @subsection Return random bytes generate on-card.
644
645 TO BE WRITTEN.
646
647
648 @node Scdaemon PASSWD
649 @subsection Change PINs.
650
651 @example
652    PASSWD [--reset] [--nullpin] @var{chvno}
653 @end example
654
655 Change the PIN or reset the retry counter of the card holder
656 verification vector number @var{chvno}.  The option @option{--nullpin}
657 is used to initialize the PIN of TCOS cards (6 byte NullPIN only).
658
659
660 @node Scdaemon CHECKPIN
661 @subsection Perform a VERIFY operation.
662
663 @example
664   CHECKPIN @var{idstr}
665 @end example
666
667 Perform a VERIFY operation without doing anything else.  This may be
668 used to initialize a the PIN cache earlier to long lasting
669 operations.  Its use is highly application dependent:
670
671 @table @strong
672 @item OpenPGP
673
674 Perform a simple verify operation for CHV1 and CHV2, so that further
675 operations won't ask for CHV2 and it is possible to do a cheap check on
676 the PIN: If there is something wrong with the PIN entry system, only the
677 regular CHV will get blocked and not the dangerous CHV3.  @var{idstr} is
678 the usual card's serial number in hex notation; an optional fingerprint
679 part will get ignored.
680
681 There is however a special mode if @var{idstr} is suffixed with the
682 literal string @code{[CHV3]}: In this case the Admin PIN is checked if
683 and only if the retry counter is still at 3.
684
685 @end table
686
687
688
689 @node Scdaemon RESTART
690 @subsection Perform a RESTART operation.
691
692 @example
693   RESTART
694 @end example
695
696 Restart the current connection; this is a kind of warm reset.  It
697 deletes the context used by this connection but does not actually
698 reset the card.
699
700 This is used by gpg-agent to reuse a primary pipe connection and
701 may be used by clients to backup from a conflict in the serial
702 command; i.e. to select another application.
703
704
705
706
707 @node Scdaemon APDU
708 @subsection Send a verbatim APDU to the card.
709
710 @example
711   APDU [--atr] [--more] [--exlen[=@var{n}]] [@var{hexstring}]
712 @end example
713
714
715 Send an APDU to the current reader.  This command bypasses the high
716 level functions and sends the data directly to the card.
717 @var{hexstring} is expected to be a proper APDU.  If @var{hexstring} is
718 not given no commands are send to the card; However the command will
719 implicitly check whether the card is ready for use.
720
721 Using the option @code{--atr} returns the ATR of the card as a status
722 message before any data like this:
723 @example
724      S CARD-ATR 3BFA1300FF813180450031C173C00100009000B1
725 @end example
726
727 Using the option @code{--more} handles the card status word MORE_DATA
728 (61xx) and concatenate all responses to one block.
729
730 Using the option @code{--exlen} the returned APDU may use extended
731 length up to N bytes.  If N is not given a default value is used
732 (currently 4096).
733
734
735
736 @mansect see also
737 @ifset isman
738 @command{gpg-agent}(1),
739 @command{gpgsm}(1),
740 @command{gpg2}(1)
741 @end ifset
742 @include see-also-note.texi
743