Sha256: c6de2d8224ea206715342f818c1d65f7eacc36bf0c680d39b860ce20c4ee5dd4

Contents?: true

Size: 1.77 KB

Versions: 3

Compression:

Stored size: 1.77 KB

Contents

require File.dirname(__FILE__) + '/spec_helper'

$:.unshift File.dirname(__FILE__) + '/../ext/yubikey_ext'
require 'yubikey_ext.so'

describe 'yubikey_ext' do
  it 'should decode modhex' do
    Yubikey::ModHex.decode('hknhfjbrjnlnldnhcujvddbikngjrtgh').should == "i\266H\034\213\253\242\266\016\217\"\027\233X\315V"
    Yubikey::ModHex.decode('urtubjtnuihvntcreeeecvbregfjibtn').should == "\354\336\030\333\347o\275\f33\017\0345Hq\333"
    
    Yubikey::ModHex.decode('dteffuje').should == "-4N\203"
    
    Yubikey::ModHex.decode('ifhgieif').should == 'test'
    Yubikey::ModHex.decode('hhhvhvhdhbid').should == 'foobar'
    
    Yubikey::ModHex.decode('cc').should == "\000"
  end
  
  it 'should raise if modhex string length uneven' do
    lambda { Yubikey::ModHex.decode('ifh') }.should raise_error(ArgumentError)
  end
  
  it 'should decrypt aes' do
    key = '72992427a3b8ccd20697493b5532561f'.to_bin
    state = 'ddf43aec57366784e061a12f767e728a'.to_bin
    plain = '619dd70df3b30300de1bdb00ffbf6f26'.to_bin
    
    Yubikey::AES.decrypt(state, key).should == plain
  end
  
  it 'should raise if aes key or state length is not 16' do
    lambda { Yubikey::AES.decrypt("i\266H\034\213\253\242\266\016\217\"\027\233X\315V", 'test') }.
      should raise_error(ArgumentError)
    
    lambda { Yubikey::AES.decrypt('test', "\354\336\030\333\347o\275\f33\017\0345Hq\333") }.
      should raise_error(ArgumentError)
  end
  
  it 'should check a crc' do
    Yubikey::CRC.valid?('619dd70df3b30300de1bdb00ffbf6f26'.to_bin).should == true
    Yubikey::CRC.valid?('ddf43aec57366784e061a12f767e728a'.to_bin).should == false
  end
  
  it 'should raise if crc token length not 16' do
    lambda { Yubikey::CRC.valid?('619dd70df3b30300de1bdb00ffbf6f'.to_bin) }.
      should raise_error(ArgumentError)
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
titanous-yubikey-1.0.0 spec/yubikey_ext_spec.rb
titanous-yubikey-1.0.1 spec/yubikey_ext_spec.rb
yubikey-1.0.0 spec/yubikey_ext_spec.rb