'\" t
.\" Title: piv-tool
.\" Author: [see the "Authors" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 04/05/2024
.\" Manual: OpenSC Tools
.\" Source: opensc
.\" Language: English
.\"
.TH "PIV\-TOOL" "1" "04/05/2024" "opensc" "OpenSC Tools"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
piv-tool \- smart card utility for HSPD\-12 PIV cards
.SH "SYNOPSIS"
.HP \w'\fBpiv\-tool\fR\ 'u
\fBpiv\-tool\fR [\fIOPTIONS\fR]
.SH ""
.PP
The
\fBpiv\-tool\fR
utility can be used from the command line to perform miscellaneous smart card operations on a HSPD\-12 PIV smart card as defined in NIST 800\-73\-3\&. It is intended for use with test cards only\&. It can be used to load objects, and generate key pairs, as well as send arbitrary APDU commands to a card after having authenticated to the card using the card key provided by the card vendor\&.
.SH "OPTIONS"
.PP
.PP
\fB\-\-serial\fR
.RS 4
Print the card serial number derived from the CHUID object, if any\&. Output is in hex byte format\&.
.RE
.PP
\fB\-\-name\fR, \fB\-n\fR
.RS 4
Print the name of the inserted card (driver)
.RE
.PP
\fB\-\-admin\fR \fIargument\fR, \fB\-A\fR \fIargument\fR
.RS 4
Authenticate to the card using a 2DES, 3DES or AES key\&. The
\fIargument\fR
of the form
.sp
.if n \{\
.RS 4
.\}
.nf
{A|M}:\fIref\fR:\fIalg\fR
.fi
.if n \{\
.RE
.\}
.sp
is required, were
A
uses "EXTERNAL AUTHENTICATION" and
M
uses "MUTUAL AUTHENTICATION"\&.
\fIref\fR
is normally
9B, and
\fIalg\fR
is
03
for 3DES,
01
for 2DES,
08
for AES\-128,
0A
for AES\-192 or
0C
for AES\-256\&. The key is provided by the card vendor\&. The environment variable
\fIPIV_EXT_AUTH_KEY\fR
must point to either a binary file matching the length of the key or a text file containing the key in the format:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
.RE
.PP
\fB\-\-genkey\fR \fIargument\fR, \fB\-G\fR \fIargument\fR
.RS 4
Generate a key pair on the card and output the public key\&. The
\fIargument\fR
of the form
.sp
.if n \{\
.RS 4
.\}
.nf
\fIref\fR:\fIalg\fR
.fi
.if n \{\
.RE
.\}
.sp
is required, where
\fIref\fR
is
9A,
9C,
9D
or
9E
and
\fIalg\fR
is
06,
07,
11
or
14
for RSA 1024, RSA 2048, ECC 256 or ECC 384 respectively\&.
.RE
.PP
\fB\-\-object\fR \fIContainerID\fR, \fB\-O\fR \fIContainerID\fR
.RS 4
Load an object onto the card\&. The
\fIContainerID\fR
is as defined in NIST 800\-73\-n without leading
0x\&. Example: CHUID object is 3000
.RE
.PP
\fB\-\-cert\fR \fIref\fR, \fB\-C\fR \fIref\fR
.RS 4
Load a certificate onto the card\&.
\fIref\fR
is
9A,
9C,
9D
or
9E
.RE
.PP
\fB\-\-compresscert\fR \fIref\fR, \fB\-Z\fR \fIref\fR
.RS 4
Load a certificate that has been gzipped onto the card\&.
\fIref\fR
is
9A,
9C,
9D
or
9E
.RE
.PP
\fB\-\-out\fR \fIfile\fR, \fB\-o\fR \fIfile\fR
.RS 4
Output file for any operation that produces output\&.
.RE
.PP
\fB\-\-in\fR \fIfile\fR, \fB\-i\fR \fIfile\fR
.RS 4
Input file for any operation that requires an input file\&.
.RE
.PP
\fB\-\-key\-slots\-discovery\fR \fIfile\fR
.RS 4
Print properties of the key slots\&. Needs \*(Aqadmin\*(Aq authentication\&.
.RE
.PP
\fB\-\-send\-apdu\fR \fIapdu\fR, \fB\-s\fR \fIapdu\fR
.RS 4
Sends an arbitrary APDU to the card in the format
AA:BB:CC:DD:EE:FF\&.\&.\&.\&. This option may be repeated\&.
.RE
.PP
\fB\-\-reader\fR \fIarg\fR, \fB\-r\fR \fIarg\fR
.RS 4
Number of the reader to use\&. By default, the first reader with a present card is used\&. If
\fIarg\fR
is an ATR, the reader with a matching card will be chosen\&.
.RE
.PP
\fB\-\-wait\fR, \fB\-w\fR
.RS 4
Wait for a card to be inserted
.RE
.PP
\fB\-\-verbose\fR, \fB\-v\fR
.RS 4
Causes
\fBpiv\-tool\fR
to be more verbose\&. Specify this flag several times to enable debug output in the opensc library\&.
.RE
.SH "SEE ALSO"
.PP
\fBopensc-tool\fR(1)
.SH "AUTHORS"
.PP
\fBpiv\-tool\fR
was written by Douglas E\&. Engert
\&.