@node p11tool Invocation
@subsection Invoking p11tool
@pindex p11tool
@ignore
#  -*- buffer-read-only: t -*- vi: set ro:
#
# DO NOT EDIT THIS FILE   (invoke-p11tool.texi)
#
# It has been AutoGen-ed
# From the definitions    ../src/p11tool-args.def
# and the template file   agtexi-cmd.tpl
@end ignore


Program that allows operations on PKCS #11 smart cards
and security modules. 

To use PKCS #11 tokens with GnuTLS the p11-kit configuration files need to be setup.
That is create a .module file in /etc/pkcs11/modules with the contents 'module: /path/to/pkcs11.so'.
Alternatively the configuration file /etc/gnutls/pkcs11.conf has to exist and contain 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 environment variables
GNUTLS_PIN and GNUTLS_SO_PIN.


This section was generated by @strong{AutoGen},
using the @code{agtexi-cmd} template and the option descriptions for the @code{p11tool} program.
This software is released under the GNU General Public License, version 3 or later.


@anchor{p11tool usage}
@subsection p11tool help/usage (@option{--help})
@cindex p11tool help

This is the automatically generated usage text for p11tool.

The text printed is the same whether selected with the @code{help} option
(@option{--help}) or the @code{more-help} option (@option{--more-help}).  @code{more-help} will print
the usage text by passing it through a pager program.
@code{more-help} is disabled on platforms without a working
@code{fork(2)} function.  The @code{PAGER} environment variable is
used to select the program, defaulting to @file{more}.  Both will exit
with a status code of 0.

@exampleindent 0
@example
p11tool is unavailable - no --help
@end example
@exampleindent 4

@anchor{p11tool debug}
@subsection debug option (-d)

This is the ``enable debugging'' option.
This option takes a number argument.
Specifies the debug level.
@anchor{p11tool export-chain}
@subsection export-chain option

This is the ``export the certificate specified by the url and its chain of trust'' option.
Exports the certificate specified by the URL and generates its chain of trust based on the stored certificates in the module.
@anchor{p11tool list-all-privkeys}
@subsection list-all-privkeys option

This is the ``list all available private keys in a token'' option.
Lists all the private keys in a token that match the specified URL.
@anchor{p11tool list-privkeys}
@subsection list-privkeys option

This is an alias for the @code{list-all-privkeys} option,
@pxref{p11tool list-all-privkeys, the list-all-privkeys option documentation}.

@anchor{p11tool list-keys}
@subsection list-keys option

This is an alias for the @code{list-all-privkeys} option,
@pxref{p11tool list-all-privkeys, the list-all-privkeys option documentation}.

@anchor{p11tool write}
@subsection write option

This is the ``writes the loaded objects to a pkcs #11 token'' option.
It can be used to write private keys, certificates or secret keys to a token.
@anchor{p11tool generate-random}
@subsection generate-random option

This is the ``generate random data'' option.
This option takes a number argument.
Asks the token to generate a number of bytes of random bytes.
@anchor{p11tool generate-rsa}
@subsection generate-rsa option

This is the ``generate an rsa private-public key pair'' option.
Generates an RSA private-public key pair on the specified token.
@anchor{p11tool generate-dsa}
@subsection generate-dsa option

This is the ``generate a dsa private-public key pair'' option.
Generates a DSA private-public key pair on the specified token.
@anchor{p11tool generate-ecc}
@subsection generate-ecc option

This is the ``generate an ecdsa private-public key pair'' option.
Generates an ECDSA private-public key pair on the specified token.
@anchor{p11tool export-pubkey}
@subsection export-pubkey option

This is the ``export the public key for a private key'' option.
Exports the public key for the specified private key
@anchor{p11tool mark-wrap}
@subsection mark-wrap option

This is the ``marks the generated key to be a wrapping key'' option.

@noindent
This option has some usage constraints.  It:
@itemize @bullet
@item
can be disabled with --no-mark-wrap.
@end itemize

Marks the generated key with the CKA_WRAP flag.
@anchor{p11tool mark-trusted}
@subsection mark-trusted option

This is the ``marks the object to be written as trusted'' option.

@noindent
This option has some usage constraints.  It:
@itemize @bullet
@item
can be disabled with --no-mark-trusted.
@end itemize

