Provided by: scdaemon_2.4.4-2ubuntu17_amd64 bug

NAME

       gpg-card - Administrate Smart Cards

SYNOPSIS

       gpg-card [options]
       gpg-card [options] command { -- command }

DESCRIPTION

       The  gpg-card  is used to administrate smart cards and USB tokens.  It provides a superset
       of features from gpg --card-edit an can be considered a frontend to scdaemon  which  is  a
       daemon started by gpg-agent to handle smart cards.

       If gpg-card is invoked without commands an interactive mode is used.

       If  gpg-card  is  invoked  with one or more commands the same commands as available in the
       interactive mode are run from the command line.  These commands need to be delimited  with
       a  double-dash.   If  a double-dash or a shell specific character is required as part of a
       command the entire command needs to be put in quotes.  If one of those commands returns an
       error  the  remaining  commands are not anymore run unless the command was prefixed with a
       single dash.

       A list of commands is available by using the command help and a brief description of  each
       command is printed by using help CMD.  See the section COMMANDS for a full description.

       See the NOTES sections for instructions pertaining to specific cards or card applications.

COMMANDS

       gpg-card understands the following commands, which have options of their own.  The pseudo-
       option ‘--’ can be used to separate command options from arguments; if this pseudo  option
       is  used on the command line the entire command with options and arguments must be quoted,
       so that it is not mixed up with the ‘--’ as used on the command line to separate commands.
       Note  that  a  short  online  help  is  available  for all commands by prefixing them with
       ``help''.  Command completion in the interactive mode is also supported.

       AUTHENTICATE [--setkey] [--raw] [< file]|key]
       AUTH   Authenticate to the card.  Perform a mutual authentication either  by  reading  the
              key  from  file  or  by taking it from the command line as key.  Without the option
              --raw the key is expected to be hex encoded.  To install a new  administration  key
              --setkey  is  used; this requires a prior authentication with the old key.  This is
              used with PIV cards.

       CAFPR [--clear] N
              Change the CA fingerprint number N of an OpenPGP card.  N must be in the range 1 to
              3.  The option --clear clears the specified CA fingerprint N or all of them if N is
              0 or not given.

       FACTORY-RESET
              Do a complete reset of some OpenPGP and PIV cards.  This command deletes  all  data
              and  keys  and  resets the PINs to their default.  Don't worry, you need to confirm
              before the command proceeds.

       FETCH  Retrieve a key using the URL data object of an OpenPGP card or if that  is  missing
              using the stored fingerprint.

       FORCESIG
              Toggle the forcesig flag of an OpenPGP card.

       GENERATE [--force] [--algo=algo{+algo2}] keyref
              Create  a new key on a card.  Use --force to overwrite an existing key.  Use "help"
              for algo to get a list of known algorithms.  For OpenPGP cards several algos may be
              given.  Note that the OpenPGP key generation is done interactively unless --algo or
              keyref are given.

       KDF-SETUP
              Prepare the OpenPGP card KDF feature for this card.

       LANG [--clear]
              Change the language info for the card.  This info can be used by applications for a
              personalized  greeting.  Up to 4 two-digit language identifiers can be entered as a
              preference.  The option --clear removes all identifiers.  GnuPG does not  use  this
              info.

       LIST [--cards] [--apps] [--info] [--no-key-lookup] [n] [app]
       L      This  command  reads  all  information  from the current card and display them in a
              human readable format.  The first section shows generic information  vaialable  for
              all  cards.   The next section shows information pertaining to keys which depend on
              the actual card and application.

              With n given select and list the  n-th  card;  with  app  also  given  select  that
              application.   To  select  an  app  on  the current card use "-" for n.  The serial
              number of the card may be used instead of n.

              The option --cards lists the serial numbers of available cards.  The option  --apps
              lists  all  card  applications.   The  option  --info selects a card and prints its
              serial number.  The option  --no-key-lookup  suppresses  the  listing  of  matching
              OpenPGP or X.509 keys.

       LOGIN [--clear] [< file]
              Set  the  login data object of OpenPGP cards.  If file is given the data is is read
              from that file.  This allows one to store binary data  in  the  login  field.   The
              option --clear deletes the login data object.

       NAME [--clear]
              Set  the  name  field  of  an OpenPGP card.  With option --clear the stored name is
              cleared off the card.

       PASSWD [--reset|--nullpin] [pinref]
              Change or unblock the PINs.  Note that in interactive mode and without a  pinref  a
              menu is presented for certain cards."  In non-interactive mode and without a pinref
              a default value i used for these cards.  The option --reset is used with TCOS cards
              to  reset  the  PIN  using  the PUK or vice versa; the option --nullpin is used for
              these cards to set the initial PIN.

       PRIVATEDO [--clear] n [< file]
              Change the private data object n of an OpenPGP card.  n must be in the range  1  to
              4.  If file is given the data is is read from that file.  The option --clear clears
              the data.

       QUIT
       Q      Stop processing and terminate gpg-card.

       READCERT [--openpgp] certref > file
              Read the certificate for key certref and store it in file.  With  option  --openpgp
              an    OpenPGP    keyblock    wrapped    in    a    dedicated   CMS   content   type
              (OID=1.3.6.1.4.1.11591.2.3.1) is expected and extracted to  file.   Note  that  for
              current  OpenPGP  cards  a  certificate  may  only  be  available  at  the  certref
              "OPENPGP.3".

       RESET  Send a reset to the card daemon.

       SALUTATION [--clear]
       SALUT  Change the salutation info for the card.  This info can be used by applications for
              a  personalized greeting.  The option --clear removes this data object.  GnuPG does
              not use this info.

       UIF N [on|off|permanent]
              Change the User Interaction Flag.  That flags tells whether the confirmation button
              of  a token shall be used.  n must in the range 1 to 3.  "permanent" is the same as
              "on" but the flag can't be changed anmore.

       UNBLOCK
              Unblock a PIN using a PUK or Reset Code.  Note that OpenPGP cards prior to  version
              2 can't use this; instead the PASSWD can be used to set a new PIN.

       URL [--clear]
              Set  the  URL  data  object of an OpenPGP card.  That data object can be used by by
              gpg's --fetch command to retrieve the full public key.  The option --clear  deletes
              the content of that data object.

       VERIFY [chvid]
              Verify the PIN identified by chvid or the default PIN.

       WRITECERT certref < file
       WRITECERT --openpgp certref [< file|fpr]
       WRITECERT --clear certref
              Write  a  certificate to the card under the id certref.  The option --clear removes
              the certificate from the card.  The option --openpgp expects  an  OpenPGP  keyblock
              and  stores  it encapsulated in a CMS container; the keyblock is taken from file or
              directly from the OpenPGP key identified by fingerprint fpr.

       WRITEKEY [--force] keyref keygrip
              Write a private key object identified by keygrip to the card under the  id  keyref.
              Option --force allows overwriting an existing key.

       CHECKKEYS [--ondisk] [--delete-clear-copy] [--delete-protected-copy]
              Print  a  list of keys noticed on all inserted cards.  With --ondisk only smartcard
              keys with a copy on disk are listed.  With --delete-clear-copy copies of  smartcard
              keys  stored  on  disk  without  any  protection  will  be deleted.  With --delete-
              protected-copy password protected copies of smartcard keys stored on disk  will  be
              deleted.

              This  command  creates missing shadow keys.  The delete options print the status of
              the keys before they are deleted.

              The format of the output is:

              Serial number
                     A hex-string with the serial number of the card.

              Type   This gives the type of the card's application.   For  example  "OpenPGP"  or
                     "PIV".

              Keygrip
                     A hex-string identifying a key.

              Keyref The  application  slot  where  the  key  is stored on the card.  For example
                     "OpenPGP.1"

              Status The status of the key.  The most common value is "shadowed" for a key  where
                     only  the  public  key  along with the card's serial number is stored on the
                     disk.  The value "clear" indicates that a copy of the card's key  is  stored
                     unprotected  on  disk.   The  value "protected" indicated that a copy of the
                     car's key is stored on disk but is  protected  by  a  password.   The  value
                     "error"  may  also  be shown if there was a problem reading information from
                     the card.

       YUBIKEY cmd args
              Various commands pertaining to Yubikey tokens with cmd being:

              LIST   List supported and enabled Yubikey applications.

              ENABLE usb|nfc|all [otp|u2f|opgp|piv|oath|fido2|all]
              DISABLE
                     Enable or disable the specified or all applications on the given interface.

