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