All Projects → Yubico → Yubico Piv Tool

Yubico / Yubico Piv Tool

Licence: bsd-2-clause
Command line tool for the YubiKey PIV application

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Yubico Piv Tool

Authelia
The Single Sign-On Multi-Factor portal for web apps
Stars: ✭ 11,094 (+6350%)
Mutual labels:  yubikey
Yubikeylockd
Simple daemon for locking and unlocking macOS with Yubikey
Stars: ✭ 78 (-54.65%)
Mutual labels:  yubikey
Yubikey Manager Qt
Cross-platform application for configuring any YubiKey over all USB interfaces.
Stars: ✭ 137 (-20.35%)
Mutual labels:  yubikey
Yubikey Guide
Guide to using YubiKey for GPG and SSH
Stars: ✭ 6,709 (+3800.58%)
Mutual labels:  yubikey
Dotfiles
Workstation configuration, provisioning and tools
Stars: ✭ 67 (-61.05%)
Mutual labels:  yubikey
Yubikey Agent
yubikey-agent is a seamless ssh-agent for YubiKeys.
Stars: ✭ 1,744 (+913.95%)
Mutual labels:  yubikey
Yubikey Full Disk Encryption
Use YubiKey to unlock a LUKS partition
Stars: ✭ 488 (+183.72%)
Mutual labels:  yubikey
Yubikey Touch Detector
A tool to detect when your YubiKey is waiting for a touch (to send notification or display a visual indicator on the screen)
Stars: ✭ 167 (-2.91%)
Mutual labels:  yubikey
Mkinitcpio Ykfde
Full disk encryption with Yubikey (Yubico key)
Stars: ✭ 72 (-58.14%)
Mutual labels:  yubikey
Yubikey Server
Go implementation of yubikey server to be able to run your own server on network with no access to the official servers.
Stars: ✭ 121 (-29.65%)
Mutual labels:  yubikey
Rage
A simple, secure and modern encryption tool (and Rust library) with small explicit keys, no config options, and UNIX-style composability.
Stars: ✭ 826 (+380.23%)
Mutual labels:  yubikey
Yubikey Full Disk Encryption Secure Boot Uefi
Tutorial to create full disk encryption with YubiKey, encrypted boot partition and secure boot with UEFI
Stars: ✭ 62 (-63.95%)
Mutual labels:  yubikey
Keepassxc
KeePassXC is a cross-platform community-driven port of the Windows application “Keepass Password Safe”.
Stars: ✭ 11,623 (+6657.56%)
Mutual labels:  yubikey
Yubiswitch
OSX status bar application to enable/disable Yubikey Nano
Stars: ✭ 653 (+279.65%)
Mutual labels:  yubikey
Okta Awscli
Provides Okta authentication for awscli
Stars: ✭ 161 (-6.4%)
Mutual labels:  yubikey
Yubico Pam
Yubico Pluggable Authentication Module (PAM)
Stars: ✭ 544 (+216.28%)
Mutual labels:  yubikey
Yubikey Ssh
How to use a Yubikey with OpenSSH without GPG
Stars: ✭ 108 (-37.21%)
Mutual labels:  yubikey
Piv Go
Keys and certificates for YubiKeys, written in Go
Stars: ✭ 172 (+0%)
Mutual labels:  yubikey
Yubitls
A Go TLS/HTTPS server demo that uses a Yubikey as the backend for it's private key
Stars: ✭ 168 (-2.33%)
Mutual labels:  yubikey
Awsu
Enhanced account switching for AWS, supports Yubikey as MFA source
Stars: ✭ 118 (-31.4%)
Mutual labels:  yubikey

== Yubico PIV Tool

=== Introduction The Yubico PIV tool is used for interacting with the Personal Identity Verification (PIV) application on a https://www.yubico.com[YubiKey].

With it you may generate keys on the device, importing keys and certificates, and create certificate requests, and other operations. A shared library and a command-line tool is included.

==== Usage guides For information and examples on what you can do with a PIV enabled YubiKey, see https://developers.yubico.com/PIV/

=== License In general the project is covered by the following BSD license. The file ykcs11/pkcs11.h has additional copyright and licensing information, please see it for more information.


Copyright (c) 2014-2020 Yubico AB All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above
   copyright notice, this list of conditions and the following
   disclaimer in the documentation and/or other materials provided
   with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

=== Building on POSIX platforms Either clone from Git or download and unpackage the tarball, then make sure you have the pre-requisites installed and build following the steps below from the yubico-piv-tool directory.

Please make sure to have recent versions of the following packages installed on your system.

cmake libtool libssl-dev pkg-config check libpcsclite-dev gengetopt help2man

Help2man is used to generate the manpages.
Gengetopt version 2.22.6 or later is needed for command line parameter handling. The link:https://github.com/Yubico/yubico-piv-tool/tree/master/vagrant/development[Vagrant VM] has all these dependencies preinstalled.

