apache_authtkt 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/apache_authtkt.rb +18 -10
  3. metadata +10 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 30514640ce14fbe685c0c66f4516d21f7e448e39
4
- data.tar.gz: 943fbebbb53196bed4472d76c929d86ba3cd0619
2
+ SHA256:
3
+ metadata.gz: c94d37a491b1fa4fbc027c2fdef30c1e6bbc9288ed9aa44d9be7ed08d0d86f7c
4
+ data.tar.gz: 0afb18e06ca8fb0d121c28575c28bb3061557dc49720c1ebc2481171e2b82ed6
5
5
  SHA512:
6
- metadata.gz: 4688616bc933b0732e9be7c0067994a85d0d855ad691641db49ffcefb19cb4bc8c7c3e367104af4c5a330b9217b1b0232755890c2df178a82879b1dfb2f8210d
7
- data.tar.gz: 1858437c036dfbb33be18c09ac37f6b7c0876f3fdaaebc2dcdb08d4de270b2bcc0d44676c3a23e169531b3abdfb644a91477a603586c1aa7cbe0c8e066efa497
6
+ metadata.gz: 1c0451431aa9e856f8b2a0ada49d8bf7e93144db16dfeb1c43f43d46adef38191cb41592ee7dbd3f8dd795c39230043924800e3b9d6729ec0413b03df9a16421
7
+ data.tar.gz: e894a6e7b13510253f8deac5da007a911fd9fd21a953b825e671af297a57d9d2c1830259f8916cb7f996a23bda44c8ccffe4ff8935f49f6717b1655fe6becd46
@@ -21,6 +21,7 @@ require 'base64'
21
21
  require 'digest'
22
22
 
23
23
  class ApacheAuthTkt
24
+ class InvalidDigestTypeError < StandardError; end
24
25
 
25
26
  attr_accessor :secret
26
27
  attr_accessor :ipaddr
@@ -30,6 +31,12 @@ class ApacheAuthTkt
30
31
  attr_accessor :base64encode
31
32
  attr_accessor :lifetime
32
33
 
34
+ DIGEST_LENGTHS = {
35
+ 'md5' => 32,
36
+ 'sha256' => 64,
37
+ 'sha512' => 128,
38
+ }
39
+
33
40
  def initialize(args)
34
41
 
35
42
  #puts args.inspect
@@ -58,6 +65,8 @@ class ApacheAuthTkt
58
65
  @digest_type = 'md5'
59
66
  end
60
67
 
68
+ raise(InvalidDigestTypeError, @digest_type) unless DIGEST_LENGTHS[@digest_type.downcase]
69
+
61
70
  if (args.has_key? :base64encode)
62
71
  @base64encode = args[:base64encode]
63
72
  else
@@ -129,15 +138,8 @@ class ApacheAuthTkt
129
138
  digest0 = nil
130
139
  digest = nil
131
140
  raw = ipts + @secret + user + "\0" + tokens + "\0" + data
132
- if (@digest_type == 'md5')
133
- digest0 = Digest::MD5.hexdigest(raw)
134
- digest = Digest::MD5.hexdigest(digest0 + @secret)
135
- elsif (@digest_type == 'sha256')
136
- digest0 = Digest::SHA256.hexdigest(raw)
137
- digest = Digest::SHA256.hexdigest(digest0 + @secret)
138
- else
139
- raise "unsupported digest type: " + @digest_type
140
- end
141
+ digest0 = digest_klass.hexdigest(raw)
142
+ digest = digest_klass.hexdigest(digest0 + @secret)
141
143
  return digest
142
144
  end
143
145
 
@@ -176,7 +178,8 @@ class ApacheAuthTkt
176
178
  # parse it
177
179
  parts = tkt.split(/\!/)
178
180
  parsed = {:tokens => '', :data => ''}
179
- if (packed = parts[0].match('^(.{32})(.{8})(.+)$'))
181
+ digest_length = DIGEST_LENGTHS[@digest_type.downcase]
182
+ if (packed = parts[0].match("^(.{#{digest_length}})(.{8})(.+)$"))
180
183
  parsed[:digest] = packed[1]
181
184
  parsed[:ts] = packed[2].hex
182
185
  parsed[:user] = packed[3]
@@ -202,4 +205,9 @@ class ApacheAuthTkt
202
205
  !(parsed[:ts] + @lifetime >= Time.now.to_i)
203
206
  end
204
207
 
208
+ private
209
+
210
+ def digest_klass
211
+ Digest.const_get(@digest_type.upcase)
212
+ end
205
213
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apache_authtkt
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Johnston
@@ -15,30 +15,30 @@ dependencies:
15
15
  name: rake
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: '10.4'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: '10.4'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rspec
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: '3.3'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: '3.3'
42
42
  description: Ruby client for mod_auth_tkt. See http://www.openfusion.com.au/labs/mod_auth_tkt/
43
43
  email: wjohnston@mpr.org
44
44
  executables: []
@@ -66,9 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  version: '0'
67
67
  requirements: []
68
68
  rubyforge_project: nowarning
69
- rubygems_version: 2.4.8
69
+ rubygems_version: 2.7.6
70
70
  signing_key:
71
71
  specification_version: 4
72
72
  summary: Ruby client for mod_auth_tkt
73
73
  test_files: []
74
- has_rdoc: