Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Failed to load latest commit information.
m4 Add shared library versioning script. Use valgrind for self-tests.
tests add a test exposing issue #25
.gitignore add coverage processing
.travis.yml add coverage processing
AUTHORS expand the AUTHORS file
BLURB Doc fix.
COPYING Bump years. add coverage processing
NEWS bump versions
README.adoc symlinked README add coverage processing
cdecode.c fix indentation
cdecode.h Indent code.
cencode.c Indent code.
cencode.h Indent code. bump versions
hmac.c Indent code. Fix versioning script.
sha-private.h Indent code.
sha.h Indent code.
sha1.c Indent code.
sha224-256.c Indent code.
sha384-512.c Indent code.
tool.c client id is unsigned
usha.c Indent code.
ykclient.c move user_agent out of struct since it's static
ykclient.h fix indentation
ykclient_errors.h Cleanup ykclient_errors.h split.
ykclient_server_response.c Fix subdir-objects breakage with latest automake.
ykclient_server_response.h Indent code.
ykclient_version.c Indent code. Indent code.


YubiKey C Client Library: libykclient

YubiKey C Client Library (libykclient) is a C library used to validate an Yubikey OTP against Yubico’s servers. See the Yubico website for more information about Yubico and the YubiKey.


After downloading and unpacking the package tarball, you build it as follows.

make check
sudo make install

Building from version controlled sources

Warning! This is only for developers and if you don’t understand what you are doing, you should download the release files instead.

You may check out the sources using Git with the following command:

git clone git://

This will create a directory yubico-c-client. Enter the directory:

cd yubico-c-client

Recent versions of autoconf, automake and libtool must be installed. Help2man is used to generate the manpages. Libcurl development files (headers and *.so) must also be installed.

Generate the build system using:

autoreconf --install

Then refer to the user sections above regarding building.

Command-line tools

There is one command line tool, ykclient, to validate a particular OTP. It needs a client id, which you can generate here.

Example usage:

jas@mocca:~/src/yubico-c-client$ ./ykclient
Usage: ./ykclient <client_id> <yubikey_otp>
 CLIENT_ID: your client id integer
 YUBIKEY_OTP: One-time password generated by yubikey
jas@mocca:~/src/yubico-c-client$ ./ykclient --debug 16 ccccccbchvthlivuitriujjifivbvtrjkjfirllluurj
  client id: 16
  token: ccccccbchvthlivuitriujjifivbvtrjkjfirllluurj
Verification output (2): Yubikey OTP was replayed (REPLAYED_OTP)


The project is licensed under a BSD license. See the file COPYING for exact wording. For any copyright year range specified as YYYY-ZZZZ in this package note that the range specifies every single year in that closed interval.

Something went wrong with that request. Please try again.