A library to verify, decode, decrypt and parse Yubikey one-time passwords.
key = 'ecde18dbe76fbd0c33330f1c354871db'
otp = 'dteffujehknhfjbrjnlnldnhcujvddbikngjrtgh'
token = Yubikey::OTP.new(otp, key)
p "Device public id: #{token.public_id}" #=> 'dteffuje'
p "Device secret id: #{token.secret_id}" #=> '8792ebfe26cc'
p "Device insertions: #{token.insert_counter}" #=> 19
p "Session activation counter: #{token.session_counter}" #=> 17
p "Session timestamp: #{token.timestamp}" #=> 49712
p "OTP random data: #{token.random_number}" #=> 40904
Use your own api_key
and api_id
, which you can get at yubico.com.
begin
otp = Yubikey::OTP::Verify.new(:api_id => 1234,
:api_key => 'NiSwGZBQ0gTbwXbRGWAf4kM5xXg=',
:otp => 'dteffujehknhfjbrjnlnldnhcujvddbikngjrtgh')
if otp.valid?
p 'valid OTP'
elsif otp.replayed?
p 'replayed OTP'
end
rescue Yubikey::OTP::InvalidOTPError
p 'invalid OTP'
end
Yubikey is available as a gem, to install it just install the gem:
gem install yubikey
If you're using Bundler, add the gem to Gemfile.
gem 'yubikey'
Then run bundle install.
openssl s_client -servername api.yubico.com -showcerts -connect api.yubico.com:443 </dev/null > lib/cert/chain.pem
Written by Jonathan Rudenberg. Copyright (c) 2009 Jonathan Rudenberg
The MIT License. See LICENSE.