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.
- checksums.yaml +5 -5
- data/lib/apache_authtkt.rb +18 -10
- metadata +10 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c94d37a491b1fa4fbc027c2fdef30c1e6bbc9288ed9aa44d9be7ed08d0d86f7c
|
4
|
+
data.tar.gz: 0afb18e06ca8fb0d121c28575c28bb3061557dc49720c1ebc2481171e2b82ed6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c0451431aa9e856f8b2a0ada49d8bf7e93144db16dfeb1c43f43d46adef38191cb41592ee7dbd3f8dd795c39230043924800e3b9d6729ec0413b03df9a16421
|
7
|
+
data.tar.gz: e894a6e7b13510253f8deac5da007a911fd9fd21a953b825e671af297a57d9d2c1830259f8916cb7f996a23bda44c8ccffe4ff8935f49f6717b1655fe6becd46
|
data/lib/apache_authtkt.rb
CHANGED
@@ -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
|
-
|
133
|
-
|
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
|
-
|
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.
|
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: '
|
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: '
|
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: '
|
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: '
|
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.
|
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:
|