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