rotp 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 1.8.7
5
+ - ree
data/README.markdown CHANGED
@@ -1,4 +1,5 @@
1
1
  # ROTP - The Ruby One Time Password Library
2
+ ![Travis](https://secure.travis-ci.org/mdp/rturk.png)
2
3
 
3
4
  A ruby library for generating one time passwords according to [ RFC 4226 ](http://tools.ietf.org/html/rfc4226) and the [ HOTP RFC ](http://tools.ietf.org/html/draft-mraihi-totp-timebased-00)
4
5
 
data/lib/rotp/otp.rb CHANGED
@@ -17,21 +17,26 @@ module ROTP
17
17
  end
18
18
 
19
19
  # @param [Integer] input the number used seed the HMAC
20
+ # @option padded [Boolean] (false) Output the otp as a 0 padded string
20
21
  # Usually either the counter, or the computed integer
21
22
  # based on the Unix timestamp
22
- def generate_otp(input)
23
+ def generate_otp(input, padded=false)
23
24
  hmac = OpenSSL::HMAC.digest(
24
25
  OpenSSL::Digest::Digest.new(digest),
25
26
  byte_secret,
26
27
  int_to_bytestring(input)
27
28
  )
28
29
 
29
- offset = hmac[19].ord & 0xf
30
+ offset = hmac[-1].ord & 0xf
30
31
  code = (hmac[offset].ord & 0x7f) << 24 |
31
32
  (hmac[offset + 1].ord & 0xff) << 16 |
32
33
  (hmac[offset + 2].ord & 0xff) << 8 |
33
34
  (hmac[offset + 3].ord & 0xff)
34
- code % 10 ** digits
35
+ if padded
36
+ (code % 10 ** digits).to_s.rjust(digits, '0')
37
+ else
38
+ code % 10 ** digits
39
+ end
35
40
  end
36
41
 
37
42
  private
data/lib/rotp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ROTP
2
- VERSION = "1.4.1"
2
+ VERSION = "1.4.2"
3
3
  end
data/rotp.gemspec CHANGED
@@ -20,7 +20,11 @@ Gem::Specification.new do |s|
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
22
 
23
- s.add_development_dependency('rspec')
24
- s.add_development_dependency('timecop')
25
23
  s.add_development_dependency('rake')
24
+ s.add_development_dependency('rspec')
25
+ if RUBY_VERSION < "1.9"
26
+ s.add_development_dependency('timecop', "~>0.5.9.2")
27
+ else
28
+ s.add_development_dependency('timecop')
29
+ end
26
30
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rotp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 4
9
- - 1
10
- version: 1.4.1
9
+ - 2
10
+ version: 1.4.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Mark Percival
@@ -15,10 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-21 00:00:00 Z
18
+ date: 2013-09-04 00:00:00 +00:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- name: rspec
22
+ name: rake
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
24
25
  none: false
@@ -32,7 +33,7 @@ dependencies:
32
33
  type: :development
33
34
  version_requirements: *id001
34
35
  - !ruby/object:Gem::Dependency
35
- name: timecop
36
+ name: rspec
36
37
  prerelease: false
37
38
  requirement: &id002 !ruby/object:Gem::Requirement
38
39
  none: false
@@ -46,17 +47,20 @@ dependencies:
46
47
  type: :development
47
48
  version_requirements: *id002
48
49
  - !ruby/object:Gem::Dependency
49
- name: rake
50
+ name: timecop
50
51
  prerelease: false
51
52
  requirement: &id003 !ruby/object:Gem::Requirement
52
53
  none: false
53
54
  requirements:
54
- - - ">="
55
+ - - ~>
55
56
  - !ruby/object:Gem::Version
56
- hash: 3
57
+ hash: 71
57
58
  segments:
58
59
  - 0
59
- version: "0"
60
+ - 5
61
+ - 9
62
+ - 2
63
+ version: 0.5.9.2
60
64
  type: :development
61
65
  version_requirements: *id003
62
66
  description: Works for both HOTP and TOTP, and includes QR Code provisioning
@@ -71,6 +75,7 @@ extra_rdoc_files: []
71
75
  files:
72
76
  - .gitignore
73
77
  - .rspec
78
+ - .travis.yml
74
79
  - Gemfile
75
80
  - LICENSE
76
81
  - README.markdown
@@ -104,6 +109,7 @@ files:
104
109
  - spec/hotp_spec.rb
105
110
  - spec/spec_helper.rb
106
111
  - spec/totp_spec.rb
112
+ has_rdoc: true
107
113
  homepage: http://github.com/mdp/rotp
108
114
  licenses:
109
115
  - MIT
@@ -133,12 +139,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
139
  requirements: []
134
140
 
135
141
  rubyforge_project: rotp
136
- rubygems_version: 1.8.18
142
+ rubygems_version: 1.6.2
137
143
  signing_key:
138
144
  specification_version: 3
139
145
  summary: A Ruby library for generating and verifying one time passwords
140
- test_files:
141
- - spec/base_spec.rb
142
- - spec/hotp_spec.rb
143
- - spec/spec_helper.rb
144
- - spec/totp_spec.rb
146
+ test_files: []
147
+