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