MAN-J
Man PagesPricing
LoginGet Started
gpg-card(1)
Original
English • 806 lines
GPG-CARD(1)		     GNU Privacy Guard 2.4		   GPG-CARD(1)

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)

GnuPG 2.4.8			  2025-02-19			   GPG-CARD(1)

gpg-card(1)

\- Administrate Smart Cards

0popularity

System Information

GnuPG 2.4.8 1.0.0
Updated 2025-02-19
Maintained by Unknown

Actions