pelle-ruby-openid 2.1.8

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 (197) hide show
  1. data/CHANGELOG +215 -0
  2. data/CHANGES-2.1.0 +36 -0
  3. data/INSTALL +47 -0
  4. data/LICENSE +210 -0
  5. data/NOTICE +2 -0
  6. data/README +82 -0
  7. data/UPGRADE +127 -0
  8. data/VERSION +1 -0
  9. data/examples/README +32 -0
  10. data/examples/active_record_openid_store/README +58 -0
  11. data/examples/active_record_openid_store/XXX_add_open_id_store_to_db.rb +24 -0
  12. data/examples/active_record_openid_store/XXX_upgrade_open_id_store.rb +26 -0
  13. data/examples/active_record_openid_store/init.rb +8 -0
  14. data/examples/active_record_openid_store/lib/association.rb +10 -0
  15. data/examples/active_record_openid_store/lib/nonce.rb +3 -0
  16. data/examples/active_record_openid_store/lib/open_id_setting.rb +4 -0
  17. data/examples/active_record_openid_store/lib/openid_ar_store.rb +57 -0
  18. data/examples/active_record_openid_store/test/store_test.rb +212 -0
  19. data/examples/discover +49 -0
  20. data/examples/rails_openid/README +153 -0
  21. data/examples/rails_openid/Rakefile +10 -0
  22. data/examples/rails_openid/app/controllers/application.rb +4 -0
  23. data/examples/rails_openid/app/controllers/consumer_controller.rb +122 -0
  24. data/examples/rails_openid/app/controllers/login_controller.rb +45 -0
  25. data/examples/rails_openid/app/controllers/server_controller.rb +265 -0
  26. data/examples/rails_openid/app/helpers/application_helper.rb +3 -0
  27. data/examples/rails_openid/app/helpers/login_helper.rb +2 -0
  28. data/examples/rails_openid/app/helpers/server_helper.rb +9 -0
  29. data/examples/rails_openid/app/views/consumer/index.rhtml +81 -0
  30. data/examples/rails_openid/app/views/layouts/server.rhtml +68 -0
  31. data/examples/rails_openid/app/views/login/index.rhtml +56 -0
  32. data/examples/rails_openid/app/views/server/decide.rhtml +26 -0
  33. data/examples/rails_openid/config/boot.rb +19 -0
  34. data/examples/rails_openid/config/database.yml +74 -0
  35. data/examples/rails_openid/config/environment.rb +54 -0
  36. data/examples/rails_openid/config/environments/development.rb +19 -0
  37. data/examples/rails_openid/config/environments/production.rb +19 -0
  38. data/examples/rails_openid/config/environments/test.rb +19 -0
  39. data/examples/rails_openid/config/routes.rb +24 -0
  40. data/examples/rails_openid/doc/README_FOR_APP +2 -0
  41. data/examples/rails_openid/public/.htaccess +40 -0
  42. data/examples/rails_openid/public/404.html +8 -0
  43. data/examples/rails_openid/public/500.html +8 -0
  44. data/examples/rails_openid/public/dispatch.cgi +12 -0
  45. data/examples/rails_openid/public/dispatch.fcgi +26 -0
  46. data/examples/rails_openid/public/dispatch.rb +12 -0
  47. data/examples/rails_openid/public/favicon.ico +0 -0
  48. data/examples/rails_openid/public/images/openid_login_bg.gif +0 -0
  49. data/examples/rails_openid/public/javascripts/controls.js +750 -0
  50. data/examples/rails_openid/public/javascripts/dragdrop.js +584 -0
  51. data/examples/rails_openid/public/javascripts/effects.js +854 -0
  52. data/examples/rails_openid/public/javascripts/prototype.js +1785 -0
  53. data/examples/rails_openid/public/robots.txt +1 -0
  54. data/examples/rails_openid/script/about +3 -0
  55. data/examples/rails_openid/script/breakpointer +3 -0
  56. data/examples/rails_openid/script/console +3 -0
  57. data/examples/rails_openid/script/destroy +3 -0
  58. data/examples/rails_openid/script/generate +3 -0
  59. data/examples/rails_openid/script/performance/benchmarker +3 -0
  60. data/examples/rails_openid/script/performance/profiler +3 -0
  61. data/examples/rails_openid/script/plugin +3 -0
  62. data/examples/rails_openid/script/process/reaper +3 -0
  63. data/examples/rails_openid/script/process/spawner +3 -0
  64. data/examples/rails_openid/script/process/spinner +3 -0
  65. data/examples/rails_openid/script/runner +3 -0
  66. data/examples/rails_openid/script/server +3 -0
  67. data/examples/rails_openid/test/functional/login_controller_test.rb +18 -0
  68. data/examples/rails_openid/test/functional/server_controller_test.rb +18 -0
  69. data/examples/rails_openid/test/test_helper.rb +28 -0
  70. data/lib/hmac/hmac.rb +112 -0
  71. data/lib/hmac/sha1.rb +11 -0
  72. data/lib/hmac/sha2.rb +25 -0
  73. data/lib/openid/association.rb +249 -0
  74. data/lib/openid/consumer/associationmanager.rb +344 -0
  75. data/lib/openid/consumer/checkid_request.rb +186 -0
  76. data/lib/openid/consumer/discovery.rb +498 -0
  77. data/lib/openid/consumer/discovery_manager.rb +123 -0
  78. data/lib/openid/consumer/html_parse.rb +134 -0
  79. data/lib/openid/consumer/idres.rb +523 -0
  80. data/lib/openid/consumer/responses.rb +148 -0
  81. data/lib/openid/consumer.rb +395 -0
  82. data/lib/openid/cryptutil.rb +97 -0
  83. data/lib/openid/dh.rb +89 -0
  84. data/lib/openid/extension.rb +39 -0
  85. data/lib/openid/extensions/ax.rb +516 -0
  86. data/lib/openid/extensions/oauth.rb +91 -0
  87. data/lib/openid/extensions/pape.rb +179 -0
  88. data/lib/openid/extensions/sreg.rb +277 -0
  89. data/lib/openid/extras.rb +11 -0
  90. data/lib/openid/fetchers.rb +238 -0
  91. data/lib/openid/kvform.rb +136 -0
  92. data/lib/openid/kvpost.rb +58 -0
  93. data/lib/openid/message.rb +553 -0
  94. data/lib/openid/protocolerror.rb +8 -0
  95. data/lib/openid/server.rb +1544 -0
  96. data/lib/openid/store/filesystem.rb +271 -0
  97. data/lib/openid/store/interface.rb +75 -0
  98. data/lib/openid/store/memcache.rb +107 -0
  99. data/lib/openid/store/memory.rb +84 -0
  100. data/lib/openid/store/nonce.rb +68 -0
  101. data/lib/openid/trustroot.rb +349 -0
  102. data/lib/openid/urinorm.rb +75 -0
  103. data/lib/openid/util.rb +110 -0
  104. data/lib/openid/yadis/accept.rb +148 -0
  105. data/lib/openid/yadis/constants.rb +21 -0
  106. data/lib/openid/yadis/discovery.rb +153 -0
  107. data/lib/openid/yadis/filters.rb +205 -0
  108. data/lib/openid/yadis/htmltokenizer.rb +305 -0
  109. data/lib/openid/yadis/parsehtml.rb +45 -0
  110. data/lib/openid/yadis/services.rb +42 -0
  111. data/lib/openid/yadis/xrds.rb +155 -0
  112. data/lib/openid/yadis/xri.rb +90 -0
  113. data/lib/openid/yadis/xrires.rb +106 -0
  114. data/lib/openid.rb +20 -0
  115. data/setup.rb +1551 -0
  116. data/test/data/accept.txt +124 -0
  117. data/test/data/dh.txt +29 -0
  118. data/test/data/example-xrds.xml +14 -0
  119. data/test/data/linkparse.txt +587 -0
  120. data/test/data/n2b64 +650 -0
  121. data/test/data/test1-discover.txt +137 -0
  122. data/test/data/test1-parsehtml.txt +152 -0
  123. data/test/data/test_discover/malformed_meta_tag.html +19 -0
  124. data/test/data/test_discover/openid.html +11 -0
  125. data/test/data/test_discover/openid2.html +11 -0
  126. data/test/data/test_discover/openid2_xrds.xml +12 -0
  127. data/test/data/test_discover/openid2_xrds_no_local_id.xml +11 -0
  128. data/test/data/test_discover/openid_1_and_2.html +11 -0
  129. data/test/data/test_discover/openid_1_and_2_xrds.xml +16 -0
  130. data/test/data/test_discover/openid_1_and_2_xrds_bad_delegate.xml +17 -0
  131. data/test/data/test_discover/openid_and_yadis.html +12 -0
  132. data/test/data/test_discover/openid_no_delegate.html +10 -0
  133. data/test/data/test_discover/yadis_0entries.xml +12 -0
  134. data/test/data/test_discover/yadis_2_bad_local_id.xml +15 -0
  135. data/test/data/test_discover/yadis_2entries_delegate.xml +22 -0
  136. data/test/data/test_discover/yadis_2entries_idp.xml +21 -0
  137. data/test/data/test_discover/yadis_another_delegate.xml +14 -0
  138. data/test/data/test_discover/yadis_idp.xml +12 -0
  139. data/test/data/test_discover/yadis_idp_delegate.xml +13 -0
  140. data/test/data/test_discover/yadis_no_delegate.xml +11 -0
  141. data/test/data/test_xrds/=j3h.2007.11.14.xrds +25 -0
  142. data/test/data/test_xrds/README +12 -0
  143. data/test/data/test_xrds/delegated-20060809-r1.xrds +34 -0
  144. data/test/data/test_xrds/delegated-20060809-r2.xrds +34 -0
  145. data/test/data/test_xrds/delegated-20060809.xrds +34 -0
  146. data/test/data/test_xrds/no-xrd.xml +7 -0
  147. data/test/data/test_xrds/not-xrds.xml +2 -0
  148. data/test/data/test_xrds/prefixsometimes.xrds +34 -0
  149. data/test/data/test_xrds/ref.xrds +109 -0
  150. data/test/data/test_xrds/sometimesprefix.xrds +34 -0
  151. data/test/data/test_xrds/spoof1.xrds +25 -0
  152. data/test/data/test_xrds/spoof2.xrds +25 -0
  153. data/test/data/test_xrds/spoof3.xrds +37 -0
  154. data/test/data/test_xrds/status222.xrds +9 -0
  155. data/test/data/test_xrds/subsegments.xrds +58 -0
  156. data/test/data/test_xrds/valid-populated-xrds.xml +39 -0
  157. data/test/data/trustroot.txt +153 -0
  158. data/test/data/urinorm.txt +79 -0
  159. data/test/discoverdata.rb +131 -0
  160. data/test/test_accept.rb +170 -0
  161. data/test/test_association.rb +266 -0
  162. data/test/test_associationmanager.rb +917 -0
  163. data/test/test_ax.rb +648 -0
  164. data/test/test_checkid_request.rb +294 -0
  165. data/test/test_consumer.rb +257 -0
  166. data/test/test_cryptutil.rb +119 -0
  167. data/test/test_dh.rb +86 -0
  168. data/test/test_discover.rb +838 -0
  169. data/test/test_discovery_manager.rb +262 -0
  170. data/test/test_extension.rb +46 -0
  171. data/test/test_extras.rb +35 -0
  172. data/test/test_fetchers.rb +538 -0
  173. data/test/test_filters.rb +270 -0
  174. data/test/test_idres.rb +963 -0
  175. data/test/test_kvform.rb +165 -0
  176. data/test/test_kvpost.rb +65 -0
  177. data/test/test_linkparse.rb +101 -0
  178. data/test/test_message.rb +1116 -0
  179. data/test/test_nonce.rb +89 -0
  180. data/test/test_oauth.rb +175 -0
  181. data/test/test_openid_yadis.rb +178 -0
  182. data/test/test_pape.rb +247 -0
  183. data/test/test_parsehtml.rb +80 -0
  184. data/test/test_responses.rb +63 -0
  185. data/test/test_server.rb +2457 -0
  186. data/test/test_sreg.rb +479 -0
  187. data/test/test_stores.rb +298 -0
  188. data/test/test_trustroot.rb +113 -0
  189. data/test/test_urinorm.rb +35 -0
  190. data/test/test_util.rb +145 -0
  191. data/test/test_xrds.rb +169 -0
  192. data/test/test_xri.rb +48 -0
  193. data/test/test_xrires.rb +63 -0
  194. data/test/test_yadis_discovery.rb +220 -0
  195. data/test/testutil.rb +127 -0
  196. data/test/util.rb +53 -0
  197. metadata +316 -0
