Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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  consid-
       ered  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 sec-
       tion 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 op-
       tions 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 sepa-
       rate commands.  Note that a short online	help is	available for all com-
       mands by	prefixing them with ``help''.  Command completion in  the  in-
       teractive mode is also supported.

       AUTHENTICATE [--setkey] [--raw] [< file]|key]
       AUTH   Authenticate  to	the card.  Perform a mutual authentication ei-
	      ther by reading the key from file	or by taking it	from the  com-
	      mand  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	exist-
	      ing 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 in-
	      stead 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 ex-
	      tracted to file.	Note that for current OpenPGP cards a certifi-
	      cate 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  op-
	      tion  --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 un-
	      der  the id keyref.  Option --force allows overwriting an	exist-
	      ing 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-pro-
	      tected-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 exam-
		     ple "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	"shad-
		     owed" 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  de-
       scribes how to initialize (personalize) a fresh Yubikey token featuring
       the  PIV	 application (requires Yubikey-5).  We assume that the creden-
       tials 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  produc-
       tion  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 dedi-
       cated 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  applica-
       tion 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  ef-
       fect  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 associ-
       ated 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  Se-
       cure Shell support.  The	Card authentication key	(PIV.9E) is also known
       as  the CAK and used to support physical	access applications.  The pri-
       vate 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 associ-
       ated  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  com-
       mand 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 un-
       til 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 redirec-
       tion 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  re-
       spective	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 cer-
       tificate	format (X.509, OpenPGP,	or SecureShell).   Below  the  keygrip
       the  key	reference along	with the key usage capabilities	are show.  Fi-
       nally 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 ex-
       ists.   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 im-
       port 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@exam-
       ple.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 cer-
       tificate	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 sev-
       eral 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  sig-
       nature' key.  During the	creation process you will be asked for the Ap-
       plication  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  con-
       sult 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 pos-
       sible:

	 $ 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 op-
       tion 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 ma-
	      chines 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  com-
	      mands.

       --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  lat-
	      ter  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.7			  2025-04-12			   GPG-CARD(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gpg-card&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help