$ mkdir build; cd build $ cmake .. $ make $ sudo make install

On macos, you might need to point out homebrew openssl version when running pkg-config.

$ PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig" cmake ..

To statically link to OpenSSL (the libcrypto library), use the cmake option -DOPENSSL_STATIC_LINK=ON

Don't forget you might need to be root for the last command. On Linux it might be needed to update your linked libraries after install

sudo ldconfig

The backend to use is decided at compile time, see the summary at the end of the cmake output. Use --with-backend=foo to choose backend, replacing foo with the backend you want to use. The backends available are "pcsc", "macscard" and "winscard" using the PCSC interface, with slightly different shared library linkage and header file names: "pcsc" is used under GNU-like systems, "macscard" under Mac OS X, and "winscard" is used under Windows. In most situations, running cmake should automatically find the proper backend to use.

=== Building on Windows

Building on Windows require MSBuild or Visual Studio and the MSVC compiler.

On Windows, getopt is needed to read command line arguments. The path to getopt library and include file need to be specified as a command line argument to cmake. Also the path to OpenSSL need to be specified either as a command line argument to cmake or by setting the environment variable OPENSSL_ROOT_DIR

The command line examples bellow are for PowerShell and the prerequisites were installed from source.

$ env:OPENSSL_ROOT_DIR ="PATH/TO/OPENSSL_DIR"
$ mkdir build; cd build
$ cmake -A ARCH -DGETOPT_LIB_DIR="PATH/TO/GETOPT_DIR/lib" -DGETOPT_INCLUDE_DIR="PATH/TO/GETOPT_DIR/include ..
$ cmake --build .

To run the tests, check is used. The path to the check directory needs to be specified as a command line argument to cmake. Also the path to check binaries, OpenSSL binaries, libykpiv.dll and libykcs11.dll need to be in the PATH

$ env:OPENSSL_ROOT_DIR ="PATH/TO/OPENSSL_DIR"
$ mkdir build; cd build
$ cmake -A ARCH -DGETOPT_LIB_DIR="PATH/TO/GETOPT_DIR/lib" -DGETOPT_INCLUDE_DIR="PATH/TO/GETOPT_DIR/include -DCHECK_PATH="PATH/TO/CHECK_DIR" ..
$ cmake --build .
$ $env:Path +=";PATH/TO//CHECK_DIR/bin;PATH/TO/OPENSSL_DIR/bin;PATH/TO/build\lib\Debug;PATH/TO/build\ykcs11\Debug"
$ ctest.exe -C Debug

For building on 32 bits system, use Win32 as ARCH. For building on 64 bits systems, use x64 as ARCH.

==== Coverage

Code coverage is provided courtesy of lcov and https://github.com/RWTH-HPC/CMake-codecov[CMake-codecov]. This currently only works with make.

Enable coverage with

$ cmake -DENABLE_COVERAGE=1 ..

You can then build the project normally and run some executables (for example running the tests with make test).

At this point coverage evaluation can be generated with gcov/lcov related targets. For example

$ make lcov

will generate a single HTML report in ./lcov/html/all_targets/index.html

=== Portability The main development platform is Debian GNU/Linux. The project compiles on Windows using MSVC and the PCSC backend. It can also be built for Mac OS X, also using the PCSC backend.

=== Example Usage For a list of all available options --help can be given. For more information on exactly what happens --verbose or --verbose=2 may be added.

Generate a new ECC-P256 key on device in slot 9a, will print the public key on stdout:

$ yubico-piv-tool -s9a -AECCP256 -agenerate

Generate a certificate request with public key from stdin, will print the resulting request on stdout:

$ yubico-piv-tool -s9a -S'/CN=foo/OU=test/O=example.com/' -averify -arequest

Generate a self-signed certificate with public key from stdin, will print the certificate, for later import, on stdout:

$ yubico-piv-tool -s9a -S'/CN=bar/OU=test/O=example.com/' -averify -aselfsign

Import a certificate from stdin:

$ yubico-piv-tool -s9a -aimport-certificate

Set a random chuid, import a key and import a certificate from a PKCS12 file, into slot 9c:

$ yubico-piv-tool -s9c -itest.pfx -KPKCS12 -aset-chuid -aimport-key
-aimport-cert

Change the management key used for administrative authentication:

$ yubico-piv-tool -aset-mgm-key

Delete a certificate in slot 9a, with management key being asked for:

$ yubico-piv-tool -adelete-certificate -s9a -k

Show some information on certificates and other data:

$ yubico-piv-tool -astatus

Read out the certificate from a slot and then run a signature test:

$ yubico-piv-tool -aread-cert -s9a $ yubico-piv-tool -averify-pin -atest-signature -s9a

Import a key into slot 85 (only available on YubiKey 4 & 5) and set the touch policy (also only available on YubiKey 4 & 5):

$ yubico-piv-tool -aimport-key -s85 --touch-policy=always -ikey.pem

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].