ruby-openid 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 (114) hide show
  1. data/COPYING +21 -0
  2. data/INSTALL +34 -0
  3. data/README +67 -0
  4. data/TODO +9 -0
  5. data/examples/README +54 -0
  6. data/examples/cacert.pem +7815 -0
  7. data/examples/consumer.rb +285 -0
  8. data/examples/openid-store/associations/http-localhost_3A3000_2Fserver-EMQbAy3NnHVzA.s0u5KAcplKGzo +6 -0
  9. data/examples/openid-store/auth_key +1 -0
  10. data/examples/rails_active_record_store/README +59 -0
  11. data/examples/rails_active_record_store/XX_add_openidstore.rb +30 -0
  12. data/examples/rails_active_record_store/models/openid_association.rb +12 -0
  13. data/examples/rails_active_record_store/models/openid_nonce.rb +3 -0
  14. data/examples/rails_active_record_store/models/openid_setting.rb +2 -0
  15. data/examples/rails_active_record_store/openid_helper.rb +91 -0
  16. data/examples/rails_active_record_store/openidstore_test.rb +15 -0
  17. data/examples/rails_active_record_store/schema.mysql.sql +22 -0
  18. data/examples/rails_active_record_store/schema.postgresql.sql +21 -0
  19. data/examples/rails_active_record_store/schema.sqlite.sql +21 -0
  20. data/examples/rails_openid_login_generator/USAGE +23 -0
  21. data/examples/rails_openid_login_generator/openid_login_generator.rb +36 -0
  22. data/examples/rails_openid_login_generator/templates/README +116 -0
  23. data/examples/rails_openid_login_generator/templates/controller.rb +116 -0
  24. data/examples/rails_openid_login_generator/templates/controller_test.rb +0 -0
  25. data/examples/rails_openid_login_generator/templates/helper.rb +2 -0
  26. data/examples/rails_openid_login_generator/templates/openid_login_system.rb +87 -0
  27. data/examples/rails_openid_login_generator/templates/user.rb +14 -0
  28. data/examples/rails_openid_login_generator/templates/user_test.rb +0 -0
  29. data/examples/rails_openid_login_generator/templates/users.yml +0 -0
  30. data/examples/rails_openid_login_generator/templates/view_login.rhtml +15 -0
  31. data/examples/rails_openid_login_generator/templates/view_logout.rhtml +10 -0
  32. data/examples/rails_openid_login_generator/templates/view_welcome.rhtml +9 -0
  33. data/examples/rails_server/README +153 -0
  34. data/examples/rails_server/Rakefile +10 -0
  35. data/examples/rails_server/app/controllers/application.rb +4 -0
  36. data/examples/rails_server/app/controllers/login_controller.rb +35 -0
  37. data/examples/rails_server/app/controllers/server_controller.rb +185 -0
  38. data/examples/rails_server/app/helpers/application_helper.rb +3 -0
  39. data/examples/rails_server/app/helpers/login_helper.rb +2 -0
  40. data/examples/rails_server/app/helpers/server_helper.rb +9 -0
  41. data/examples/rails_server/app/views/layouts/server.rhtml +61 -0
  42. data/examples/rails_server/app/views/login/index.rhtml +32 -0
  43. data/examples/rails_server/app/views/server/decide.rhtml +11 -0
  44. data/examples/rails_server/config/boot.rb +19 -0
  45. data/examples/rails_server/config/database.yml +85 -0
  46. data/examples/rails_server/config/environment.rb +53 -0
  47. data/examples/rails_server/config/environments/development.rb +19 -0
  48. data/examples/rails_server/config/environments/production.rb +19 -0
  49. data/examples/rails_server/config/environments/test.rb +19 -0
  50. data/examples/rails_server/config/routes.rb +23 -0
  51. data/examples/rails_server/db/openid-store/associations/http-localhost_2F_7Cnormal-YU.tkND1J4fEZhnuAoT5Zc0yCA0 +6 -0
  52. data/examples/rails_server/doc/README_FOR_APP +2 -0
  53. data/examples/rails_server/log/development.log +6059 -0
  54. data/examples/rails_server/log/production.log +0 -0
  55. data/examples/rails_server/log/server.log +0 -0
  56. data/examples/rails_server/log/test.log +0 -0
  57. data/examples/rails_server/public/404.html +8 -0
  58. data/examples/rails_server/public/500.html +8 -0
  59. data/examples/rails_server/public/dispatch.cgi +12 -0
  60. data/examples/rails_server/public/dispatch.fcgi +26 -0
  61. data/examples/rails_server/public/dispatch.rb +12 -0
  62. data/examples/rails_server/public/favicon.ico +0 -0
  63. data/examples/rails_server/public/images/rails.png +0 -0
  64. data/examples/rails_server/public/javascripts/controls.js +750 -0
  65. data/examples/rails_server/public/javascripts/dragdrop.js +584 -0
  66. data/examples/rails_server/public/javascripts/effects.js +854 -0
  67. data/examples/rails_server/public/javascripts/prototype.js +1785 -0
  68. data/examples/rails_server/public/robots.txt +1 -0
  69. data/examples/rails_server/script/about +3 -0
  70. data/examples/rails_server/script/breakpointer +3 -0
  71. data/examples/rails_server/script/console +3 -0
  72. data/examples/rails_server/script/destroy +3 -0
  73. data/examples/rails_server/script/generate +3 -0
  74. data/examples/rails_server/script/performance/benchmarker +3 -0
  75. data/examples/rails_server/script/performance/profiler +3 -0
  76. data/examples/rails_server/script/plugin +3 -0
  77. data/examples/rails_server/script/process/reaper +3 -0
  78. data/examples/rails_server/script/process/spawner +3 -0
  79. data/examples/rails_server/script/process/spinner +3 -0
  80. data/examples/rails_server/script/runner +3 -0
  81. data/examples/rails_server/script/server +3 -0
  82. data/examples/rails_server/test/functional/login_controller_test.rb +18 -0
  83. data/examples/rails_server/test/functional/server_controller_test.rb +18 -0
  84. data/examples/rails_server/test/test_helper.rb +28 -0
  85. data/lib/hmac-md5.rb +11 -0
  86. data/lib/hmac-rmd160.rb +11 -0
  87. data/lib/hmac-sha1.rb +11 -0
  88. data/lib/hmac-sha2.rb +25 -0
  89. data/lib/hmac.rb +112 -0
  90. data/lib/openid/association.rb +109 -0
  91. data/lib/openid/consumer.rb +928 -0
  92. data/lib/openid/dh.rb +48 -0
  93. data/lib/openid/discovery.rb +89 -0
  94. data/lib/openid/fetchers.rb +119 -0
  95. data/lib/openid/filestore.rb +315 -0
  96. data/lib/openid/htmltokenizer.rb +355 -0
  97. data/lib/openid/parse.rb +23 -0
  98. data/lib/openid/server.rb +951 -0
  99. data/lib/openid/service.rb +135 -0
  100. data/lib/openid/stores.rb +178 -0
  101. data/lib/openid/trustroot.rb +100 -0
  102. data/lib/openid/util.rb +273 -0
  103. data/test/assoc.rb +38 -0
  104. data/test/consumer.rb +384 -0
  105. data/test/dh.rb +20 -0
  106. data/test/extensions.rb +30 -0
  107. data/test/linkparse.rb +305 -0
  108. data/test/runtests.rb +11 -0
  109. data/test/server2.rb +1053 -0
  110. data/test/storetestcase.rb +172 -0
  111. data/test/teststore.rb +23 -0
  112. data/test/trustroot.rb +113 -0
  113. data/test/util.rb +56 -0
  114. metadata +218 -0
