apache_authtkt 2.0.0 → 2.1.0

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.
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: