Extend yat2m to allow indented tables.
[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
182 @item 11 (2048)
183 trace APDU I/O to the card.  This may reveal sensitive data.
184 @end table
185
186 @item --debug-all
187 @opindex debug-all
188 Same as @code{--debug=0xffffffff}
189
190 @item --debug-wait @var{n}
191 @opindex debug-wait
192 When running in server mode, wait @var{n} seconds before entering the
193 actual processing loop and print the pid.  This gives time to attach a
194 debugger.
195
196 @item --debug-ccid-driver
197 @opindex debug-wait
198 Enable debug output from the included CCID driver for smartcards.
199 Using this option twice will also enable some tracing of the T=1
200 protocol.  Note that this option may reveal sensitive data.
201
202 @item --debug-disable-ticker
203 @opindex debug-disable-ticker
204 This option disables all ticker functions like checking for card
205 insertions.
206
207 @item --debug-allow-core-dump
208 @opindex debug-allow-core-dump
209 For security reasons we won't create a core dump when the process
210 aborts.  For debugging purposes it is sometimes better to allow core
211 dump.  This options enables it and also changes the working directory to
212 @file{/tmp} when running in @option{--server} mode.
213
214 @item --debug-log-tid
215 @opindex debug-log-tid
216 This option appends a thread ID to the PID in the log output.
217
218
219 @item --no-detach
220 @opindex no-detach
221 Don't detach the process from the console.  This is mainly useful for
222 debugging.
223
224 @item --log-file @var{file}
225 @opindex log-file
226 Append all logging output to @var{file}.  This is very helpful in
227 seeing what the agent actually does.
228
229
230 @item --pcsc-driver @var{library}
231 @opindex pcsc-driver
232 Use @var{library} to access the smartcard reader.  The current default
233 is @file{libpcsclite.so}.  Instead of using this option you might also
234 want to install a symbolic link to the default file name
235 (e.g. from @file{libpcsclite.so.1}).
236
237 @item --ctapi-driver @var{library}
238 @opindex ctapi-driver
239 Use @var{library} to access the smartcard reader.  The current default
240 is @file{libtowitoko.so}.  Note that the use of this interface is
241 deprecated; it may be removed in future releases.
242
243 @item --disable-ccid 
244 @opindex disable-ccid
245 Disable the integrated support for CCID compliant readers.  This
246 allows to fall back to one of the other drivers even if the internal
247 CCID driver can handle the reader.  Note, that CCID support is only
248 available if libusb was available at build time.
249
250 @item --reader-port @var{number_or_string}
251 @opindex reader-port
252 This option may be used to specify the port of the card terminal.  A
253 value of 0 refers to the first serial device; add 32768 to access USB
254 devices.  The default is 32768 (first USB device).  PC/SC or CCID
255 readers might need a string here; run the program in verbose mode to get
256 a list of available readers.  The default is then the first reader
257 found.
258
259 To get a list of available CCID readers you may use this command:
260 @smallexample
261 echo scd getinfo reader_list | gpg-connect-agent --decode | awk '/^D/ @{print $2@}'
262 @end smallexample
263
264
265 @item --card-timeout @var{n}
266 @opindex card-timeout
267 If @var{n} is not 0 and no client is actively using the card, the card
268 will be powered down after @var{n} seconds.  Powering down the card
269 avoids a potential risk of damaging a card when used with certain
270 cheap readers.  This also allows non Scdaemon aware applications to
271 access the card.  The disadvantage of using a card timeout is that
272 accessing the card takes longer and that the user needs to enter the
273 PIN again after the next power up.
274
275 Note that with the current version of Scdaemon the card is powered
276 down immediately at the next timer tick for any value of @var{n} other
277 than 0.
278
279
280 @item --disable-keypad
281 @opindex disable-keypad
282 Even if a card reader features a keypad, do not try to use it.
283
284
285 @item --deny-admin
286 @opindex deny-admin
287 @opindex allow-admin
288 This option disables the use of admin class commands for card
289 applications where this is supported.  Currently we support it for the
290 OpenPGP card. This commands is useful to inhibit accidental access to
291 admin class command which could ultimately lock the card through wrong
292 PIN numbers.  Note that GnuPG versions older than 2.0.11 featured an
293 @option{--allow-admin} command which was required to use such admin
294 commands.  This option has no more effect today because the default is
295 now to allow admin commands.
296
297 @item --disable-application @var{name}
298 @opindex disable-application
299 This option disables the use of the card application named
300 @var{name}.  This is mainly useful for debugging or if a application
301 with lower priority should be used by default.
302
303 @end table
304
305 All the long options may also be given in the configuration file after
306 stripping off the two leading dashes.
307
308
309 @mansect card applications
310 @node Card applications
311 @section Description of card applications
312
313 @command{scdaemon} supports the card applications as described below.
314
315 @menu
316 * OpenPGP Card::          The OpenPGP card application
317 * NKS Card::              The Telesec NetKey card application
318 * DINSIG Card::           The DINSIG card application
319 * PKCS#15 Card::          The PKCS#15 card application
320 * Geldkarte Card::        The Geldkarte application
321 @end menu
322
323 @node OpenPGP Card
324 @subsection The OpenPGP card application ``openpgp''
325
326 This application is currently only used by @command{gpg} but may in
327 future also be useful with @command{gpgsm}.  Version 1 and version 2 of
328 the card is supported. 
329
330 The specifications for these cards are available at
331 @uref{http://g10code.com/docs/openpgp-card-1.0.pdf} and
332 @uref{http://g10code.com/docs/openpgp-card-2.0.pdf}.
333
334 @node NKS Card
335 @subsection The Telesec NetKey card ``nks''
336
337 This is the main application of the Telesec cards as available in
338 Germany.  It is a superset of the German DINSIG card.  The card is
339 used by @command{gpgsm}.
340
341 @node DINSIG Card
342 @subsection The DINSIG card application ``dinsig''
343
344 This is an application as described in the German draft standard
345 @emph{DIN V 66291-1}.  It is intended to be used by cards supporting
346 the German signature law and its bylaws (SigG and SigV).
347
348 @node PKCS#15 Card
349 @subsection The PKCS#15 card application ``p15''
350
351 This is common framework for smart card applications.  It is used by
352 @command{gpgsm}.
353
354 @node Geldkarte Card
355 @subsection The Geldkarte card application ``geldkarte''
356
357 This is a simple application to display information of a German
358 Geldkarte.  The Geldkarte is a small amount debit card application which
359 comes with almost all German banking cards.
360
361
362 @c *******************************************
363 @c ***************            ****************
364 @c ***************   FILES    ****************
365 @c ***************            ****************
366 @c *******************************************
367 @mansect files
368 @node Scdaemon Configuration
369 @section Configuration files
370
371 There are a few configuration files to control certain aspects of
372 @command{scdaemons}'s operation. Unless noted, they are expected in the
373 current home directory (@pxref{option --homedir}).
374
375 @table @file
376
377 @item scdaemon.conf
378 @cindex scdaemon.conf
379 This is the standard configuration file read by @command{scdaemon} on
380 startup.  It may contain any valid long option; the leading two dashes
381 may not be entered and the option may not be abbreviated.  This default
382 name may be changed on the command line (@pxref{option --options}).
383
384 @item scd-event
385 @cindex scd-event
386 If this file is present and executable, it will be called on veyer card
387 reader's status changed. An example of this script is provided with the
388 distribution
389
390 @item reader_@var{n}.status
391 This file is created by @command{sdaemon} to let other applications now
392 about reader status changes.  Its use is now deprecated in favor of
393 @file{scd-event}.
394
395 @end table
396
397
398 @c 
399 @c  Examples
400 @c
401 @mansect examples
402 @node Scdaemon Examples
403 @section Examples
404
405 @c man begin EXAMPLES
406
407 @example
408 $ scdaemon --server -v
409 @end example
410
411 @c man end
412
413 @c 
414 @c  Assuan Protocol
415 @c
416 @manpause
417 @node Scdaemon Protocol
418 @section Scdaemon's Assuan Protocol
419
420 The SC-Daemon should be started by the system to provide access to
421 external tokens.  Using Smartcards on a multi-user system does not
422 make much sense expect for system services, but in this case no
423 regular user accounts are hosted on the machine.
424
425 A client connects to the SC-Daemon by connecting to the socket named
426 @file{/var/run/scdaemon/socket}, configuration information is read from
427 @var{/etc/scdaemon.conf}
428
429 Each connection acts as one session, SC-Daemon takes care of
430 synchronizing access to a token between sessions.
431
432 @menu
433 * Scdaemon SERIALNO::     Return the serial number.
434 * Scdaemon LEARN::        Read all useful information from the card.
435 * Scdaemon READCERT::     Return a certificate.
436 * Scdaemon READKEY::      Return a public key.
437 * Scdaemon PKSIGN::       Signing data with a Smartcard.
438 * Scdaemon PKDECRYPT::    Decrypting data with a Smartcard.
439 * Scdaemon GETATTR::      Read an attribute's value.
440 * Scdaemon SETATTR::      Update an attribute's value.
441 * Scdaemon WRITEKEY::     Write a key to a card.
442 * Scdaemon GENKEY::       Generate a new key on-card.
443 * Scdaemon RANDOM::       Return random bytes generate on-card.
444 * Scdaemon PASSWD::       Change PINs.
445 * Scdaemon CHECKPIN::     Perform a VERIFY operation.
446 * Scdaemon RESTART::      Restart connection
447 * Scdaemon APDU::         Send a verbatim APDU to the card
448 @end menu
449
450 @node Scdaemon SERIALNO 
451 @subsection Return the serial number
452
453 This command should be used to check for the presence of a card.  It is
454 special in that it can be used to reset the card.  Most other commands
455 will return an error when a card change has been detected and the use of
456 this function is therefore required.
457
458 Background: We want to keep the client clear of handling card changes
459 between operations; i.e. the client can assume that all operations are
460 done on the same card unless he call this function.
461
462 @example
463   SERIALNO
464 @end example
465
466 Return the serial number of the card using a status response like:
467
468 @example
469   S SERIALNO D27600000000000000000000 0
470 @end example
471
472 The trailing 0 should be ignored for now, it is reserved for a future
473 extension.  The serial number is the hex encoded value identified by 
474 the @code{0x5A} tag in the GDO file (FIX=0x2F02).
475
476
477
478 @node Scdaemon LEARN
479 @subsection Read all useful information from the card
480
481 @example
482   LEARN [--force]
483 @end example
484
485 Learn all useful information of the currently inserted card.  When
486 used without the force options, the command might do an INQUIRE
487 like this:
488
489 @example
490       INQUIRE KNOWNCARDP <hexstring_with_serialNumber> <timestamp>
491 @end example
492
493 The client should just send an @code{END} if the processing should go on
494 or a @code{CANCEL} to force the function to terminate with a cancel
495 error message.  The response of this command is a list of status lines
496 formatted as this:
497
498 @example
499      S KEYPAIRINFO @var{hexstring_with_keygrip} @var{hexstring_with_id}
500 @end example
501
502 If there is no certificate yet stored on the card a single "X" is
503 returned in @var{hexstring_with_keygrip}.
504
505 @node Scdaemon READCERT
506 @subsection Return a certificate
507
508 @example
509  READCERT @var{hexified_certid}|@var{keyid}
510 @end example
511
512 This function is used to read a certificate identified by
513 @var{hexified_certid} from the card.  With OpenPGP cards the keyid
514 @code{OpenPGP.3} may be used to rad the certificate of version 2 cards.
515
516
517 @node Scdaemon READKEY
518 @subsection Return a public key
519
520 @example
521 READKEY @var{hexified_certid}
522 @end example
523
524 Return the public key for the given cert or key ID as an standard
525 S-Expression. 
526
527
528
529 @node Scdaemon PKSIGN
530 @subsection Signing data with a Smartcard
531
532 To sign some data the caller should use the command
533
534 @example
535  SETDATA @var{hexstring}
536 @end example
537
538 to tell @command{scdaemon} about the data to be signed.  The data must be given in
539 hex notation.  The actual signing is done using the command
540
541 @example
542   PKSIGN @var{keyid}
543 @end example
544
545 where @var{keyid} is the hexified ID of the key to be used.  The key id
546 may have been retrieved using the command @code{LEARN}.  If another
547 hash algorithm than SHA-1 is used, that algorithm may be given like:
548
549 @example
550   PKSIGN --hash=@var{algoname} @var{keyid}
551 @end example
552
553 With @var{algoname} are one of @code{sha1}, @code{rmd160} or @code{md5}.
554
555
556 @node Scdaemon PKDECRYPT
557 @subsection Decrypting data with a Smartcard
558
559 To decrypt some data the caller should use the command
560
561 @example
562  SETDATA @var{hexstring}
563 @end example
564
565 to tell @command{scdaemon} about the data to be decrypted.  The data
566 must be given in hex notation.  The actual decryption is then done
567 using the command
568
569 @example
570   PKDECRYPT @var{keyid}
571 @end example
572
573 where @var{keyid} is the hexified ID of the key to be used.
574
575
576 @node Scdaemon GETATTR
577 @subsection Read an attribute's value.
578
579 TO BE WRITTEN.
580
581 @node Scdaemon SETATTR
582 @subsection Update an attribute's value.
583
584 TO BE WRITTEN.
585
586 @node Scdaemon WRITEKEY
587 @subsection Write a key to a card.
588
589 @example
590   WRITEKEY [--force] @var{keyid}
591 @end example
592
593 This command is used to store a secret key on a smartcard.  The
594 allowed keyids depend on the currently selected smartcard
595 application. The actual keydata is requested using the inquiry
596 @code{KEYDATA} and need to be provided without any protection.  With
597 @option{--force} set an existing key under this @var{keyid} will get
598 overwritten.  The key data is expected to be the usual canonical encoded
599 S-expression.
600
601 A PIN will be requested in most cases.  This however depends on the
602 actual card application.
603
604
605 @node Scdaemon GENKEY
606 @subsection Generate a new key on-card.
607
608 TO BE WRITTEN.
609
610 @node Scdaemon RANDOM
611 @subsection Return random bytes generate on-card.
612
613 TO BE WRITTEN.
614
615
616 @node Scdaemon PASSWD
617 @subsection Change PINs.
618
619 @example
620    PASSWD [--reset] [--nullpin] @var{chvno}
621 @end example
622   
623 Change the PIN or reset the retry counter of the card holder
624 verification vector number @var{chvno}.  The option @option{--nullpin}
625 is used to initialize the PIN of TCOS cards (6 byte NullPIN only).
626
627
628 @node Scdaemon CHECKPIN
629 @subsection Perform a VERIFY operation.
630
631 @example
632   CHECKPIN @var{idstr}
633 @end example
634
635 Perform a VERIFY operation without doing anything else.  This may be
636 used to initialize a the PIN cache earlier to long lasting
637 operations.  Its use is highly application dependent:
638
639 @table @strong
640 @item OpenPGP
641
642 Perform a simple verify operation for CHV1 and CHV2, so that further
643 operations won't ask for CHV2 and it is possible to do a cheap check on
644 the PIN: If there is something wrong with the PIN entry system, only the
645 regular CHV will get blocked and not the dangerous CHV3.  @var{idstr} is
646 the usual card's serial number in hex notation; an optional fingerprint
647 part will get ignored.
648
649 There is however a special mode if @var{idstr} is suffixed with the
650 literal string @code{[CHV3]}: In this case the Admin PIN is checked if
651 and only if the retry counter is still at 3.
652
653 @end table
654
655
656
657 @node Scdaemon RESTART
658 @subsection Perform a RESTART operation.
659
660 @example
661   RESTART
662 @end example
663
664 Restart the current connection; this is a kind of warm reset.  It
665 deletes the context used by this connection but does not actually
666 reset the card. 
667
668 This is used by gpg-agent to reuse a primary pipe connection and
669 may be used by clients to backup from a conflict in the serial
670 command; i.e. to select another application. 
671
672
673
674
675 @node Scdaemon APDU
676 @subsection Send a verbatim APDU to the card.
677
678 @example
679   APDU [--atr] [--more] [--exlen[=@var{n}]] [@var{hexstring}]
680 @end example
681
682
683 Send an APDU to the current reader.  This command bypasses the high
684 level functions and sends the data directly to the card.
685 @var{hexstring} is expected to be a proper APDU.  If @var{hexstring} is
686 not given no commands are send to the card; However the command will
687 implicitly check whether the card is ready for use.
688
689 Using the option @code{--atr} returns the ATR of the card as a status
690 message before any data like this:
691 @example
692      S CARD-ATR 3BFA1300FF813180450031C173C00100009000B1
693 @end example
694
695 Using the option @code{--more} handles the card status word MORE_DATA
696 (61xx) and concatenate all responses to one block.
697
698 Using the option @code{--exlen} the returned APDU may use extended
699 length up to N bytes.  If N is not given a default value is used
700 (currently 4096).
701
702
703
704 @mansect see also
705 @ifset isman
706 @command{gpg-agent}(1),
707 @command{gpgsm}(1), 
708 @command{gpg2}(1)
709 @end ifset
710 @include see-also-note.texi
711