NOTES (OPENPGP)

       The support for OpenPGP cards in gpg-card is not  yet  complete.   For  missing  features,
       please continue to use gpg --card-edit.

NOTES (PIV)

       GnuPG  has  support for PIV cards (``Personal Identity Verification'' as specified by NIST
       Special Publication 800-73-4).  This section describes how to initialize  (personalize)  a
       fresh  Yubikey  token  featuring the PIV application (requires Yubikey-5).  We assume that
       the credentials have not yet been changed and thus are:

       Authentication key
              This is a 24 byte key described by the hex string
              010203040506070801020304050607080102030405060708.

       PIV Application PIN
              This is the string 123456.

       PIN Unblocking Key
              This is the string 12345678.

       See the example section on how to  change  these  defaults.   For  production  use  it  is
       important  to use secure values for them.  Note that the Authentication Key is not queried
       via the usual Pinentry dialog but needs to be entered manually or read from a  file.   The
       use of a dedicated machine to personalize tokens is strongly suggested.

       To  see  what  is on the card, the command list can be given.  We will use the interactive
       mode in the following (the string gpg/card> is the prompt).  An example output for a fresh
       card is:

         gpg/card> list
         Reader ...........: 1050:0407:X:0
         Card type ........: yubikey
         Card firmware ....: 5.1.2
         Serial number ....: D2760001240102010006090746250000
         Application type .: OpenPGP
         Version ..........: 2.1
         [...]

       It  can  be  seen  by  the  ``Application  type''  line  that  GnuPG  selected the OpenPGP
       application of the Yubikey.  This is because GnuPG assigns the  highest  priority  to  the
       OpenPGP  application.   To  use  the PIV application of the Yubikey several methods can be
       used:

       With a Yubikey 5 or later the OpenPGP application on the Yubikey can be disabled:

         gpg/card> yubikey disable all opgp
         gpg/card> yubikey list
         Application  USB    NFC
         -----------------------
         OTP          yes    yes
         U2F          yes    yes
         OPGP         no     no
         PIV          yes    no
         OATH         yes    yes
         FIDO2        yes    yes
         gpg/card> reset

       The reset is required so that the GnuPG system  rereads  the  card.   Note  that  disabled
       applications keep all their data and can at any time be re-enabled (use ‘help yubikey’).

       Another  option,  which  works  for  all  Yubikey  versions, is to disable the support for
       OpenPGP cards in scdaemon.  This is done by adding the line

         disable-application openpgp

       to ‘~/.gnupg/scdaemon.conf’ and by restarting scdaemon, either by killing the  process  or
       by  using ‘gpgconf --kill scdaemon’.  Finally the default order in which card applications
       are tried by scdaemon can be changed.   For example to  prefer  PIV  over  OpenPGP  it  is
       sufficient to add

         application-priority piv

       to  ‘~/.gnupg/scdaemon.conf’  and  to restart scdaemon.  This has an effect only on tokens
       which support both, PIV and OpenPGP, but does not hamper the use of OpenPGP only tokens.

       With one of these methods employed the list command of gpg-card shows this:

         gpg/card> list
         Reader ...........: 1050:0407:X:0
         Card type ........: yubikey
         Card firmware ....: 5.1.2
         Serial number ....: FF020001008A77C1
         Application type .: PIV
         Version ..........: 1.0
         Displayed s/n ....: yk-9074625
         PIN usage policy .: app-pin
         PIN retry counter : - 3 -
         PIV authentication: [none]
               keyref .....: PIV.9A
         Card authenticat. : [none]
               keyref .....: PIV.9E
         Digital signature : [none]
               keyref .....: PIV.9C
         Key management ...: [none]
               keyref .....: PIV.9D

       In case several tokens are plugged into the computer, gpg-card will  show  only  one.   To
       show  another  token the number of the token (0, 1, 2, ...) can be given as an argument to
       the list command.  The command ‘list --cards’ prints a list of all inserted tokens.

       Note that the ``Displayed s/n'' is printed on the token and also shown in Pinentry prompts
       asking  for the PIN.  The four standard key slots are always shown, if other key slots are
       initialized they are shown as  well.   The  PIV  authentication  key  (internal  reference
       PIV.9A)  is  used to authenticate the card and the card holder.  The use of the associated
       private key is protected by the Application PIN which needs to be provided  once  and  the
       key can the be used until the card is reset or removed from the reader or USB port.  GnuPG
       uses this key with its Secure Shell support.  The Card authentication key (PIV.9E) is also
       known as the CAK and used to support physical access applications.  The private key is not
       protected by a PIN and can thus immediately be used.  The Digital signature  key  (PIV.9C)
       is  used  to digitally sign documents.  The use of the associated private key is protected
       by the Application PIN which needs to be provided for each  signing  operation.   The  Key
       management  key (PIV.9D) is used for encryption.  The use of the associated private key is
       protected by the Application PIN which needs to be provided only once so  that  decryption
       operations  can  then  be  done  until the card is reset or removed from the reader or USB
       port.

       We now generate three of the four keys.  Note that GnuPG does currently not  use  the  the
       Card  authentication  key;  however, that key is mandatory by the PIV standard and thus we
       create it too.  Key generation requires that we authenticate to the  card.   This  can  be
       done either on the command line (which would reveal the key):

         gpg/card> auth 010203040506070801020304050607080102030405060708

       or  by  reading the key from a file.  That file needs to consist of one LF terminated line
       with the hex encoded key (as above):

         gpg/card> auth < myauth.key

       As usual ‘help auth’ gives help for this command.  An error message is printed if  a  non-
       matching  key is used.  The authentication is valid until a reset of the card or until the
       card is removed from the reader or the USB port.  Note that that in  non-interactive  mode
       the  ‘<’  needs  to  be  quoted  so  that  the  shell  does  not interpret it as a its own
       redirection symbol.

       Here are the actual commands to generate the keys:

         gpg/card> generate --algo=nistp384 PIV.9A
         PIV card no. yk-9074625 detected
         gpg/card> generate --algo=nistp256 PIV.9E
         PIV card no. yk-9074625 detected
         gpg/card> generate --algo=rsa2048 PIV.9C
         PIV card no. yk-9074625 detected

       If a key has already been created for one of the slots an error will be printed; to create
       a  new key anyway the option ‘--force’ can be used.  Note that only the private and public
       keys have been created but no certificates are stored in the key slots.   In  fact,  GnuPG
       uses  its  own  non-standard  method  to  store  just  the  public key in place of the the
       certificate.  Other application will not be able to make use these  keys  until  gpgsm  or
       another  tool  has been used to create and store the respective certificates.   Let us see
       what the list command now shows:

         gpg/card> list
         Reader ...........: 1050:0407:X:0
         Card type ........: yubikey
         Card firmware ....: 5.1.2
         Serial number ....: FF020001008A77C1
         Application type .: PIV
         Version ..........: 1.0
         Displayed s/n ....: yk-9074625
         PIN usage policy .: app-pin
         PIN retry counter : - 3 -
         PIV authentication: 213D1825FDE0F8240CB4E4229F01AF90AC658C2E
               keyref .....: PIV.9A  (auth)
               algorithm ..: nistp384
         Card authenticat. : 7A53E6CFFE7220A0E646B4632EE29E5A7104499C
               keyref .....: PIV.9E  (auth)
               algorithm ..: nistp256
         Digital signature : 32A6C6FAFCB8421878608AAB452D5470DD3223ED
               keyref .....: PIV.9C  (sign,cert)
               algorithm ..: rsa2048
         Key management ...: [none]
               keyref .....: PIV.9D

       The primary information for each key is the keygrip, a 40 byte hex-string identifying  the
       key.   This  keygrip  is  a unique identifier for the specific parameters of a key.  It is
       used by gpg-agent and other parts of GnuPG to associate a  private  key  to  its  protocol
       specific  certificate  format (X.509, OpenPGP, or SecureShell).  Below the keygrip the key
       reference along with the key usage  capabilities  are  show.   Finally  the  algorithm  is
       printed in the format used by  {gpg}.  At that point no other information is shown because
       for these new keys gpg won't be able to find matching certificates.

       Although we could have created the Key management key also with the generate  command,  we
       will  create that key off-card so that a backup exists.  To accomplish this a key needs to
       be created with either gpg or gpgsm or imported in one of these tools.  In our example  we
       create a self-signed X.509 certificate (exit the gpg-card tool, first):

         $ gpgsm --gen-key -o encr.crt
            (1) RSA
            (2) Existing key
            (3) Existing key from card
         Your selection? 1
         What keysize do you want? (3072) 2048
         Requested keysize is 2048 bits
         Possible actions for a RSA key:
            (1) sign, encrypt
            (2) sign
            (3) encrypt
         Your selection? 3
         Enter the X.509 subject name: CN=Encryption key for yk-9074625,O=example,C=DE
         Enter email addresses (end with an empty line):
         > otto@example.net
         >
         Enter DNS names (optional; end with an empty line):
         >
         Enter URIs (optional; end with an empty line):
         >
         Create self-signed certificate? (y/N) y
         These parameters are used:
             Key-Type: RSA
             Key-Length: 2048
             Key-Usage: encrypt
             Serial: random
             Name-DN: CN=Encryption key for yk-9074625,O=example,C=DE
             Name-Email: otto@example.net

         Proceed with creation? (y/N)
         Now creating self-signed certificate.  This may take a while ...
         gpgsm: about to sign the certificate for key: &34798AAFE0A7565088101CC4AE31C5C8C74461CB
         gpgsm: certificate created
         Ready.
         $ gpgsm --import encr.crt
         gpgsm: certificate imported
         gpgsm: total number processed: 1
         gpgsm:               imported: 1

       Note  the  last step which imported the created certificate.  If you you instead created a
       certificate signing request (CSR) instead of a self-signed certificate and sent  this  off
       to a CA you would do the same import step with the certificate received from the CA.  Take
       note of the keygrip (prefixed with an ampersand) as shown during the certificate  creation
       or  listed it again using ‘gpgsm --with-keygrip -k otto@example.net’.  Now to move the key
       and certificate to the card start gpg-card again and enter:

         gpg/card> writekey PIV.9D 34798AAFE0A7565088101CC4AE31C5C8C74461CB
         gpg/card> writecert PIV.9D < encr.crt

       If you entered a passphrase to protect the private key, you will be asked for it  via  the
       Pinentry  prompt.  On success the key and the certificate has been written to the card and
       a list command shows:

         [...]
         Key management ...: 34798AAFE0A7565088101CC4AE31C5C8C74461CB
               keyref .....: PIV.9D  (encr)
               algorithm ..: rsa2048
               used for ...: X.509
                 user id ..: CN=Encryption key for yk-9074625,O=example,C=DE
                 user id ..: <otto@example.net>

       In case the same key (identified by the keygrip) has been used  for  several  certificates
       you  will  see  several  ``used  for''  parts.   With this the encryption key is now fully
       functional and can be used to decrypt messages encrypted to this certificate.  Take  care:
       the original key is still stored on-disk and should be moved to a backup medium.  This can
       simply be done by copying the file ‘34798AAFE0A7565088101CC4AE31C5C8C74461CB.key’ from the
       directory  ‘~/.gnupg/private-keys-v1.d/’ to the backup medium and deleting the file at its
       original place.

       The final example is to create a self-signed certificate for  digital  signatures.   Leave
       gpg-card using quit or by pressing Control-D and use gpgsm:

         $ gpgsm --learn
         $ gpgsm --gen-key -o sign.crt
         Please select what kind of key you want:
            (1) RSA
            (2) Existing key
            (3) Existing key from card
         Your selection? 3
         Serial number of the card: FF020001008A77C1
         Available keys:
            (1) 213D1825FDE0F8240CB4E4229F01AF90AC658C2E PIV.9A nistp384
            (2) 7A53E6CFFE7220A0E646B4632EE29E5A7104499C PIV.9E nistp256
            (3) 32A6C6FAFCB8421878608AAB452D5470DD3223ED PIV.9C rsa2048
            (4) 34798AAFE0A7565088101CC4AE31C5C8C74461CB PIV.9D rsa2048
         Your selection? 3
         Possible actions for a RSA key:
            (1) sign, encrypt
            (2) sign
            (3) encrypt
         Your selection? 2
         Enter the X.509 subject name: CN=Signing key for yk-9074625,O=example,C=DE
         Enter email addresses (end with an empty line):
         > otto@example.net
         >
         Enter DNS names (optional; end with an empty line):
         >
         Enter URIs (optional; end with an empty line):
         >
         Create self-signed certificate? (y/N)
         These parameters are used:
             Key-Type: card:PIV.9C
             Key-Length: 1024
             Key-Usage: sign
             Serial: random
             Name-DN: CN=Signing key for yk-9074625,O=example,C=DE
             Name-Email: otto@example.net

         Proceed with creation? (y/N) y
         Now creating self-signed certificate.  This may take a while ...
         gpgsm: about to sign the certificate for key: &32A6C6FAFCB8421878608AAB452D5470DD3223ED
         gpgsm: certificate created
         Ready.
         $ gpgsm --import sign.crt
         gpgsm: certificate imported
         gpgsm: total number processed: 1
         gpgsm:               imported: 1

       The  use  of  ‘gpgsm --learn’ is currently necessary so that gpg-agent knows what keys are
       available on the card.  The need  for  this  command  will  eventually  be  removed.   The
       remaining commands are similar to the creation of an on-disk key.  However, here we select
       the ‘Digital signature’ key.  During the creation  process  you  will  be  asked  for  the
       Application PIN of the card.  The final step is to write the certificate to the card using
       gpg-card:

         gpg/card> writecert PIV.9C < sign.crt

       By running list again we will see the fully initialized card:

         Reader ...........: 1050:0407:X:0
         Card type ........: yubikey
         Card firmware ....: 5.1.2
         Serial number ....: FF020001008A77C1
         Application type .: PIV
         Version ..........: 1.0
         Displayed s/n ....: yk-9074625
         PIN usage policy .: app-pin
         PIN retry counter : - [verified] -
         PIV authentication: 213D1825FDE0F8240CB4E4229F01AF90AC658C2E
               keyref .....: PIV.9A  (auth)
               algorithm ..: nistp384
         Card authenticat. : 7A53E6CFFE7220A0E646B4632EE29E5A7104499C
               keyref .....: PIV.9E  (auth)
               algorithm ..: nistp256
         Digital signature : 32A6C6FAFCB8421878608AAB452D5470DD3223ED
               keyref .....: PIV.9C  (sign,cert)
               algorithm ..: rsa2048
               used for ...: X.509
                 user id ..: CN=Signing key for yk-9074625,O=example,C=DE
                 user id ..: <otto@example.net>
         Key management ...: 34798AAFE0A7565088101CC4AE31C5C8C74461CB
               keyref .....: PIV.9D  (encr)
               algorithm ..: rsa2048
               used for ...: X.509
                 user id ..: CN=Encryption key for yk-9074625,O=example,C=DE
                 user id ..: <otto@example.net>

       It is now possible to sign and to encrypt with this card using gpgsm and to use  the  ‘PIV
       authentication’ key with ssh:

         $ ssh-add -l
         384 SHA256:0qnJ0Y0ehWxKcx2frLfEljf6GCdlO55OZed5HqGHsaU cardno:yk-9074625 (ECDSA)

       As  usual  use  ssh-add  with  the  uppercase ‘-L’ to list the public ssh key.  To use the
       certificates with Thunderbird or Mozilla, please consult the Scute manual for details.

       If you want to use the same PIV keys also for OpenPGP (for example on a Yubikey  to  avoid
       switching between OpenPGP and PIV), this is also possible:

         $ gpgsm --learn
         $ gpg --full-gen-key
         Please select what kind of key you want:
            (1) RSA and RSA (default)
            (2) DSA and Elgamal
            (3) DSA (sign only)
            (4) RSA (sign only)
           (14) Existing key from card
         Your selection? 14
         Serial number of the card: FF020001008A77C1
         Available keys:
            (1) 213D1825FDE0F8240CB4E4229F01AF90AC658C2E PIV.9A nistp384 (auth)
            (2) 7A53E6CFFE7220A0E646B4632EE29E5A7104499C PIV.9E nistp256 (auth)
            (3) 32A6C6FAFCB8421878608AAB452D5470DD3223ED PIV.9C rsa2048 (cert,sign)
            (4) 34798AAFE0A7565088101CC4AE31C5C8C74461CB PIV.9D rsa2048 (encr)
         Your selection? 3
         Please specify how long the key should be valid.
                  0 = key does not expire
               <n>  = key expires in n days
               <n>w = key expires in n weeks
               <n>m = key expires in n months
               <n>y = key expires in n years
         Key is valid for? (0)
         Key does not expire at all
         Is this correct? (y/N) y

         GnuPG needs to construct a user ID to identify your key.

         Real name:
         Email address: otto@example.net
         Comment:
         You selected this USER-ID:
             "otto@example.net"

         Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
         gpg: key C3AFA9ED971BB365 marked as ultimately trusted
         gpg: revocation certificate stored as '[...]D971BB365.rev'
         public and secret key created and signed.

         Note that this key cannot be used for encryption.  You may want to use
         the command "--edit-key" to generate a subkey for this purpose.
         pub   rsa2048 2019-04-04 [SC]
               7F899AE2FB73159DD68A1B20C3AFA9ED971BB365
         uid                      otto@example.net

       Note  that  you will be asked two times to enter the PIN of your PIV card.  If you run gpg
       in --expert mode you will also ge given the option to change the usage flags of  the  key.
       The next typescript shows how to add the encryption subkey:

         $ gpg --edit-key 7F899AE2FB73159DD68A1B20C3AFA9ED971BB365
         Secret key is available.

         sec  rsa2048/C3AFA9ED971BB365
              created: 2019-04-04  expires: never       usage: SC
              card-no: FF020001008A77C1
              trust: ultimate      validity: ultimate
         [ultimate] (1). otto@example.net
         gpg> addkey
         Secret parts of primary key are stored on-card.
         Please select what kind of key you want:
            (3) DSA (sign only)
            (4) RSA (sign only)
            (5) Elgamal (encrypt only)
            (6) RSA (encrypt only)
           (14) Existing key from card
         Your selection? 14
         Serial number of the card: FF020001008A77C1
         Available keys:
            (1) 213D1825FDE0F8240CB4E4229F01AF90AC658C2E PIV.9A nistp384 (auth)
            (2) 7A53E6CFFE7220A0E646B4632EE29E5A7104499C PIV.9E nistp256 (auth)
            (3) 32A6C6FAFCB8421878608AAB452D5470DD3223ED PIV.9C rsa2048 (cert,sign)
            (4) 34798AAFE0A7565088101CC4AE31C5C8C74461CB PIV.9D rsa2048 (encr)
         Your selection? 4
         Please specify how long the key should be valid.
                  0 = key does not expire
               <n>  = key expires in n days
               <n>w = key expires in n weeks
               <n>m = key expires in n months
               <n>y = key expires in n years
         Key is valid for? (0)
         Key does not expire at all
         Is this correct? (y/N) y
         Really create? (y/N) y

         sec  rsa2048/C3AFA9ED971BB365
              created: 2019-04-04  expires: never       usage: SC
              card-no: FF020001008A77C1
              trust: ultimate      validity: ultimate
         ssb  rsa2048/7067860A98FCE6E1
              created: 2019-04-04  expires: never       usage: E
              card-no: FF020001008A77C1
         [ultimate] (1). otto@example.net

         gpg> save

       Now you can use your PIV card also with gpg.

