Skip to content


Subversion checkout URL

You can clone with
Download ZIP
C Shell
Latest commit a7205c2 @klali klali NEWS for 2.15
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 help2adoc for releases
NEWS NEWS for 2.15
README.adoc symlinked README add coverage processing
cdecode.c fix indentation
cdecode.h Indent code.
cencode.c Indent code.
cencode.h Indent code. add help2adoc for releases
hmac.c Indent code. Add proxy support via Curl
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 Add proxy support via Curl
usha.c Indent code.
ykclient.c Add proxy support via Curl
ykclient.h Add proxy support via Curl
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.