Marks the object to be generated/copied with the CKA_TRUST flag.
@anchor{p11tool mark-ca}
@subsection mark-ca option

This is the ``marks the object to be written as a ca'' option.

@noindent
This option has some usage constraints.  It:
@itemize @bullet
@item
can be disabled with --no-mark-ca.
@end itemize

Marks the object to be generated/copied with the CKA_CERTIFICATE_CATEGORY as CA.
@anchor{p11tool mark-private}
@subsection mark-private option

This is the ``marks the object to be written as private'' option.

@noindent
This option has some usage constraints.  It:
@itemize @bullet
@item
can be disabled with --no-mark-private.
@item
It is enabled by default.
@end itemize

Marks the object to be generated/copied with the CKA_PRIVATE flag. The written object will require a PIN to be used.
@anchor{p11tool trusted}
@subsection trusted option

This is an alias for the @code{mark-trusted} option,
@pxref{p11tool mark-trusted, the mark-trusted option documentation}.

@anchor{p11tool ca}
@subsection ca option

This is an alias for the @code{mark-ca} option,
@pxref{p11tool mark-ca, the mark-ca option documentation}.

@anchor{p11tool private}
@subsection private option

This is an alias for the @code{mark-private} option,
@pxref{p11tool mark-private, the mark-private option documentation}.

@anchor{p11tool so-login}
@subsection so-login option

This is the ``force security officer login to token'' option.

@noindent
This option has some usage constraints.  It:
@itemize @bullet
@item
can be disabled with --no-so-login.
@end itemize

Forces login to the token as security officer (admin).
@anchor{p11tool admin-login}
@subsection admin-login option

This is an alias for the @code{so-login} option,
@pxref{p11tool so-login, the so-login option documentation}.

@anchor{p11tool curve}
@subsection curve option

This is the ``specify the curve used for ec key generation'' option.
This option takes a string argument.
Supported values are secp192r1, secp224r1, secp256r1, secp384r1 and secp521r1.
@anchor{p11tool sec-param}
@subsection sec-param option

This is the ``specify the security level'' option.
This option takes a string argument @file{Security parameter}.
This is alternative to the bits option. Available options are [low, legacy, medium, high, ultra].
@anchor{p11tool inder}
@subsection inder option

This is the ``use der/raw format for input'' option.

@noindent
This option has some usage constraints.  It:
@itemize @bullet
@item
can be disabled with --no-inder.
@end itemize

Use DER/RAW format for input certificates and private keys.
@anchor{p11tool inraw}
@subsection inraw option

This is an alias for the @code{inder} option,
@pxref{p11tool inder, the inder option documentation}.

@anchor{p11tool outder}
@subsection outder option

This is the ``use der format for output certificates, private keys, and dh parameters'' option.

@noindent
This option has some usage constraints.  It:
@itemize @bullet
@item
can be disabled with --no-outder.
@end itemize

The output will be in DER or RAW format.
@anchor{p11tool outraw}
@subsection outraw option

This is an alias for the @code{outder} option,
@pxref{p11tool outder, the outder option documentation}.

@anchor{p11tool set-pin}
@subsection set-pin option

This is the ``specify the pin to use on token initialization'' option.
This option takes a string argument.
Alternatively the GNUTLS_PIN environment variable may be used.
@anchor{p11tool set-so-pin}
@subsection set-so-pin option

This is the ``specify the security officer's pin to use on token initialization'' option.
This option takes a string argument.
Alternatively the GNUTLS_SO_PIN environment variable may be used.
@anchor{p11tool provider}
@subsection provider option

This is the ``specify the pkcs #11 provider library'' option.
This option takes a file argument.
This will override the default options in /etc/gnutls/pkcs11.conf
@anchor{p11tool exit status}
@subsection p11tool exit status

One of the following exit values will be returned:
@table @samp
@item 0 (EXIT_SUCCESS)
Successful program execution.
@item 1 (EXIT_FAILURE)
The operation failed or the command syntax was not valid.
@end table
@anchor{p11tool See Also}
@subsection p11tool See Also
    certtool (1)
@anchor{p11tool Examples}
@subsection p11tool Examples
To view all tokens in your system use:
@example
$ p11tool --list-tokens
@end example

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

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

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