OPTIONS

       gpg-card understands these options:

       --with-colons
              This option has currently no effect.

       --status-fd n
              Write  special  status strings to the file descriptor n.  This program returns only
              the status messages SUCCESS or FAILURE which are helpful when  the  caller  uses  a
              double fork approach and can't easily get the return code of the process.

       --verbose
              Enable extra informational output.

       --quiet
              Disable almost all informational output.

       --version
              Print version of the program and exit.

       --help Display a brief help page and exit.

       --no-autostart
              Do  not  start  the  gpg-agent  if  it  has not yet been started and its service is
              required.  This option is mostly useful on machines where the  connection  to  gpg-
              agent has been redirected to another machines.

       --no-history
              In  interactive  mode the command line history is usually saved and restored to and
              from a file below the GnuPG home directory.  This option inhibits the use  of  that
              file.

       --agent-program file
              Specify  the  agent program to be started if none is running.  The default value is
              determined by running gpgconf with the option --list-dirs.

       --gpg-program file
              Specify a non-default gpg binary to be used by certain commands.

       --gpgsm-program file
              Specify a non-default gpgsm binary to be used by certain commands.

       --chuid uid
              Change the current user to uid which may either be a number or a name.  This can be
              used  from  the  root  account to run gpg-card for another user.  If uid is not the
              current UID a standard PATH is set and the envvar GNUPGHOME is unset.  To  override
              the  latter  the option --homedir can be used.  This option has only an effect when
              used on the command line.  This option has currently no effect at all on Windows.

SEE ALSO

       scdaemon(1)