@@ -0,0 +1,587 @@
1
+ Num Tests: 72
2
+
3
+ OpenID link parsing test cases
4
+ Copyright (C) 2005-2008, JanRain, Inc.
5
+ See COPYING for license information.
6
+
7
+ File format
8
+ -----------
9
+
10
+ All text before the first triple-newline (this chunk) should be ignored.
11
+
12
+ This file may be interpreted as Latin-1 or UTF-8.
13
+
14
+ Test cases separated by three line separators (`\n\n\n'). The test
15
+ cases consist of a headers section followed by a data block. These are
16
+ separated by a double newline. The headers consist of the header name,
17
+ followed by a colon, a space, the value, and a newline. There must be
18
+ one, and only one, `Name' header for a test case. There may be zero or
19
+ more link headers. The `Link' header consists of whitespace-separated
20
+ attribute pairs. A link header with an empty string as a value
21
+ indicates an empty but present link tag. The attribute pairs are `='
22
+ separated and not quoted.
23
+
24
+ Optional Links and attributes have a trailing `*'. A compilant
25
+ implementation may produce this as output or may not. A compliant
26
+ implementation will not produce any output that is absent from this
27
+ file.
28
+
29
+
30
+ Name: No link tag at all
31
+
32
+ <html>
33
+ <head>
34
+ </head>
35
+ </html>
36
+
37
+
38
+ Name: Link element first
39
+
40
+ <link>
41
+
42
+
43
+ Name: Link inside HTML, not head
44
+
45
+ <html>
46
+ <link>
47
+
48
+
49
+ Name: Link inside head, not html
50
+
51
+ <head>
52
+ <link>
53
+
54
+
55
+ Name: Link inside html, after head
56
+
57
+ <html>
58
+ <head>
59
+ </head>
60
+ <link>
61
+
62
+
63
+ Name: Link inside html, before head
64
+
65
+ <html>
66
+ <link>
67
+ <head>
68
+
69
+
70
+ Name: Link before html and head
71
+
72
+ <link>
73
+ <html>
74
+ <head>
75
+
76
+
77
+ Name: Link after html document with head
78
+
79
+ <html>
80
+ <head>
81
+ </head>
82
+ </html>
83
+ <link>
84
+
85
+
86
+ Name: Link inside html inside head, inside another html
87
+
88
+ <html>
89
+ <head>
90
+ <html>
91
+ <link>
92
+
93
+
94
+ Name: Link inside html inside head
95
+
96
+ <head>
97
+ <html>
98
+ <link>
99
+
100
+
101
+ Name: link inside body inside head inside html
102
+
103
+ <html>
104
+ <head>
105
+ <body>
106
+ <link>
107
+
108
+
109
+ Name: Link inside head inside head inside html
110
+
111
+ <html>
112
+ <head>
113
+ <head>
114
+ <link>
115
+
116
+
117
+ Name: Link inside script inside head inside html
118
+
119
+ <html>
120
+ <head>
121
+ <script>
122
+ <link>
123
+ </script>
124
+
125
+
126
+ Name: Link inside comment inside head inside html
127
+
128
+ <html>
129
+ <head/>
130
+ <link>
131
+
132
+
133
+ Name: Link inside of head after short head
134
+
135
+ <html>
136
+ <head/>
137
+ <head>
138
+ <link>
139
+
140
+
141
+ Name: Plain vanilla
142
+ Link:
143
+
144
+ <html>
145
+ <head>
146
+ <link>
147
+
148
+
149
+ Name: Ignore tags in the <script:... > namespace
150
+ Link*:
151
+
152
+ <html>
153
+ <head>
154
+ <script:paddypan>
155
+ <link>
156
+ </script:paddypan>
157
+
158
+
159
+ Name: Short link tag
160
+ Link:
161
+
162
+ <html>
163
+ <head>
164
+ <link/>
165
+
166
+
167
+ Name: Spaces in the HTML tag
168
+ Link:
169
+
170
+ <html >
171
+ <head>
172
+ <link>
173
+
174
+
175
+ Name: Spaces in the head tag
176
+ Link:
177
+
178
+ <html>
179
+ <head >
180
+ <link>
181
+
182
+
183
+ Name: Spaces in the link tag
184
+ Link:
185
+
186
+ <html>
187
+ <head>
188
+ <link >
189
+
190
+
191
+ Name: No whitespace
192
+ Link:
193
+
194
+ <html><head><link>
195
+
196
+
197
+ Name: Closed head tag
198
+ Link:
199
+
200
+ <html>
201
+ <head>
202
+ <link>
203
+ </head>
204
+
205
+
206
+ Name: One good, one bad (after close head)
207
+ Link:
208
+
209
+ <html>
210
+ <head>
211
+ <link>
212
+ </head>
213
+ <link>
214
+
215
+
216
+ Name: One good, one bad (after open body)
217
+ Link:
218
+
219
+ <html>
220
+ <head>
221
+ <link>
222
+ <body>
223
+ <link>
224
+
225
+
226
+ Name: ill formed (missing close head)
227
+ Link:
228
+
229
+ <html>
230
+ <head>
231
+ <link>
232
+ </html>
233
+
234
+
235
+ Name: Ill formed (no close head, link after </html>)
236
+ Link:
237
+
238
+ <html>
239
+ <head>
240
+ <link>
241
+ </html>
242
+ <link>
243
+
244
+
245
+ Name: Ignore random tags inside of html
246
+ Link:
247
+
248
+ <html>
249
+ <delicata>
250
+ <head>
251
+ <title>
252
+ <link>
253
+
254
+
255
+ Name: case-folding
256
+ Link*:
257
+
258
+ <HtMl>
259
+ <hEaD>
260
+ <LiNk>
261
+
262
+
263
+ Name: unexpected tags
264
+ Link:
265
+
266
+ <butternut>
267
+ <html>
268
+ <summer>
269
+ <head>
270
+ <turban>
271
+ <link>
272
+
273
+
274
+ Name: un-closed script tags
275
+ Link*:
276
+
277
+ <html>
278
+ <head>
279
+ <script>
280
+ <link>
281
+
282
+
283
+ Name: un-closed script tags (no whitespace)
284
+ Link*:
285
+
286
+ <html><head><script><link>
287
+
288
+
289
+ Name: un-closed comment
290
+ Link*:
291
+
292
+ <html>
293
+ <head>
294
+ <!--
295
+ <link>
296
+
297
+
298
+ Name: un-closed CDATA
299
+ Link*:
300
+
301
+ <html>
302
+ <head>
303
+ <![CDATA[
304
+ <link>
305
+
306
+
307
+ Name: cdata-like
308
+ Link*:
309
+
310
+ <html>
311
+ <head>
312
+ <![ACORN[
313
+ <link>
314
+ ]]>
315
+
316
+
317
+ Name: comment close only
318
+ Link:
319
+
320
+ <html>
321
+ <head>
322
+ <link>
323
+ -->
324
+
325
+
326
+ Name: Vanilla, two links
327
+ Link:
328
+ Link:
329
+
330
+ <html>
331
+ <head>
332
+ <link>
333
+ <link>
334
+
335
+
336
+ Name: extra tag, two links
337
+ Link:
338
+ Link:
339
+
340
+ <html>
341
+ <gold nugget>
342
+ <head>
343
+ <link>
344
+ <link>
345
+
346
+
347
+ Name: case-fold, body ends, two links
348
+ Link:
349
+ Link*:
350
+
351
+ <html>
352
+ <head>
353
+ <link>
354
+ <LiNk>
355
+ <body>
356
+ <link>
357
+
358
+
359
+ Name: simple, non-quoted rel
360
+ Link: rel=openid.server
361
+
362
+ <html><head><link rel=openid.server>
363
+
364
+
365
+ Name: short tag has rel
366
+ Link: rel=openid.server
367
+
368
+ <html><head><link rel=openid.server/>
369
+
370
+
371
+ Name: short tag w/space has rel
372
+ Link: rel=openid.server
373
+
374
+ <html><head><link rel=openid.server />
375
+
376
+
377
+ Name: extra non-attribute, has rel
378
+ Link: rel=openid.server hubbard*=hubbard
379
+
380
+ <html><head><link hubbard rel=openid.server>
381
+
382
+
383
+ Name: non-attr, has rel, short
384
+ Link: rel=openid.server hubbard*=hubbard
385
+
386
+ <html><head><link hubbard rel=openid.server/>
387
+
388
+
389
+ Name: non-attr, has rel, short, space
390
+ Link: rel=openid.server hubbard*=hubbard
391
+
392
+ <html><head><link hubbard rel=openid.server />
393
+
394
+
395
+ Name: misplaced slash has rel
396
+ Link: rel=openid.server
397
+
398
+ <html><head><link / rel=openid.server>
399
+
400
+
401
+ Name: quoted rel
402
+ Link: rel=openid.server
403
+
404
+ <html><head><link rel="openid.server">
405
+
406
+
407
+ Name: single-quoted rel
408
+ Link: rel=openid.server
409
+
410
+ <html><head><link rel='openid.server'>
411
+
412
+
413
+ Name: two links w/ rel
414
+ Link: x=y
415
+ Link: a=b
416
+
417
+ <html><head><link x=y><link a=b>
418
+
419
+
420
+ Name: non-entity
421
+ Link: x=&y
422
+
423
+ <html><head><link x=&y>
424
+
425
+
426
+ Name: quoted non-entity
427
+ Link: x=&y
428
+
429
+ <html><head><link x="&y">
430
+
431
+
432
+ Name: quoted entity
433
+ Link: x=&
434
+
435
+ <html><head><link x="&amp;">
436
+
437
+
438
+ Name: entity not processed
439
+ Link: x=&#26;
440
+
441
+ <html><head><link x="&#26;">
442
+
443
+
444
+ Name: &lt;
445
+ Link: x=<
446
+
447
+ <html><head><link x="&lt;">
448
+
449
+
450
+ Name: &gt;
451
+ Link: x=>
452
+
453
+ <html><head><link x="&gt;">
454
+
455
+
456
+ Name: &quot;
457
+ Link: x="
458
+
459
+ <html><head><link x="&quot;">
460
+
461
+
462
+ Name: &amp;&quot;
463
+ Link: x=&"
464
+
465
+ <html><head><link x="&amp;&quot;">
466
+
467
+
468
+ Name: mixed entity and non-entity
469
+ Link: x=&"&hellip;>
470
+
471
+ <html><head><link x="&amp;&quot;&hellip;&gt;">
472
+
473
+
474
+ Name: mixed entity and non-entity (w/normal chars)
475
+ Link: x=x&"&hellip;>x
476
+
477
+ <html><head><link x="x&amp;&quot;&hellip;&gt;x">
478
+
479
+
480
+ Name: broken tags
481
+ Link*: x=y
482
+ Link*: x=y<
483
+
484
+ <html><head><link x=y<>
485
+
486
+
487
+ Name: missing close pointy
488
+ Link*: x=y
489
+ Link*: x=y<link z=y
490
+ Link*: z=y
491
+
492
+ <html><head><link x=y<link z=y />
493
+
494
+
495
+ Name: missing attribute value
496
+ Link: x=y y*=y
497
+ Link: x=y
498
+
499
+ <html><head><link x=y y=><link x=y />
500
+
501
+
502
+ Name: Missing close pointy (no following)
503
+ Link*: x=y
504
+
505
+ <html><head><link x=y
506
+
507
+
508
+ Name: Should be quoted
509
+ Link*: x=<
510
+
511
+ <html><head><link x="<">
512
+
513
+
514
+ Name: Should be quoted (2)
515
+ Link*: x=>
516
+ Link*: x=x
517
+
518
+ <html><head><link x=">">
519
+
520
+
521
+ Name: Repeated attribute
522
+ Link: x=y
523
+
524
+ <html><head><link x=z x=y>
525
+
526
+
527
+ Name: Repeated attribute (2)
528
+ Link: x=y
529
+
530
+ <html><head><link x=y x=y>
531
+
532
+
533
+ Name: Two attributes
534
+ Link: x=y y=z
535
+
536
+ <html><head><link x=y y=z>
537
+
538
+
539
+ Name: Well-formed link rel="openid.server"
540
+ Link: rel=openid.server href=http://www.myopenid.com/server
541
+
542
+ <html>
543
+ <head>
544
+ <link rel="openid.server"
545
+ href="http://www.myopenid.com/server" />
546
+ </head>
547
+ </html>
548
+
549
+
550
+ Name: Well-formed link rel="openid.server" and "openid.delegate"
551
+ Link: rel=openid.server href=http://www.myopenid.com/server
552
+ Link: rel=openid.delegate href=http://example.myopenid.com/
553
+
554
+ <html><head><link rel="openid.server"
555
+ href="http://www.myopenid.com/server" />
556
+ <link rel="openid.delegate" href="http://example.myopenid.com/" />
557
+ </head></html>
558
+
559
+
560
+ Name: from brian's livejournal page
561
+ Link: rel=stylesheet href=http://www.livejournal.com/~serotta/res/319998/stylesheet?1130478711 type=text/css
562
+ Link: rel=openid.server href=http://www.livejournal.com/openid/server.bml
563
+
564
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
565
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
566
+ <html xmlns="http://www.w3.org/1999/xhtml">
567
+ <head>
568
+ <link rel="stylesheet"
569
+ href="http://www.livejournal.com/~serotta/res/319998/stylesheet?1130478711"
570
+ type="text/css" />
571
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
572
+ <meta name="foaf:maker"
573
+ content="foaf:mbox_sha1sum '12f8abdacb5b1a806711e23249da592c0d316260'" />
574
+ <meta name="robots" content="noindex, nofollow, noarchive" />
575
+ <meta name="googlebot" content="nosnippet" />
576
+ <link rel="openid.server"
577
+ href="http://www.livejournal.com/openid/server.bml" />
578
+ <title>Brian</title>
579
+ </head>
580
+
581
+
582
+ Name: non-ascii (Latin-1 or UTF8)
583
+ Link: x=®
584
+
585
+ <html><head><link x="®">
586
+
587
+