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

FreeBSD Manual Pages

  
 
  

home | help
p11tool(1)			  User Commands 		      p11tool(1)

NAME
     p11tool - GnuTLS PKCS #11 tool

SYNOPSIS
     p11tool [-flags] [-flag [value]] [--option-name[[=| ]value]] [url]

     Operands and options may be intermixed.  They will be reordered.

DESCRIPTION
     Program  that  allows  operations on PKCS #11 smart cards and security mod-
     ules.

     To use PKCS #11 tokens with GnuTLS the p11-kit configuration files need  to
     be  setup.   That is create a .module file in /usr/local/share/p11-kit/mod-
     ules with the contents  'module:  /path/to/pkcs11.so'.   Alternatively  the
     configuration  file /usr/local/etc/gnutls/pkcs11.conf has to exist and con-
     tain a number of lines of the form 'load=/usr/lib/opensc-pkcs11.so'.

     You can provide the PIN to be used for the PKCS #11 operations with the en-
     vironment variables GNUTLS_PIN and GNUTLS_SO_PIN.

OPTIONS
   Tokens
     --list-tokens List all available tokens.

     --list-token-urls List the URLs available tokens.

     This is a more compact version of --list-tokens.

     --list-mechanisms List all available mechanisms in a token.

     --initialize Initializes a PKCS #11 token.

     --initialize-pin Initializes/Resets a PKCS #11 token user PIN.

     --initialize-so-pin Initializes/Resets a PKCS #11	token  security  officer
     PIN.

     This  initializes	the  security officer's PIN. When used non-interactively
     use the GNUTLS_NEW_SO_PIN environment variables to initialize SO's PIN.

     --set-pin=str Specify the PIN to use on token operations.

     Alternatively the GNUTLS_PIN environment variable may be used.

     --set-so-pin=str Specify the Security Officer's PIN to use  on  token  ini-
     tialization.

     Alternatively the GNUTLS_SO_PIN environment variable may be used.

	Object listing

     --list-all List all available objects in a token.

     All objects available in the token will be listed. That includes objects
     which are potentially unaccessible using this tool.

     --list-all-certs List all available certificates in a token.

     That option will also provide more information on the certificates, for ex-
     ample,   expand   the   attached	extensions   in   a  trust  token  (like
     p11-kit-trust).

     --list-certs List all certificates that have an associated private key.

     That option will only display certificates which have a private key associ-
     ated with them (share the same ID).

     --list-all-privkeys List all available private keys in a token.

     Lists all the private keys in a token that match the specified URL.

     --list-privkeys This is an alias for the --list-all-privkeys option.

     --list-keys This is an alias for the --list-all-privkeys option.

     --list-all-trusted List all available certificates marked as trusted.

     --export Export the object specified by the URL.  This option must not  ap-
     pear  in combination with any of the following options: export-stapled, ex-
     port-chain, export-pubkey.

     --export-stapled Export the certificate object specified by the URL.   This
     option  must  not	appear in combination with any of the following options:
     export, export-chain, export-pubkey.

     Exports the certificate specified by the URL while including  any	attached
     extensions  to it.  Since attached extensions are a p11-kit extension, this
     option is only available on p11-kit registered trust modules.

     --export-chain Export the certificate specified by the URL and its chain of
     trust.  This option must not appear in combination with any of the  follow-
     ing options: export-stapled, export, export-pubkey.

     Exports  the  certificate	specified  by the URL and generates its chain of
     trust based on the stored certificates in the module.

     --export-pubkey Export the public key for a private key.  This option  must
     not  appear  in  combination with any of the following options: export-sta-
     pled, export, export-chain.

     Exports the public key for the specified private key

     --info List information on an available object in a token.

     --trusted This is an alias for the --mark-trusted option.

     --distrusted This is an alias for the --mark-distrusted option.

	Key generation

     --generate-privkey=str Generate private-public key pair of given type.

     Generates a private-public key pair in the specified token.  Acceptable
     types are RSA, ECDSA, Ed25519, and DSA. Should be combined with --sec-param
     or --bits.

     --generate-rsa Generate an RSA private-public key pair.

     Generates an RSA private-public key pair on the specified token.  Should be
     combined with --sec-param or --bits.

     NOTE: THIS OPTION IS DEPRECATED

     --generate-dsa Generate a DSA private-public key pair.

     Generates a DSA private-public key pair on the specified token.  Should be
     combined with --sec-param or --bits.

     NOTE: THIS OPTION IS DEPRECATED

     --generate-ecc Generate an ECDSA private-public key pair.

     Generates an ECDSA private-public key pair on the specified token.  Should
     be combined with --curve, --sec-param or --bits.

     NOTE: THIS OPTION IS DEPRECATED

     --bits=num Specify the number of bits for the key generate.  This option
     takes an integer number as its argument.

     For applications which have no key-size restrictions the --sec-param option
     is recommended, as the sec-param levels will adapt to the acceptable secu-
     rity levels with the new versions of gnutls.

     --curve=str Specify the curve used for EC key generation.

     Supported	values	are  secp192r1,  secp224r1,  secp256r1,  secp384r1   and
     secp521r1.

     --sec-param=security parameter Specify the security level.

     This is alternative to the bits option. Available options are [low, legacy,
     medium, high, ultra].

	Writing objects

     --set-id=str Set the CKA_ID (in hex) for the specified by the URL object.
     This option must not appear in combination with any of the following op-
     tions: write.

     Modifies or sets the CKA_ID in the specified by the URL object. The ID
     should be specified in hexadecimal format without a '0x' prefix.

     --set-label=str  Set  the	CKA_LABEL  for	the specified by the URL object.
     This option must not appear in combination with any of  the  following  op-
     tions: write, set-id.

     Modifies or sets the CKA_LABEL in the specified by the URL object

     --write Writes the loaded objects to a PKCS #11 token.

     It  can  be used to write private, public keys, certificates or secret keys
     to a token. Must be combined with	one  of  --load-privkey,  --load-pubkey,
     --load-certificate option.

     When  writing a certificate object, its CKA_ID is set to the same CKA_ID of
     the corresponding public key, if it exists on the token; otherwise it  will
     be  derived  from	the  X.509 Subject Key Identifier of the certificate. If
     this behavior is undesired, write the public key to the token beforehand.

     --delete Deletes the objects matching the given PKCS #11 URL.

     --label=str Sets a label for the write operation.

     --id=str Sets an ID for the write operation.

     Sets the CKA_ID to be set by the write operation. The ID should  be  speci-
     fied in hexadecimal format without a '0x' prefix.

     --mark-wrap,  --no-mark-wrap  Marks the generated key to be a wrapping key.
     The no-mark-wrap form will disable the option.

     Marks the generated key with the CKA_WRAP flag.

     --mark-trusted,  --no-mark-trusted  Marks	the  object  to  be  written  as
     trusted.	This  option must not appear in combination with any of the fol-
     lowing options: mark-distrusted.  The no-mark-trusted form will disable the
     option.

     Marks the object to be generated/written with the CKA_TRUST flag.

     --mark-distrusted When retrieving objects, it requires the  objects  to  be
     distrusted.   This  option  must  not appear in combination with any of the
     following options: mark-trusted.

     Ensures that the objects retrieved have  the  CKA_X_TRUST	flag.	This  is
     p11-kit  trust  module extension, thus this flag is only valid with p11-kit
     registered trust modules.

     --mark-decrypt, --no-mark-decrypt Marks the object to be  written	for  de-
     cryption.	The no-mark-decrypt form will disable the option.

     Marks  the  object to be generated/written with the CKA_DECRYPT flag set to
     true.

     --mark-sign, --no-mark-sign Marks the object to be  written  for  signature
     generation.  The no-mark-sign form will disable the option.

     Marks  the  object  to  be  generated/written with the CKA_SIGN flag set to
     true.

     --mark-ca, --no-mark-ca Marks the object  to  be  written	as  a  CA.   The
     no-mark-ca form will disable the option.

     Marks  the object to be generated/written with the CKA_CERTIFICATE_CATEGORY
     as CA.

     --mark-private, --no-mark-private Marks the object to be  written	as  pri-
     vate.  The no-mark-private form will disable the option.

     Marks  the  object  to  be generated/written with the CKA_PRIVATE flag. The
     written object will require a PIN to be used.

     --ca This is an alias for the --mark-ca option.

     --private This is an alias for the --mark-private option.

     --mark-always-authenticate, --no-mark-always-authenticate Marks the  object
     to be written as always authenticate.  The no-mark-always-authenticate form
     will disable the option.

     Marks  the  object to be generated/written with the CKA_ALWAYS_AUTHENTICATE
     flag. The written object will Mark the object as  requiring  authentication
     (pin entry) before every operation.

     --secret-key=str Provide a hex encoded secret key.

     This secret key will be written to the module if --write is specified.

     --load-privkey=file Private key file to use.

     --load-pubkey=file Public key file to use.

     --load-certificate=file Certificate file to use.

	Other options

     -d num, --debug=num Enable debugging.  This option takes an integer number
     as its argument.  The value of num is constrained to being:
	 in the range 0 through 9999

     Specifies the debug level.

     --outfile=str Output file.

     --login,  --no-login  Force  (user) login to token.  The no-login form will
     disable the option.

     --so-login, --no-so-login Force  security	officer  login	to  token.   The
     no-so-login form will disable the option.

     Forces login to the token as security officer (admin).

     --admin-login This is an alias for the --so-login option.

     --test-sign Tests the signature operation of the provided object.

     It  can  be  used to test the correct operation of the signature operation.
     If both a private and a public key are available this operation  will  sign
     and verify the signed data.

     --sign-params=str Sign with a specific signature algorithm.

     This  option can be combined with --test-sign, to sign with a specific sig-
     nature algorithm variant. The  only  option  supported  is  'RSA-PSS',  and
     should be specified in order to use RSA-PSS signature on RSA keys.

     --hash=str Hash algorithm to use for signing.

     This  option  can	be combined with test-sign. Available hash functions are
     SHA1,  RMD160,  SHA256,  SHA384,  SHA512,	SHA3-224,  SHA3-256,   SHA3-384,
     SHA3-512.

     --generate-random=num  Generate  random data.  This option takes an integer
     number as its argument.

     Asks the token to generate a number of bytes of random bytes.

     -8, --pkcs8 Use PKCS #8 format for private keys.

     --inder, --no-inder Use DER/RAW format for input.	The no-inder  form  will
     disable the option.

     Use DER/RAW format for input certificates and private keys.

     --inraw This is an alias for the --inder option.

     --outder, --no-outder Use DER format for output certificates, private keys,
     and DH parameters.  The no-outder form will disable the option.

     The output will be in DER or RAW format.

     --outraw This is an alias for the --outder option.

     --provider=file Specify the PKCS #11 provider library.

     This will override the default options in /usr/local/etc/gnutls/pkcs11.conf

     --provider-opts=str Specify parameters for the PKCS #11 provider library.

     This is a PKCS#11 internal option used by few modules.
	 Mainly for testing PKCS#11 modules.

     NOTE: THIS OPTION IS DEPRECATED

     --detailed-url, --no-detailed-url Print detailed URLs.  The no-detailed-url
     form will disable the option.

     --only-urls Print a compact listing using only the URLs.

     --batch Disable all interaction with the tool.

     In batch mode there will be no prompts, all parameters need to be specified
     on command line.

     -v arg, --version=arg Output version of program and exit.	The default mode
     is  `v',  a  simple version.  The `c' mode will print copyright information
     and `n' will print the full copyright notice.

     -h, --help Display usage information and exit.

     -!, --more-help Pass the extended usage information through a pager.

     EXAMPLES
	    To view all tokens in your system use:
		$ p11tool --list-tokens

	    To view all objects in a token use:
		$ p11tool --login --list-all "pkcs11:TOKEN-URL"

	    To store a private key and a certificate in a token run:
		$ p11tool --login --write "pkcs11:URL" --load-privkey key.pem		--label "Mykey"
		$ p11tool --login --write "pkcs11:URL" --load-certificate cert.pem	     --label "Mykey"
	    Note that some tokens require the same label to be used for the cer-
	    tificate and its corresponding private key.

	    To generate an RSA private key inside the token use:
		$ p11tool --login --generate-privkey rsa --bits 1024 --label "MyNewKey" 	  --outfile MyNewKey.pub "pkcs11:TOKEN-URL"
	    The bits parameter in the above example is	explicitly  set  because
	    some tokens only support limited choices in the bit length. The out-
	    put  file  is  the corresponding public key. This key can be used to
	    general a certificate request with certtool.
		certtool --generate-request --load-privkey "pkcs11:KEY-URL"    --load-pubkey MyNewKey.pub --outfile request.pem

EXIT STATUS
     One of the following exit values will be returned:

     0	(EXIT_SUCCESS) Successful program execution.

     1	(EXIT_FAILURE) The operation failed or the command syntax was not valid.

     SEE ALSO
	    certtool (1)

AUTHORS
COPYRIGHT
     Copyright (C) 2020-2023  Free  Software  Foundation,  and	others	all
     rights  reserved.	This program is released under the terms of the GNU
     General Public License, version 3 or later

BUGS
     Please send bug reports to: bugs@gnutls.org

3.8.13				   29 Apr 2026			      p11tool(1)

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

home | help