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