rotp 1.4.1 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+