@@ -0,0 +1,172 @@
1
+ require 'openid/util'
2
+ require 'openid/association'
3
+
4
+ module StoreTestCase
5
+
6
+ @@allowed_handle = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
7
+ @@allowed_nonce = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
8
+
9
+ def _gen_nonce
10
+ OpenID::Util.random_string(8, @@allowed_nonce)
11
+ end
12
+
13
+ def _gen_handle(n)
14
+ OpenID::Util.random_string(n, @@allowed_handle)
15
+ end
16
+
17
+ def _gen_secret(n, chars=nil)
18
+ OpenID::Util.random_string(n, chars)
19
+ end
20
+
21
+ def _gen_assoc(issued, lifetime=600)
22
+ secret = _gen_secret(20)
23
+ handle = _gen_handle(128)
24
+ OpenID::Association.new(handle, secret, Time.now.to_i + issued, lifetime,
25
+ 'HMAC-SHA1')
26
+ end
27
+
28
+ def _check_retrieve(url, handle=nil, expected=nil)
29
+ ret_assoc = @store.get_association(url, handle)
30
+
31
+ if expected.nil? or @store.dumb?
32
+ assert_nil(ret_assoc)
33
+ else
34
+ assert_equal(ret_assoc, expected)
35
+ assert_equal(ret_assoc.handle, expected.handle)
36
+ assert_equal(ret_assoc.secret, expected.secret)
37
+ end
38
+ end
39
+
40
+ def _check_remove(url, handle, expected)
41
+ present = @store.remove_association(url, handle)
42
+ expected_present = ((not @store.dumb?) and expected)
43
+ assert ((not expected_present and not present) or \
44
+ (expected_present and present))
45
+ end
46
+
47
+ def test_store
48
+ server_url = "http://www.myopenid.com/openid"
49
+ assoc = _gen_assoc(issued=0)
50
+
51
+ # Make sure that a missing association returns no result
52
+ _check_retrieve(server_url)
53
+
54
+ # Check that after storage, getting returns the same result
55
+ @store.store_association(server_url, assoc)
56
+ _check_retrieve(server_url, nil, assoc)
57
+
58
+ # more than once
59
+ _check_retrieve(server_url, nil, assoc)
60
+
61
+ # Storing more than once has no ill effect
62
+ @store.store_association(server_url, assoc)
63
+ _check_retrieve(server_url, nil, assoc)
64
+
65
+ # Removing an association that does not exist returns not present
66
+ _check_remove(server_url, assoc.handle + 'x', false)
67
+
68
+ # Removing an association that does not exist returns not present
69
+ _check_remove(server_url + 'x', assoc.handle, false)
70
+
71
+ # Removing an association that is present returns present
72
+ _check_remove(server_url, assoc.handle, true)
73
+
74
+ # but not present on subsequent calls
75
+ _check_remove(server_url, assoc.handle, false)
76
+
77
+ # Put assoc back in the store
78
+ @store.store_association(server_url, assoc)
79
+
80
+ # More recent and expires after assoc
81
+ assoc2 = _gen_assoc(issued=1)
82
+ @store.store_association(server_url, assoc2)
83
+
84
+ # After storing an association with a different handle, but the
85
+ # same server_url, the handle with the later expiration is returned.
86
+ _check_retrieve(server_url, nil, assoc2)
87
+
88
+ # We can still retrieve the older association
89
+ _check_retrieve(server_url, assoc.handle, assoc)
90
+
91
+ # Plus we can retrieve the association with the later expiration
92
+ # explicitly
93
+ _check_retrieve(server_url, assoc2.handle, assoc2)
94
+
95
+ # More recent, and expires earlier than assoc2 or assoc. Make sure
96
+ # that we're picking the one with the latest issued date and not
97
+ # taking into account the expiration.
98
+ assoc3 = _gen_assoc(issued=2, lifetime=100)
99
+ @store.store_association(server_url, assoc3)
100
+
101
+ _check_retrieve(server_url, nil, assoc3)
102
+ _check_retrieve(server_url, assoc.handle, assoc)
103
+ _check_retrieve(server_url, assoc2.handle, assoc2)
104
+ _check_retrieve(server_url, assoc3.handle, assoc3)
105
+
106
+ _check_remove(server_url, assoc2.handle, true)
107
+
108
+ _check_retrieve(server_url, nil, assoc3)
109
+ _check_retrieve(server_url, assoc.handle, assoc)
110
+ _check_retrieve(server_url, assoc2.handle, nil)
111
+ _check_retrieve(server_url, assoc3.handle, assoc3)
112
+
113
+ _check_remove(server_url, assoc2.handle, false)
114
+ _check_remove(server_url, assoc3.handle, true)
115
+
116
+ _check_retrieve(server_url, nil, assoc)
117
+ _check_retrieve(server_url, assoc.handle, assoc)
118
+ _check_retrieve(server_url, assoc2.handle, nil)
119
+ _check_retrieve(server_url, assoc3.handle, nil)
120
+
121
+ _check_remove(server_url, assoc2.handle, false)
122
+ _check_remove(server_url, assoc.handle, true)
123
+ _check_remove(server_url, assoc3.handle, false)
124
+
125
+ _check_retrieve(server_url, nil, nil)
126
+ _check_retrieve(server_url, assoc.handle, nil)
127
+ _check_retrieve(server_url, assoc2.handle, nil)
128
+ _check_retrieve(server_url, assoc3.handle, nil)
129
+
130
+ _check_remove(server_url, assoc2.handle, false)
131
+ _check_remove(server_url, assoc.handle, false)
132
+ _check_remove(server_url, assoc3.handle, false)
133
+ end
134
+
135
+ def test_nonce
136
+ nonce1 = _gen_nonce
137
+
138
+ assert_not_nil(nonce1)
139
+
140
+ # a nonce is present by default
141
+ present = @store.use_nonce(nonce1)
142
+ assert_equal(present, false)
143
+
144
+ # Storing once causes use_nonce to return true the first, and only
145
+ # the first, time it is called after the store.
146
+ @store.store_nonce(nonce1)
147
+ present = @store.use_nonce(nonce1)
148
+ assert present
149
+ present = @store.use_nonce(nonce1)
150
+ assert_equal(present, false)
151
+
152
+ # Storing twice has the same effect as storing once.
153
+ @store.store_nonce(nonce1)
154
+ @store.store_nonce(nonce1)
155
+ present = @store.use_nonce(nonce1)
156
+ assert present
157
+ present = @store.use_nonce(nonce1)
158
+ assert_equal(present, false)
159
+
160
+ ### Auth key stuff
161
+
162
+ # there is no key to start with, so generate a new key and return it
163
+ key = @store.get_auth_key
164
+
165
+ # the second time we should return the same key as before
166
+ key2 = @store.get_auth_key
167
+ assert key == key2
168
+ end
169
+
170
+ end
171
+
172
+
data/test/teststore.rb ADDED
@@ -0,0 +1,23 @@
1
+ require 'test/unit'
2
+ require 'fileutils'
3
+ require 'pathname'
4
+ require 'tmpdir'
5
+
6
+ require 'openid/filestore'
7
+ require 'storetestcase'
8
+
9
+ class FileStoreTestCase < Test::Unit::TestCase
10
+ include StoreTestCase
11
+
12
+ @@dir = Pathname.new(Dir.tmpdir).join('filstoretest')
13
+
14
+ def setup
15
+ FileUtils.rm_rf(@@dir)
16
+ @store = OpenID::FilesystemStore.new(@@dir)
17
+ end
18
+
19
+ def teardown
20
+ FileUtils.rm_rf(@@dir)
21
+ end
22
+ end
23
+
data/test/trustroot.rb ADDED
@@ -0,0 +1,113 @@
1
+ require 'test/unit'
2
+ require 'openid/trustroot'
3
+
4
+ class TrustRootTestCase < Test::Unit::TestCase
5
+
6
+ def test_parse_bad
7
+
8
+ def assert_bad(s)
9
+ tr = OpenID::TrustRoot.parse(s)
10
+ assert_nil(tr)
11
+ end
12
+
13
+ assert_bad('baz.org')
14
+ assert_bad('*.foo.com')
15
+ assert_bad('http://*.schtuff.*/')
16
+ assert_bad('ftp://foo.com')
17
+ assert_bad('ftp://*.foo.com')
18
+ assert_bad('http://*.foo.com:80:90/')
19
+ assert_bad('foo.*.com')
20
+ assert_bad('http://foo.*.com')
21
+ assert_bad('http://www.*')
22
+ assert_bad('')
23
+ assert_bad(' ')
24
+ assert_bad(' \t\n ')
25
+ assert_bad(nil)
26
+ assert_bad(5)
27
+ end
28
+
29
+ def test_parse_good
30
+
31
+ def assert_good(s)
32
+ tr = OpenID::TrustRoot.parse(s)
33
+ assert_not_nil(tr)
34
+ end
35
+
36
+ assert_good('http://*/')
37
+ assert_good('https://*/')
38
+ assert_good('http://*.schtuff.com/')
39
+ assert_good('http://*.schtuff.com')
40
+ assert_good('http://www.schtuff.com/')
41
+ assert_good('http://www.schtuff.com')
42
+ assert_good('http://*.this.that.schtuff.com/')
43
+ assert_good('http://*.com/')
44
+ assert_good('http://*.com')
45
+ assert_good('http://*.foo.com/path')
46
+ assert_good('http://x.foo.com/path?action=foo2')
47
+ assert_good('http://*.foo.com/path?action=foo2')
48
+ assert_good('http://localhost:8081/')
49
+ end
50
+
51
+ def test_sane
52
+
53
+ def assert_sane(s, expected)
54
+ tr = OpenID::TrustRoot.parse(s)
55
+ assert_not_nil(tr)
56
+ assert_equal(tr.sane?, expected)
57
+ end
58
+
59
+ assert_sane('http://*/', false)
60
+ assert_sane('https://*/', false)
61
+ assert_sane('http://*.schtuff.com/', true)
62
+ assert_sane('http://*.foo.schtuff.com/', true)
63
+ assert_sane('http://*.com/', false)
64
+ assert_sane('http://*.com.au/', false)
65
+ assert_sane('http://*.co.uk/', false)
66
+ assert_sane('http://localhost:8082/?action=openid', true)
67
+ assert_sane('http://*.foo.notatld', false)
68
+ assert_sane('http://*.museum/', false)
69
+ end
70
+
71
+ def test_validate
72
+
73
+ def assert_valid(s, url, expected)
74
+ tr = OpenID::TrustRoot.parse(s)
75
+ assert_not_nil(tr)
76
+ assert_equal(tr.sane?, true)
77
+ assert_equal(tr.validate_url(url), expected)
78
+ end
79
+
80
+ assert_valid('http://*.foo.com', 'http://b.foo.com', true)
81
+ assert_valid('http://*.foo.com', 'http://b.foo.com/', true)
82
+ assert_valid('http://*.foo.com', 'http://b.foo.com/', true)
83
+ assert_valid('http://*.foo.com', 'http://b.foo.com', true)
84
+ assert_valid('http://*.b.foo.com', 'http://b.foo.com', true)
85
+ assert_valid('http://*.b.foo.com', 'http://x.b.foo.com', true)
86
+ assert_valid('http://*.bar.co.uk', 'http://www.bar.co.uk', true)
87
+ assert_valid('http://*.uoregon.edu', 'http://x.cs.uoregon.edu', true)
88
+
89
+ assert_valid('http://*.cs.uoregon.edu', 'http://x.uoregon.edu', false)
90
+ assert_valid('http://*.foo.com', 'http://bar.com', false)
91
+ assert_valid('http://*.foo.com', 'http://www.bar.com', false)
92
+ assert_valid('http://*.bar.co.uk', 'http://xxx.co.uk', false)
93
+
94
+ # path validity
95
+ assert_valid('http://x.com/abc', 'http://x.com/', false)
96
+ assert_valid('http://x.com/abc', 'http://x.com/a', false)
97
+ assert_valid('http://*.x.com/abc', 'http://foo.x.com/abc', true)
98
+ assert_valid('http://*.x.com/abc', 'http://foo.x.com', false)
99
+ assert_valid('http://*.x.com', 'http://foo.x.com/gallery', true)
100
+ assert_valid('http://foo.x.com', 'http://foo.x.com/gallery', true)
101
+ assert_valid('http://foo.x.com/gallery', 'http://foo.x.com/gallery/xxx', true)
102
+ assert_valid('http://localhost:8081/x?action=openid',
103
+ 'http://localhost:8081/x?action=openid', true)
104
+ assert_valid('http://*.x.com/gallery', 'http://foo.x.com/gallery', true)
105
+
106
+ assert_valid('http://localhost:8082/?action=openid',
107
+ 'http://localhost:8082/?action=openid', true)
108
+ assert_valid('http://goathack.livejournal.org:8020/',
109
+ 'http://goathack.livejournal.org:8020/openid/login.bml', true)
110
+
111
+ end
112
+
113
+ end
data/test/util.rb ADDED
@@ -0,0 +1,56 @@
1
+ require 'test/unit'
2
+
3
+ require "openid/util"
4
+
5
+ class UtilTestCase < Test::Unit::TestCase
6
+
7
+ def test_rand
8
+ max = 155172898181473697471232257763715539915724801966915404479707795314057629378541917580651227423698188993727816152646631438561595825688188889951272158842675419950341258706556549803580104870537681476726513255747040765857479291291572334510643245094715007229621094194349783925984760375594985848253359305585439638443
9
+ r = OpenID::Util.rand(max)
10
+ assert(r < max)
11
+ assert(r >= 0)
12
+ end
13
+
14
+ def test_kvform
15
+ kv = {
16
+ "foo" => "bar",
17
+ "baz" => "hat:pants"
18
+ }
19
+
20
+ parsed = OpenID::Util.kvform(kv)
21
+ unparsed = OpenID::Util.parsekv(parsed)
22
+ assert(kv == unparsed)
23
+ end
24
+
25
+ def test_packing
26
+ cases = [1,2,4305783490578, 457092437545247574732543905702435734958]
27
+ cases.each { |c| assert(c == OpenID::Util.str_to_num(OpenID::Util.num_to_str(c))) }
28
+ end
29
+
30
+ def test_base64
31
+ cases = [
32
+ "",
33
+ "\000",
34
+ "\001",
35
+ "\000" * 100,
36
+ OpenID::Util.random_string(100),
37
+ ]
38
+
39
+ cases.each do |c|
40
+ encoded = OpenID::Util.to_base64(c)
41
+ decoded = OpenID::Util.from_base64(encoded)
42
+ assert(c == decoded)
43
+ end
44
+
45
+ end
46
+
47
+ def test_shortcuts
48
+ max = 155172898181473697471232257763715539915724801966915404479707795314057629378541917580651227423698188993727816152646631438561595825688188889951272158842675419950341258706556549803580104870537681476726513255747040765857479291291572334510643245094715007229621094194349783925984760375594985848253359305585439638443
49
+ x = 5646357865294356435623409524357247359023479579052473
50
+ assert_equal(x, OpenID::Util.base64_to_num(OpenID::Util.num_to_base64(x)))
51
+ assert_equal(max, OpenID::Util.base64_to_num(OpenID::Util.num_to_base64(max)))
52
+ end
53
+
54
+ end
55
+
56
+
metadata ADDED
@@ -0,0 +1,218 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: ruby-openid
5
+ version: !ruby/object:Gem::Version
6
+ version: "1.0"
7
+ date: 2006-05-10 00:00:00 -07:00
8
+ summary: A library for consuming and serving OpenID identities.
9
+ require_paths:
10
+ - lib
11
+ email: brian@janrian.com
12
+ homepage: http://www.openidenabled.com/openid/libraries/ruby
13
+ rubyforge_project:
14
+ description:
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ authors:
29
+ - Brian Ellin (JanRain, Inc)
30
+ files:
31
+ - examples/rails_server
32
+ - examples/consumer.rb
33
+ - examples/README
34
+ - examples/cacert.pem
35
+ - examples/rails_openid_login_generator
36
+ - examples/rails_active_record_store
37
+ - examples/openid-store
38
+ - examples/rails_server/app
39
+ - examples/rails_server/config
40
+ - examples/rails_server/components
41
+ - examples/rails_server/db
42
+ - examples/rails_server/doc
43
+ - examples/rails_server/lib
44
+ - examples/rails_server/log
45
+ - examples/rails_server/public
46
+ - examples/rails_server/script
47
+ - examples/rails_server/test
48
+ - examples/rails_server/vendor
49
+ - examples/rails_server/Rakefile
50
+ - examples/rails_server/README
51
+ - examples/rails_server/app/controllers
52
+ - examples/rails_server/app/helpers
53
+ - examples/rails_server/app/models
54
+ - examples/rails_server/app/views
55
+ - examples/rails_server/app/controllers/application.rb
56
+ - examples/rails_server/app/controllers/login_controller.rb
57
+ - examples/rails_server/app/controllers/server_controller.rb
58
+ - examples/rails_server/app/helpers/application_helper.rb
59
+ - examples/rails_server/app/helpers/login_helper.rb
60
+ - examples/rails_server/app/helpers/server_helper.rb
61
+ - examples/rails_server/app/views/layouts
62
+ - examples/rails_server/app/views/login
63
+ - examples/rails_server/app/views/server
64
+ - examples/rails_server/app/views/layouts/server.rhtml
65
+ - examples/rails_server/app/views/login/index.rhtml
66
+ - examples/rails_server/app/views/server/decide.rhtml
67
+ - examples/rails_server/config/environments
68
+ - examples/rails_server/config/database.yml
69
+ - examples/rails_server/config/routes.rb
70
+ - examples/rails_server/config/boot.rb
71
+ - examples/rails_server/config/environment.rb
72
+ - examples/rails_server/config/environments/production.rb
73
+ - examples/rails_server/config/environments/development.rb
74
+ - examples/rails_server/config/environments/test.rb
75
+ - examples/rails_server/db/openid-server
76
+ - examples/rails_server/db/openid-store
77
+ - examples/rails_server/db/openid-server/nonces
78
+ - examples/rails_server/db/openid-server/associations
79
+ - examples/rails_server/db/openid-server/temp
80
+ - examples/rails_server/db/openid-store/nonces
81
+ - examples/rails_server/db/openid-store/associations
82
+ - examples/rails_server/db/openid-store/temp
83
+ - examples/rails_server/db/openid-store/associations/http-localhost_2F_7Cnormal-YU.tkND1J4fEZhnuAoT5Zc0yCA0
84
+ - examples/rails_server/doc/README_FOR_APP
85
+ - examples/rails_server/lib/tasks
86
+ - examples/rails_server/log/server.log
87
+ - examples/rails_server/log/production.log
88
+ - examples/rails_server/log/development.log
89
+ - examples/rails_server/log/test.log
90
+ - examples/rails_server/public/images
91
+ - examples/rails_server/public/javascripts
92
+ - examples/rails_server/public/stylesheets
93
+ - examples/rails_server/public/dispatch.rb
94
+ - examples/rails_server/public/dispatch.cgi
95
+ - examples/rails_server/public/dispatch.fcgi
96
+ - examples/rails_server/public/404.html
97
+ - examples/rails_server/public/500.html
98
+ - examples/rails_server/public/favicon.ico
99
+ - examples/rails_server/public/robots.txt
100
+ - examples/rails_server/public/images/rails.png
101
+ - examples/rails_server/public/javascripts/prototype.js
102
+ - examples/rails_server/public/javascripts/effects.js
103
+ - examples/rails_server/public/javascripts/dragdrop.js
104
+ - examples/rails_server/public/javascripts/controls.js
105
+ - examples/rails_server/script/performance
106
+ - examples/rails_server/script/process
107
+ - examples/rails_server/script/about
108
+ - examples/rails_server/script/breakpointer
109
+ - examples/rails_server/script/console
110
+ - examples/rails_server/script/destroy
111
+ - examples/rails_server/script/generate
112
+ - examples/rails_server/script/runner
113
+ - examples/rails_server/script/server
114
+ - examples/rails_server/script/plugin
115
+ - examples/rails_server/script/performance/benchmarker
116
+ - examples/rails_server/script/performance/profiler
117
+ - examples/rails_server/script/process/reaper
118
+ - examples/rails_server/script/process/spawner
119
+ - examples/rails_server/script/process/spinner
120
+ - examples/rails_server/test/fixtures
121
+ - examples/rails_server/test/functional
122
+ - examples/rails_server/test/mocks
123
+ - examples/rails_server/test/unit
124
+ - examples/rails_server/test/test_helper.rb
125
+ - examples/rails_server/test/functional/login_controller_test.rb
126
+ - examples/rails_server/test/functional/server_controller_test.rb
127
+ - examples/rails_server/test/mocks/development
128
+ - examples/rails_server/test/mocks/test
129
+ - examples/rails_openid_login_generator/templates
130
+ - examples/rails_openid_login_generator/USAGE
131
+ - examples/rails_openid_login_generator/openid_login_generator.rb
132
+ - examples/rails_openid_login_generator/templates/controller_test.rb
133
+ - examples/rails_openid_login_generator/templates/view_login.rhtml
134
+ - examples/rails_openid_login_generator/templates/controller.rb
135
+ - examples/rails_openid_login_generator/templates/README
136
+ - examples/rails_openid_login_generator/templates/helper.rb
137
+ - examples/rails_openid_login_generator/templates/user.rb
138
+ - examples/rails_openid_login_generator/templates/view_logout.rhtml
139
+ - examples/rails_openid_login_generator/templates/view_welcome.rhtml
140
+ - examples/rails_openid_login_generator/templates/user_test.rb
141
+ - examples/rails_openid_login_generator/templates/users.yml
142
+ - examples/rails_openid_login_generator/templates/openid_login_system.rb
143
+ - examples/rails_active_record_store/models
144
+ - examples/rails_active_record_store/README
145
+ - examples/rails_active_record_store/XX_add_openidstore.rb
146
+ - examples/rails_active_record_store/openid_helper.rb
147
+ - examples/rails_active_record_store/openidstore_test.rb
148
+ - examples/rails_active_record_store/schema.postgresql.sql
149
+ - examples/rails_active_record_store/schema.mysql.sql
150
+ - examples/rails_active_record_store/schema.sqlite.sql
151
+ - examples/rails_active_record_store/models/openid_association.rb
152
+ - examples/rails_active_record_store/models/openid_nonce.rb
153
+ - examples/rails_active_record_store/models/openid_setting.rb
154
+ - examples/openid-store/nonces
155
+ - examples/openid-store/associations
156
+ - examples/openid-store/temp
157
+ - examples/openid-store/auth_key
158
+ - examples/openid-store/associations/http-localhost_3A3000_2Fserver-EMQbAy3NnHVzA.s0u5KAcplKGzo
159
+ - lib/openid
160
+ - lib/hmac-sha2.rb
161
+ - lib/hmac.rb
162
+ - lib/hmac-sha1.rb
163
+ - lib/hmac-rmd160.rb
164
+ - lib/hmac-md5.rb
165
+ - lib/openid/consumer.rb
166
+ - lib/openid/dh.rb
167
+ - lib/openid/fetchers.rb
168
+ - lib/openid/filestore.rb
169
+ - lib/openid/parse.rb
170
+ - lib/openid/stores.rb
171
+ - lib/openid/util.rb
172
+ - lib/openid/server.rb
173
+ - lib/openid/association.rb
174
+ - lib/openid/trustroot.rb
175
+ - lib/openid/discovery.rb
176
+ - lib/openid/htmltokenizer.rb
177
+ - lib/openid/service.rb
178
+ - test/storetestcase.rb
179
+ - test/linkparse.rb
180
+ - test/assoc.rb
181
+ - test/dh.rb
182
+ - test/teststore.rb
183
+ - test/util.rb
184
+ - test/trustroot.rb
185
+ - test/extensions.rb
186
+ - test/consumer.rb
187
+ - test/runtests.rb
188
+ - test/server2.rb
189
+ - README
190
+ - INSTALL
191
+ - COPYING
192
+ - TODO
193
+ test_files:
194
+ - test/runtests.rb
195
+ rdoc_options:
196
+ - --main
197
+ - README
198
+ extra_rdoc_files:
199
+ - README
200
+ - INSTALL
201
+ - COPYING
202
+ - TODO
203
+ executables: []
204
+
205
+ extensions: []
206
+
207
+ requirements: []
208
+
209
+ dependencies:
210
+ - !ruby/object:Gem::Dependency
211
+ name: ruby-yadis
212
+ version_requirement:
213
+ version_requirements: !ruby/object:Gem::Version::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: "0.3"
218
+ version: