redcar 0.3.2dev → 0.3.3

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 (485) hide show
  1. data/CHANGES +49 -2
  2. data/README.md +2 -7
  3. data/ROADMAP.md +8 -9
  4. data/Rakefile +29 -44
  5. data/bin/redcar +11 -2
  6. data/lib/openssl/History.txt +75 -0
  7. data/lib/openssl/License.txt +30 -0
  8. data/lib/openssl/Manifest.txt +99 -0
  9. data/lib/openssl/README.txt +24 -0
  10. data/lib/openssl/Rakefile +71 -0
  11. data/lib/openssl/build.properties.SAMPLE +7 -0
  12. data/lib/openssl/build.xml +57 -0
  13. data/lib/openssl/lib/jopenssl/version.rb +5 -0
  14. data/lib/openssl/lib/openssl.rb +24 -0
  15. data/lib/openssl/lib/openssl/bn.rb +33 -0
  16. data/lib/openssl/lib/openssl/buffering.rb +239 -0
  17. data/lib/openssl/lib/openssl/cipher.rb +56 -0
  18. data/lib/openssl/lib/openssl/digest.rb +46 -0
  19. data/lib/openssl/lib/openssl/dummy.rb +34 -0
  20. data/lib/openssl/lib/openssl/dummyssl.rb +13 -0
  21. data/lib/openssl/lib/openssl/ssl.rb +135 -0
  22. data/lib/openssl/lib/openssl/x509.rb +154 -0
  23. data/lib/openssl/mocha/COPYING +3 -0
  24. data/lib/openssl/mocha/MIT-LICENSE +7 -0
  25. data/lib/openssl/mocha/README +35 -0
  26. data/lib/openssl/mocha/RELEASE +171 -0
  27. data/lib/openssl/mocha/Rakefile +147 -0
  28. data/lib/openssl/mocha/TODO +48 -0
  29. data/lib/openssl/mocha/examples/misc.rb +36 -0
  30. data/lib/openssl/mocha/examples/mocha.rb +26 -0
  31. data/lib/openssl/mocha/examples/stubba.rb +65 -0
  32. data/lib/openssl/mocha/init.rb +3 -0
  33. data/lib/openssl/mocha/lib/mocha.rb +19 -0
  34. data/lib/openssl/mocha/lib/mocha/any_instance_method.rb +35 -0
  35. data/lib/openssl/mocha/lib/mocha/auto_verify.rb +111 -0
  36. data/lib/openssl/mocha/lib/mocha/central.rb +35 -0
  37. data/lib/openssl/mocha/lib/mocha/class_method.rb +62 -0
  38. data/lib/openssl/mocha/lib/mocha/deprecation.rb +22 -0
  39. data/lib/openssl/mocha/lib/mocha/exception_raiser.rb +17 -0
  40. data/lib/openssl/mocha/lib/mocha/expectation.rb +382 -0
  41. data/lib/openssl/mocha/lib/mocha/expectation_error.rb +6 -0
  42. data/lib/openssl/mocha/lib/mocha/expectation_list.rb +45 -0
  43. data/lib/openssl/mocha/lib/mocha/infinite_range.rb +25 -0
  44. data/lib/openssl/mocha/lib/mocha/inspect.rb +39 -0
  45. data/lib/openssl/mocha/lib/mocha/instance_method.rb +8 -0
  46. data/lib/openssl/mocha/lib/mocha/is_a.rb +9 -0
  47. data/lib/openssl/mocha/lib/mocha/metaclass.rb +7 -0
  48. data/lib/openssl/mocha/lib/mocha/missing_expectation.rb +27 -0
  49. data/lib/openssl/mocha/lib/mocha/mock.rb +200 -0
  50. data/lib/openssl/mocha/lib/mocha/multiple_yields.rb +20 -0
  51. data/lib/openssl/mocha/lib/mocha/no_yields.rb +11 -0
  52. data/lib/openssl/mocha/lib/mocha/object.rb +110 -0
  53. data/lib/openssl/mocha/lib/mocha/parameter_matchers.rb +9 -0
  54. data/lib/openssl/mocha/lib/mocha/parameter_matchers/all_of.rb +39 -0
  55. data/lib/openssl/mocha/lib/mocha/parameter_matchers/any_of.rb +44 -0
  56. data/lib/openssl/mocha/lib/mocha/parameter_matchers/anything.rb +30 -0
  57. data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_entry.rb +39 -0
  58. data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_key.rb +39 -0
  59. data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_value.rb +39 -0
  60. data/lib/openssl/mocha/lib/mocha/parameter_matchers/includes.rb +37 -0
  61. data/lib/openssl/mocha/lib/mocha/parameter_matchers/instance_of.rb +39 -0
  62. data/lib/openssl/mocha/lib/mocha/parameter_matchers/kind_of.rb +39 -0
  63. data/lib/openssl/mocha/lib/mocha/pretty_parameters.rb +28 -0
  64. data/lib/openssl/mocha/lib/mocha/return_values.rb +31 -0
  65. data/lib/openssl/mocha/lib/mocha/setup_and_teardown.rb +23 -0
  66. data/lib/openssl/mocha/lib/mocha/single_return_value.rb +24 -0
  67. data/lib/openssl/mocha/lib/mocha/single_yield.rb +18 -0
  68. data/lib/openssl/mocha/lib/mocha/standalone.rb +32 -0
  69. data/lib/openssl/mocha/lib/mocha/stub.rb +18 -0
  70. data/lib/openssl/mocha/lib/mocha/test_case_adapter.rb +49 -0
  71. data/lib/openssl/mocha/lib/mocha/yield_parameters.rb +31 -0
  72. data/lib/openssl/mocha/lib/mocha_standalone.rb +2 -0
  73. data/lib/openssl/mocha/lib/stubba.rb +2 -0
  74. data/lib/openssl/mocha/templates/html_with_google_analytics.rb +742 -0
  75. data/lib/openssl/mocha/test/acceptance/expected_invocation_count_acceptance_test.rb +187 -0
  76. data/lib/openssl/mocha/test/acceptance/mocha_acceptance_test.rb +98 -0
  77. data/lib/openssl/mocha/test/acceptance/mocked_methods_dispatch_acceptance_test.rb +71 -0
  78. data/lib/openssl/mocha/test/acceptance/parameter_matcher_acceptance_test.rb +63 -0
  79. data/lib/openssl/mocha/test/acceptance/standalone_acceptance_test.rb +131 -0
  80. data/lib/openssl/mocha/test/acceptance/stubba_acceptance_test.rb +102 -0
  81. data/lib/openssl/mocha/test/active_record_test_case.rb +36 -0
  82. data/lib/openssl/mocha/test/deprecation_disabler.rb +15 -0
  83. data/lib/openssl/mocha/test/execution_point.rb +34 -0
  84. data/lib/openssl/mocha/test/integration/mocha_test_result_integration_test.rb +105 -0
  85. data/lib/openssl/mocha/test/integration/stubba_integration_test.rb +89 -0
  86. data/lib/openssl/mocha/test/integration/stubba_test_result_integration_test.rb +85 -0
  87. data/lib/openssl/mocha/test/method_definer.rb +18 -0
  88. data/lib/openssl/mocha/test/test_helper.rb +12 -0
  89. data/lib/openssl/mocha/test/test_runner.rb +31 -0
  90. data/lib/openssl/mocha/test/unit/any_instance_method_test.rb +124 -0
  91. data/lib/openssl/mocha/test/unit/array_inspect_test.rb +16 -0
  92. data/lib/openssl/mocha/test/unit/auto_verify_test.rb +122 -0
  93. data/lib/openssl/mocha/test/unit/central_test.rb +124 -0
  94. data/lib/openssl/mocha/test/unit/class_method_test.rb +196 -0
  95. data/lib/openssl/mocha/test/unit/date_time_inspect_test.rb +21 -0
  96. data/lib/openssl/mocha/test/unit/expectation_list_test.rb +69 -0
  97. data/lib/openssl/mocha/test/unit/expectation_raiser_test.rb +28 -0
  98. data/lib/openssl/mocha/test/unit/expectation_test.rb +399 -0
  99. data/lib/openssl/mocha/test/unit/hash_inspect_test.rb +16 -0
  100. data/lib/openssl/mocha/test/unit/infinite_range_test.rb +53 -0
  101. data/lib/openssl/mocha/test/unit/metaclass_test.rb +22 -0
  102. data/lib/openssl/mocha/test/unit/missing_expectation_test.rb +45 -0
  103. data/lib/openssl/mocha/test/unit/mock_test.rb +316 -0
  104. data/lib/openssl/mocha/test/unit/multiple_yields_test.rb +18 -0
  105. data/lib/openssl/mocha/test/unit/no_yield_test.rb +18 -0
  106. data/lib/openssl/mocha/test/unit/object_inspect_test.rb +35 -0
  107. data/lib/openssl/mocha/test/unit/object_test.rb +165 -0
  108. data/lib/openssl/mocha/test/unit/parameter_matchers/all_of_test.rb +26 -0
  109. data/lib/openssl/mocha/test/unit/parameter_matchers/any_of_test.rb +26 -0
  110. data/lib/openssl/mocha/test/unit/parameter_matchers/anything_test.rb +21 -0
  111. data/lib/openssl/mocha/test/unit/parameter_matchers/has_entry_test.rb +25 -0
  112. data/lib/openssl/mocha/test/unit/parameter_matchers/has_key_test.rb +25 -0
  113. data/lib/openssl/mocha/test/unit/parameter_matchers/has_value_test.rb +25 -0
  114. data/lib/openssl/mocha/test/unit/parameter_matchers/includes_test.rb +25 -0
  115. data/lib/openssl/mocha/test/unit/parameter_matchers/instance_of_test.rb +25 -0
  116. data/lib/openssl/mocha/test/unit/parameter_matchers/kind_of_test.rb +25 -0
  117. data/lib/openssl/mocha/test/unit/parameter_matchers/stub_matcher.rb +22 -0
  118. data/lib/openssl/mocha/test/unit/pretty_parameters_test.rb +32 -0
  119. data/lib/openssl/mocha/test/unit/return_values_test.rb +63 -0
  120. data/lib/openssl/mocha/test/unit/setup_and_teardown_test.rb +76 -0
  121. data/lib/openssl/mocha/test/unit/single_return_value_test.rb +33 -0
  122. data/lib/openssl/mocha/test/unit/single_yield_test.rb +18 -0
  123. data/lib/openssl/mocha/test/unit/string_inspect_test.rb +11 -0
  124. data/lib/openssl/mocha/test/unit/stub_test.rb +24 -0
  125. data/lib/openssl/mocha/test/unit/yield_parameters_test.rb +93 -0
  126. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/FOLDERS +53 -0
  127. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/LICENSE +340 -0
  128. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/README +117 -0
  129. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/bin/coderay +77 -0
  130. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/bin/coderay_stylesheet +4 -0
  131. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay.rb +319 -0
  132. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/duo.rb +29 -0
  133. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoder.rb +173 -0
  134. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/_map.rb +8 -0
  135. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/count.rb +21 -0
  136. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/debug.rb +46 -0
  137. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/div.rb +20 -0
  138. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html.rb +260 -0
  139. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/classes.rb +77 -0
  140. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/css.rb +65 -0
  141. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/numerization.rb +122 -0
  142. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/output.rb +195 -0
  143. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/null.rb +26 -0
  144. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/page.rb +21 -0
  145. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/span.rb +20 -0
  146. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/statistic.rb +81 -0
  147. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/text.rb +33 -0
  148. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/tokens.rb +44 -0
  149. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/xml.rb +71 -0
  150. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/yaml.rb +22 -0
  151. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/file_type.rb +182 -0
  152. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/gzip_simple.rb +122 -0
  153. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/plugin.rb +326 -0
  154. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/word_list.rb +119 -0
  155. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanner.rb +238 -0
  156. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/_map.rb +15 -0
  157. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/c.rb +163 -0
  158. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/debug.rb +60 -0
  159. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/delphi.rb +149 -0
  160. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/html.rb +177 -0
  161. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/nitro_xhtml.rb +133 -0
  162. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/plaintext.rb +16 -0
  163. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/rhtml.rb +73 -0
  164. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/ruby.rb +367 -0
  165. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/ruby/patterns.rb +230 -0
  166. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/xml.rb +18 -0
  167. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/style.rb +20 -0
  168. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/_map.rb +7 -0
  169. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/cycnus.rb +125 -0
  170. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/murphy.rb +119 -0
  171. data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/tokens.rb +368 -0
  172. data/lib/openssl/mocha/vendor/meta_project-0.4.15/CHANGES +295 -0
  173. data/lib/openssl/mocha/vendor/meta_project-0.4.15/MIT-LICENSE +21 -0
  174. data/lib/openssl/mocha/vendor/meta_project-0.4.15/README +129 -0
  175. data/lib/openssl/mocha/vendor/meta_project-0.4.15/Rakefile +152 -0
  176. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project.rb +19 -0
  177. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/open_uri.rb +22 -0
  178. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/pathname.rb +36 -0
  179. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/string.rb +5 -0
  180. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/http/multipart.rb +32 -0
  181. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/patois.rb +1 -0
  182. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/patois/parser.rb +99 -0
  183. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project.rb +4 -0
  184. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/base.rb +9 -0
  185. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/codehaus.rb +1 -0
  186. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/codehaus/codehaus_project_svn.rb +31 -0
  187. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/trac.rb +1 -0
  188. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/trac/trac_project.rb +54 -0
  189. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge.rb +5 -0
  190. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/ruby_forge.rb +47 -0
  191. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/session.rb +177 -0
  192. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/source_forge.rb +50 -0
  193. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/xfile.rb +45 -0
  194. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/xforge_base.rb +85 -0
  195. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project_analyzer.rb +36 -0
  196. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/release/freshmeat.rb +267 -0
  197. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/release/raa.rb +572 -0
  198. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web.rb +2 -0
  199. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web/browser.rb +112 -0
  200. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web/pathname.rb +89 -0
  201. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker.rb +6 -0
  202. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/base.rb +24 -0
  203. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/digit_issues.rb +34 -0
  204. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/issue.rb +57 -0
  205. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira.rb +2 -0
  206. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira/jira_issues.rb +35 -0
  207. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira/jira_tracker.rb +149 -0
  208. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/trac.rb +1 -0
  209. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/trac/trac_tracker.rb +33 -0
  210. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge.rb +3 -0
  211. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/ruby_forge_tracker.rb +17 -0
  212. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/source_forge_tracker.rb +17 -0
  213. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/xforge_tracker.rb +191 -0
  214. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb +52 -0
  215. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge.rb +3 -0
  216. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/base.rb +64 -0
  217. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/news_publisher.rb +97 -0
  218. data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/release.rb +134 -0
  219. data/lib/openssl/nbproject/genfiles.properties +5 -0
  220. data/lib/openssl/nbproject/jdk.xml +157 -0
  221. data/lib/openssl/nbproject/nbjdk.properties +1 -0
  222. data/lib/openssl/nbproject/nbjdk.xml +16 -0
  223. data/lib/openssl/nbproject/project.xml +117 -0
  224. data/lib/openssl/src/java/JopensslService.java +41 -0
  225. data/lib/openssl/src/java/org/jruby/ext/openssl/ASN1.java +930 -0
  226. data/lib/openssl/src/java/org/jruby/ext/openssl/Attribute.java +132 -0
  227. data/lib/openssl/src/java/org/jruby/ext/openssl/BN.java +769 -0
  228. data/lib/openssl/src/java/org/jruby/ext/openssl/BouncyCastlePEMHandler.java +69 -0
  229. data/lib/openssl/src/java/org/jruby/ext/openssl/Callable.java +10 -0
  230. data/lib/openssl/src/java/org/jruby/ext/openssl/Cipher.java +661 -0
  231. data/lib/openssl/src/java/org/jruby/ext/openssl/CipherStrings.java +1827 -0
  232. data/lib/openssl/src/java/org/jruby/ext/openssl/Config.java +49 -0
  233. data/lib/openssl/src/java/org/jruby/ext/openssl/DefaultPEMHandler.java +44 -0
  234. data/lib/openssl/src/java/org/jruby/ext/openssl/Digest.java +207 -0
  235. data/lib/openssl/src/java/org/jruby/ext/openssl/HMAC.java +183 -0
  236. data/lib/openssl/src/java/org/jruby/ext/openssl/NetscapeSPKI.java +212 -0
  237. data/lib/openssl/src/java/org/jruby/ext/openssl/OpenSSLImpl.java +341 -0
  238. data/lib/openssl/src/java/org/jruby/ext/openssl/OpenSSLReal.java +113 -0
  239. data/lib/openssl/src/java/org/jruby/ext/openssl/PEMHandler.java +40 -0
  240. data/lib/openssl/src/java/org/jruby/ext/openssl/PKCS10CertificationRequestExt.java +159 -0
  241. data/lib/openssl/src/java/org/jruby/ext/openssl/PKCS7.java +642 -0
  242. data/lib/openssl/src/java/org/jruby/ext/openssl/PKey.java +154 -0
  243. data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyDH.java +401 -0
  244. data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyDSA.java +419 -0
  245. data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyRSA.java +762 -0
  246. data/lib/openssl/src/java/org/jruby/ext/openssl/Random.java +103 -0
  247. data/lib/openssl/src/java/org/jruby/ext/openssl/Request.java +336 -0
  248. data/lib/openssl/src/java/org/jruby/ext/openssl/SSL.java +71 -0
  249. data/lib/openssl/src/java/org/jruby/ext/openssl/SSLContext.java +358 -0
  250. data/lib/openssl/src/java/org/jruby/ext/openssl/SSLSocket.java +561 -0
  251. data/lib/openssl/src/java/org/jruby/ext/openssl/SimpleSecretKey.java +53 -0
  252. data/lib/openssl/src/java/org/jruby/ext/openssl/Utils.java +60 -0
  253. data/lib/openssl/src/java/org/jruby/ext/openssl/X509.java +108 -0
  254. data/lib/openssl/src/java/org/jruby/ext/openssl/X509CRL.java +446 -0
  255. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Cert.java +520 -0
  256. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Extensions.java +751 -0
  257. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Name.java +405 -0
  258. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Revoked.java +111 -0
  259. data/lib/openssl/src/java/org/jruby/ext/openssl/X509Store.java +282 -0
  260. data/lib/openssl/src/java/org/jruby/ext/openssl/X509StoreCtx.java +206 -0
  261. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/ASN1Registry.java +5135 -0
  262. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Attribute.java +79 -0
  263. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/BIO.java +345 -0
  264. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/BIOFilter.java +38 -0
  265. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Base64BIOFilter.java +84 -0
  266. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/CipherBIOFilter.java +157 -0
  267. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Digest.java +126 -0
  268. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/EVP.java +136 -0
  269. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/EncContent.java +178 -0
  270. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Encrypt.java +77 -0
  271. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Envelope.java +169 -0
  272. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/IssuerAndSerial.java +35 -0
  273. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MemBIO.java +117 -0
  274. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MessageDigestBIOFilter.java +76 -0
  275. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Mime.java +245 -0
  276. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MimeHeader.java +103 -0
  277. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MimeParam.java +69 -0
  278. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/NotVerifiedPKCS7Exception.java +38 -0
  279. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/NullSinkBIO.java +52 -0
  280. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java +1276 -0
  281. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java +168 -0
  282. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataData.java +88 -0
  283. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataDigest.java +64 -0
  284. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataEncrypted.java +61 -0
  285. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataEnveloped.java +85 -0
  286. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java +127 -0
  287. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java +91 -0
  288. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7Exception.java +68 -0
  289. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/RecipInfo.java +244 -0
  290. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SMIME.java +281 -0
  291. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java +202 -0
  292. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Signed.java +345 -0
  293. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SignerInfoWithPkey.java +365 -0
  294. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/TypeDiscriminating.java +34 -0
  295. data/lib/openssl/src/java/org/jruby/ext/openssl/impl/utils/Base64.java +1809 -0
  296. data/lib/openssl/src/java/org/jruby/ext/openssl/util/Base64Coder.java +103 -0
  297. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CRL.java +59 -0
  298. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Certificate.java +57 -0
  299. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CertificateFile.java +46 -0
  300. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CertificateHashDir.java +46 -0
  301. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function0.java +43 -0
  302. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function1.java +43 -0
  303. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function2.java +43 -0
  304. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function3.java +43 -0
  305. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function4.java +43 -0
  306. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function5.java +43 -0
  307. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Lookup.java +560 -0
  308. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/LookupMethod.java +84 -0
  309. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Name.java +85 -0
  310. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PEMInputOutput.java +1210 -0
  311. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PKey.java +41 -0
  312. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PolicyTree.java +36 -0
  313. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Purpose.java +475 -0
  314. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Store.java +377 -0
  315. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/StoreContext.java +1356 -0
  316. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Trust.java +279 -0
  317. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/VerifyParameter.java +324 -0
  318. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Aux.java +43 -0
  319. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509AuxCertificate.java +170 -0
  320. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Error.java +70 -0
  321. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Object.java +88 -0
  322. data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Utils.java +541 -0
  323. data/lib/openssl/test/cert_with_ec_pk.cer +27 -0
  324. data/lib/openssl/test/fixture/ca_path/72fa7371.0 +19 -0
  325. data/lib/openssl/test/fixture/ca_path/verisign.pem +19 -0
  326. data/lib/openssl/test/fixture/cacert.pem +23 -0
  327. data/lib/openssl/test/fixture/cert_localhost.pem +19 -0
  328. data/lib/openssl/test/fixture/common.pem +48 -0
  329. data/lib/openssl/test/fixture/localhost_keypair.pem +18 -0
  330. data/lib/openssl/test/fixture/max.pem +29 -0
  331. data/lib/openssl/test/fixture/purpose/b70a5bc1.0 +24 -0
  332. data/lib/openssl/test/fixture/purpose/ca/PASSWD_OF_CA_KEY_IS_1234 +0 -0
  333. data/lib/openssl/test/fixture/purpose/ca/ca_config.rb +37 -0
  334. data/lib/openssl/test/fixture/purpose/ca/cacert.pem +24 -0
  335. data/lib/openssl/test/fixture/purpose/ca/newcerts/2_cert.pem +19 -0
  336. data/lib/openssl/test/fixture/purpose/ca/newcerts/3_cert.pem +19 -0
  337. data/lib/openssl/test/fixture/purpose/ca/private/cakeypair.pem +30 -0
  338. data/lib/openssl/test/fixture/purpose/ca/serial +1 -0
  339. data/lib/openssl/test/fixture/purpose/cacert.pem +24 -0
  340. data/lib/openssl/test/fixture/purpose/scripts/gen_cert.rb +127 -0
  341. data/lib/openssl/test/fixture/purpose/scripts/gen_csr.rb +50 -0
  342. data/lib/openssl/test/fixture/purpose/scripts/init_ca.rb +66 -0
  343. data/lib/openssl/test/fixture/purpose/sslclient.pem +19 -0
  344. data/lib/openssl/test/fixture/purpose/sslclient/csr.pem +10 -0
  345. data/lib/openssl/test/fixture/purpose/sslclient/keypair.pem +15 -0
  346. data/lib/openssl/test/fixture/purpose/sslclient/sslclient.pem +19 -0
  347. data/lib/openssl/test/fixture/purpose/sslserver.pem +19 -0
  348. data/lib/openssl/test/fixture/purpose/sslserver/csr.pem +10 -0
  349. data/lib/openssl/test/fixture/purpose/sslserver/keypair.pem +15 -0
  350. data/lib/openssl/test/fixture/purpose/sslserver/sslserver.pem +19 -0
  351. data/lib/openssl/test/fixture/verisign.pem +19 -0
  352. data/lib/openssl/test/fixture/verisign_c3.pem +14 -0
  353. data/lib/openssl/test/openssl/ssl_server.rb +99 -0
  354. data/lib/openssl/test/openssl/test_asn1.rb +199 -0
  355. data/lib/openssl/test/openssl/test_cipher.rb +196 -0
  356. data/lib/openssl/test/openssl/test_digest.rb +88 -0
  357. data/lib/openssl/test/openssl/test_hmac.rb +44 -0
  358. data/lib/openssl/test/openssl/test_ns_spki.rb +69 -0
  359. data/lib/openssl/test/openssl/test_pair.rb +149 -0
  360. data/lib/openssl/test/openssl/test_pkcs7.rb +160 -0
  361. data/lib/openssl/test/openssl/test_pkey_rsa.rb +49 -0
  362. data/lib/openssl/test/openssl/test_ssl.rb +413 -0
  363. data/lib/openssl/test/openssl/test_x509cert.rb +236 -0
  364. data/lib/openssl/test/openssl/test_x509crl.rb +234 -0
  365. data/lib/openssl/test/openssl/test_x509ext.rb +95 -0
  366. data/lib/openssl/test/openssl/test_x509name.rb +281 -0
  367. data/lib/openssl/test/openssl/test_x509req.rb +178 -0
  368. data/lib/openssl/test/openssl/test_x509store.rb +245 -0
  369. data/lib/openssl/test/openssl/utils.rb +135 -0
  370. data/lib/openssl/test/pkcs7_mime_enveloped.message +19 -0
  371. data/lib/openssl/test/pkcs7_mime_signed.message +30 -0
  372. data/lib/openssl/test/pkcs7_multipart_signed.message +45 -0
  373. data/lib/openssl/test/ref/compile.rb +8 -0
  374. data/lib/openssl/test/ref/pkcs1 +0 -0
  375. data/lib/openssl/test/ref/pkcs1.c +21 -0
  376. data/lib/openssl/test/test_cipher.rb +95 -0
  377. data/lib/openssl/test/test_integration.rb +139 -0
  378. data/lib/openssl/test/test_java.rb +98 -0
  379. data/lib/openssl/test/test_java_attribute.rb +25 -0
  380. data/lib/openssl/test/test_java_bio.rb +42 -0
  381. data/lib/openssl/test/test_java_mime.rb +173 -0
  382. data/lib/openssl/test/test_java_pkcs7.rb +769 -0
  383. data/lib/openssl/test/test_java_smime.rb +177 -0
  384. data/lib/openssl/test/test_openssl.rb +34 -0
  385. data/lib/openssl/test/test_openssl_x509.rb +34 -0
  386. data/lib/openssl/test/test_parse_certificate.rb +20 -0
  387. data/lib/openssl/test/test_pkey.rb +46 -0
  388. data/lib/openssl/test/test_x509store.rb +155 -0
  389. data/lib/openssl/test/ut_eof.rb +128 -0
  390. data/lib/redcar.rb +134 -8
  391. data/lib/redcar/installer.rb +46 -11
  392. data/lib/redcar/runner.rb +2 -1
  393. data/lib/redcar/usage.rb +12 -5
  394. data/lib/redcar_quick_start.rb +37 -0
  395. data/plugins/application/features/support/env.rb +9 -1
  396. data/plugins/application/icons/redcar_icon_beta.png +0 -0
  397. data/plugins/application/lib/application.rb +113 -43
  398. data/plugins/application/lib/application/clipboard.rb +28 -4
  399. data/plugins/application/lib/application/command.rb +4 -12
  400. data/plugins/application/lib/application/command/executor.rb +2 -2
  401. data/plugins/application/lib/application/keymap.rb +39 -0
  402. data/plugins/application/lib/application/keymap/builder.rb +19 -0
  403. data/plugins/application/lib/application/speedbar.rb +33 -24
  404. data/plugins/application/lib/application/tab.rb +15 -0
  405. data/plugins/application/lib/application/window.rb +28 -5
  406. data/plugins/application/spec/application/clipboard_spec.rb +20 -1
  407. data/plugins/application/spec/application/command/executor_spec.rb +7 -2
  408. data/plugins/application/spec/application/command_spec.rb +0 -5
  409. data/plugins/application/spec/application/keymap/builder_spec.rb +17 -0
  410. data/plugins/application/spec/application/menu_spec.rb +30 -0
  411. data/plugins/application/spec/application/speedbar_spec.rb +30 -6
  412. data/plugins/application/spec/application/window_spec.rb +2 -2
  413. data/plugins/application/spec/spec_helper.rb +1 -1
  414. data/plugins/application_swt/lib/application_swt.rb +3 -0
  415. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +10 -1
  416. data/plugins/application_swt/lib/application_swt/html_tab.rb +1 -0
  417. data/plugins/application_swt/lib/application_swt/menu.rb +4 -3
  418. data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +12 -4
  419. data/plugins/application_swt/lib/application_swt/speedbar.rb +105 -19
  420. data/plugins/application_swt/lib/application_swt/swt_wrapper.rb +2 -0
  421. data/plugins/application_swt/lib/application_swt/window.rb +55 -23
  422. data/plugins/application_swt/spec/spec_helper.rb +0 -1
  423. data/plugins/auto_completer/lib/auto_completer.rb +57 -3
  424. data/plugins/auto_indenter/lib/auto_indenter.rb +1 -1
  425. data/plugins/core/lib/core.rb +5 -3
  426. data/plugins/core/lib/core/interface.rb +73 -0
  427. data/plugins/core/lib/core/model.rb +2 -0
  428. data/plugins/core/lib/core/observable.rb +12 -1
  429. data/plugins/core/lib/core/observable_struct.rb +34 -0
  430. data/plugins/core/lib/core/plugin/storage.rb +16 -3
  431. data/plugins/core/lib/core/reentry_helpers.rb +13 -0
  432. data/plugins/core/spec/core/observable_spec.rb +13 -0
  433. data/plugins/core/spec/core/storage_spec.rb +18 -0
  434. data/plugins/core/spec/spec_helper.rb +1 -0
  435. data/plugins/edit_view/features/cut_and_paste.feature +4 -2
  436. data/plugins/edit_view/features/soft_tabs.feature +243 -0
  437. data/plugins/edit_view/features/step_definitions/editing_steps.rb +91 -2
  438. data/plugins/edit_view/features/step_definitions/tab_steps.rb +1 -1
  439. data/plugins/edit_view/features/tabs.feature +146 -0
  440. data/plugins/edit_view/lib/edit_view.rb +197 -8
  441. data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +121 -0
  442. data/plugins/edit_view/lib/edit_view/actions/deletion.rb +30 -0
  443. data/plugins/edit_view/lib/edit_view/actions/tab.rb +66 -0
  444. data/plugins/edit_view/lib/edit_view/command.rb +0 -2
  445. data/plugins/edit_view/lib/edit_view/document.rb +62 -27
  446. data/plugins/edit_view/lib/edit_view/document/command.rb +11 -0
  447. data/plugins/edit_view/lib/edit_view/edit_tab.rb +2 -1
  448. data/plugins/edit_view/lib/edit_view/info_speedbar.rb +69 -0
  449. data/plugins/edit_view/lib/edit_view/tab_settings.rb +40 -0
  450. data/plugins/edit_view/spec/edit_view/document_spec.rb +26 -0
  451. data/plugins/edit_view/spec/spec_helper.rb +0 -1
  452. data/plugins/edit_view_swt/lib/edit_view_swt.rb +57 -69
  453. data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +24 -3
  454. data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +23 -6
  455. data/plugins/edit_view_swt/spec/spec_helper.rb +0 -1
  456. data/plugins/edit_view_swt/vendor/java-mateview.rb +19 -2
  457. data/plugins/encryption/encryption.rb +38 -0
  458. data/plugins/encryption/ezcrypto.rb +652 -0
  459. data/plugins/encryption/jarmor-1.1.jar +0 -0
  460. data/plugins/encryption/plugin.rb +9 -0
  461. data/plugins/execute_current_tab/lib/execute_current_tab.rb +56 -0
  462. data/plugins/execute_current_tab/plugin.rb +8 -0
  463. data/plugins/html_view/lib/html_view.rb +16 -11
  464. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +2 -1
  465. data/plugins/plugin_manager_ui/views/index.html.erb +22 -4
  466. data/plugins/project/lib/project.rb +140 -26
  467. data/plugins/project/lib/project/drb_service.rb +75 -0
  468. data/plugins/project/lib/project/file_mirror.rb +5 -5
  469. data/plugins/project/lib/project/find_file_dialog.rb +123 -32
  470. data/plugins/project/spec/project/file_mirror_spec.rb +10 -1
  471. data/plugins/project/spec/spec_helper.rb +0 -1
  472. data/plugins/redcar/plugin.rb +1 -1
  473. data/plugins/redcar/redcar.rb +204 -109
  474. data/plugins/redcar/spec/redcar/redcar_spec.rb +70 -0
  475. data/plugins/redcar/spec/spec_helper.rb +4 -0
  476. data/plugins/repl/lib/repl.rb +14 -7
  477. data/plugins/repl/lib/repl/internal_mirror.rb +43 -22
  478. data/plugins/repl/spec/repl/internal_mirror_spec.rb +34 -7
  479. data/plugins/repl/spec/spec_helper.rb +0 -1
  480. data/plugins/tree/spec/spec_helper.rb +0 -1
  481. data/plugins/tree_view_swt/lib/tree_view_swt.rb +1 -1
  482. data/textmate/Bundles/RedcarRepl.tmbundle/Syntaxes/InternalRuby.plist +2 -18
  483. data/textmate/Bundles/asciidoc.tmbundle/Syntaxes/AsciiDoc.tmLanguage +428 -0
  484. metadata +790 -371
  485. data/lib/redcar/boot.rb +0 -108
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ name = ARGV[0]
4
+ system("rm -rf #{name}")
5
+ system("gcc -lssl -lcrypto -o #{name} #{name}.c")
6
+ system("chmod +x #{name}")
7
+ system("./#{name}")
8
+
Binary file
@@ -0,0 +1,21 @@
1
+
2
+ #include <openssl/pkcs7.h>
3
+
4
+ void print_pkcs7(PKCS7* p7) {
5
+ printf(" | asn1 : %s\n", p7->asn1);
6
+ printf(" | len : %d\n", p7->length);
7
+ printf(" | state : %d\n", p7->state);
8
+ printf(" | detached : %d\n", p7->detached);
9
+ printf(" | type : %d\n", OBJ_nid2obj(p7->type));
10
+ }
11
+
12
+ int main(int argc, char** argv) {
13
+ PKCS7* p7;
14
+ p7 = PKCS7_new();
15
+
16
+ printf("--before:\n");
17
+ print_pkcs7(p7);
18
+
19
+ PKCS7_free(p7);
20
+ return 0;
21
+ }
@@ -0,0 +1,95 @@
1
+ if defined?(JRUBY_VERSION)
2
+ require "java"
3
+ base = File.dirname(__FILE__)
4
+ $CLASSPATH << File.join(base, '..', 'pkg', 'classes')
5
+ $CLASSPATH << File.join(base, '..', 'lib', 'bcprov-jdk14-139.jar')
6
+ end
7
+
8
+ begin
9
+ require "openssl"
10
+ rescue LoadError
11
+ end
12
+
13
+ require "test/unit"
14
+
15
+ class TestCipher < Test::Unit::TestCase
16
+ def test_keylen
17
+ cipher = OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC')
18
+ # must be 24 but it returns 16 on JRE6 without unlimited jurisdiction
19
+ # policy. it returns 24 on JRE6 with the unlimited policy.
20
+ assert_equal(24, cipher.key_len)
21
+ end
22
+
23
+ def test_encrypt_takes_parameter
24
+ enc = OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC')
25
+ enc.encrypt("123")
26
+ data = enc.update("password")
27
+ data << enc.final
28
+ end
29
+
30
+ IV_TEMPLATE = "aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjj"
31
+ KEY_TEMPLATE = "aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjj"
32
+
33
+ # JRUBY-1692
34
+ def test_repeated_des
35
+ do_repeated_test(
36
+ "des-ede3-cbc",
37
+ "foobarbazboofarf",
38
+ ":\022Q\211ex\370\332\374\274\214\356\301\260V\025",
39
+ "B\242\3531\003\362\3759\363s\203\374\240\030|\230"
40
+ )
41
+ end
42
+
43
+ # JRUBY-1692
44
+ def test_repeated_aes
45
+ do_repeated_test(
46
+ "aes-128-cbc",
47
+ "foobarbazboofarf",
48
+ "\342\260Y\344\306\227\004^\272|/\323<\016,\226",
49
+ "jqO\305/\211\216\b\373\300\274\bw\213]\310"
50
+ )
51
+ end
52
+
53
+ def test_rc2
54
+ do_repeated_test(
55
+ "RC2",
56
+ "foobarbazboofarf",
57
+ "\x18imZ\x9Ed\x15\xF3\xD6\xE6M\xCDf\xAA\xD3\xFE",
58
+ "\xEF\xF7\x16\x06\x93)-##\xB2~\xAD,\xAD\x82\xF5"
59
+ )
60
+ end
61
+
62
+ private
63
+ def do_repeated_test(algo, string, enc1, enc2)
64
+ do_repeated_encrypt_test(algo, string, enc1, enc2)
65
+ do_repeated_decrypt_test(algo, string, enc1, enc2)
66
+ end
67
+
68
+ def do_repeated_encrypt_test(algo, string, result1, result2)
69
+ cipher = OpenSSL::Cipher::Cipher.new(algo)
70
+ cipher.encrypt
71
+
72
+ cipher.padding = 0
73
+ cipher.iv = IV_TEMPLATE[0, cipher.iv_len]
74
+ cipher.key = KEY_TEMPLATE[0, cipher.key_len]
75
+
76
+ assert_equal result1, cipher.update(string)
77
+ assert_equal "", cipher.final
78
+
79
+ assert_equal result2, cipher.update(string) + cipher.final
80
+ end
81
+
82
+ def do_repeated_decrypt_test(algo, result, string1, string2)
83
+ cipher = OpenSSL::Cipher::Cipher.new(algo)
84
+ cipher.decrypt
85
+
86
+ cipher.padding = 0
87
+ cipher.iv = IV_TEMPLATE[0, cipher.iv_len]
88
+ cipher.key = KEY_TEMPLATE[0, cipher.key_len]
89
+
90
+ assert_equal result, cipher.update(string1)
91
+ assert_equal "", cipher.final
92
+
93
+ assert_equal result, cipher.update(string2) + cipher.final
94
+ end
95
+ end
@@ -0,0 +1,139 @@
1
+ if defined?(JRUBY_VERSION)
2
+ require "java"
3
+ base = File.join(File.dirname(__FILE__), '..')
4
+ $CLASSPATH << File.join(base, 'pkg', 'classes')
5
+ $CLASSPATH << File.join(base, 'lib', 'bcprov-jdk14-139.jar')
6
+ end
7
+
8
+ begin
9
+ require "openssl"
10
+ rescue LoadError
11
+ end
12
+ require "test/unit"
13
+ require 'net/https'
14
+
15
+ class TestIntegration < Test::Unit::TestCase
16
+ # JRUBY-2471
17
+ def _test_drb
18
+ config = {
19
+ :SSLVerifyMode => OpenSSL::SSL::VERIFY_PEER,
20
+ :SSLCACertificateFile => File.join(File.dirname(__FILE__), "fixture", "cacert.pem"),
21
+ :SSLPrivateKey => OpenSSL::PKey::RSA.new(File.read(File.join(File.dirname(__FILE__), "fixture", "localhost_keypair.pem"))),
22
+ :SSLCertificate => OpenSSL::X509::Certificate.new(File.read(File.join(File.dirname(__FILE__), "fixture", "cert_localhost.pem"))),
23
+ }
24
+ p config
25
+ DRb.start_service(nil, nil, config)
26
+ end
27
+
28
+ # JRUBY-2913
29
+ # Warning - this test actually uses the internet connection.
30
+ # If there is no connection, it will fail.
31
+ def test_ca_path_name
32
+ uri = URI.parse('https://www.amazon.com')
33
+ http = Net::HTTP.new(uri.host, uri.port)
34
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
35
+ http.ca_path = "test/fixture/ca_path/"
36
+ http.use_ssl = true
37
+ response = http.start do |s|
38
+ assert s.get(uri.request_uri).length > 0
39
+ end
40
+ end
41
+
42
+ # Warning - this test actually uses the internet connection.
43
+ # If there is no connection, it will fail.
44
+ def test_ssl_verify
45
+ uri = URI.parse('https://www.amazon.com/')
46
+ http = Net::HTTP.new(uri.host, uri.port)
47
+ http.use_ssl = true
48
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
49
+ # right trust anchor for www.amazon.com
50
+ http.ca_file = 'test/fixture/verisign.pem'
51
+ response = http.start do |s|
52
+ assert s.get(uri.request_uri).length > 0
53
+ end
54
+ # wrong trust anchor for www.amazon.com
55
+ http.ca_file = 'test/fixture/verisign_c3.pem'
56
+ assert_raises(OpenSSL::SSL::SSLError) do
57
+ # it must cause SSLError for verification failure.
58
+ response = http.start do |s|
59
+ s.get(uri.request_uri)
60
+ end
61
+ end
62
+ # round trip
63
+ http.ca_file = 'test/fixture/verisign.pem'
64
+ response = http.start do |s|
65
+ assert s.get(uri.request_uri).length > 0
66
+ end
67
+ end
68
+
69
+ # Warning - this test actually uses the internet connection.
70
+ # If there is no connection, it will fail.
71
+ def test_pathlen_does_not_appear
72
+ uri = URI.parse('https://www.paypal.com/')
73
+ http = Net::HTTP.new(uri.host, uri.port)
74
+ http.use_ssl = true
75
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
76
+ # right trust anchor for www.amazon.com
77
+ http.ca_file = 'test/fixture/verisign_c3.pem'
78
+ response = http.start do |s|
79
+ assert s.get(uri.request_uri).length > 0
80
+ end
81
+ end
82
+
83
+ # JRUBY-2178 and JRUBY-1307
84
+ # Warning - this test actually uses the internet connection.
85
+ # If there is no connection, it will fail.
86
+ # This test generally throws an exception
87
+ # about illegal_parameter when
88
+ # it can't use the cipher string correctly
89
+ def test_cipher_strings
90
+ socket = TCPSocket.new('rubyforge.org', 443)
91
+ ctx = OpenSSL::SSL::SSLContext.new
92
+ ctx.cert_store = OpenSSL::X509::Store.new
93
+ ctx.verify_mode = 0
94
+ ctx.cert = nil
95
+ ctx.key = nil
96
+ ctx.client_ca = nil
97
+ ctx.ciphers = "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"
98
+
99
+ ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ctx)
100
+ ssl_socket.connect
101
+ ssl_socket.close
102
+ end
103
+
104
+ # JRUBY-1194
105
+ def test_des_encryption
106
+ iv = "IVIVIVIV"
107
+ key = "KEYKEYKE"
108
+ alg = "des"
109
+ str = "string abc foo bar baxz"
110
+
111
+ cipher = OpenSSL::Cipher::Cipher.new(alg)
112
+ cipher.encrypt(key, iv)
113
+ cipher.padding = 32
114
+ cipher.key = key
115
+ cipher.iv = iv
116
+
117
+ encrypted = cipher.update(str)
118
+ encrypted << cipher.final
119
+
120
+ assert_equal "\253\305\306\372;\374\235\302\357/\006\360\355XO\232\312S\356* #\227\217", encrypted
121
+ end
122
+
123
+ def _test_perf_of_nil
124
+ # require 'net/https'
125
+ # require 'benchmark'
126
+
127
+ # def request(data)
128
+ # connection = Net::HTTP.new("www.google.com", 443)
129
+ # connection.use_ssl = true
130
+ # connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
131
+ # connection.start do |connection|
132
+ # connection.request_post("/tbproxy/spell?lang=en", data, { 'User-Agent' => "Test", 'Accept' => 'text/xml' })
133
+ # end
134
+ # end
135
+
136
+ # puts "is not: #{Benchmark.measure { request("") }.to_s.chomp}"
137
+ # puts "is nil: #{Benchmark.measure { request(nil) }.to_s.chomp}"
138
+ end
139
+ end
@@ -0,0 +1,98 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'mocha', 'lib')
2
+
3
+ require "test/unit"
4
+ require 'mocha'
5
+
6
+ if defined?(JRUBY_VERSION)
7
+ require "java"
8
+ $CLASSPATH << 'pkg/classes'
9
+ $CLASSPATH << 'lib/bcprov-jdk14-139.jar'
10
+
11
+ module PKCS7Test
12
+ module ASN1
13
+ OctetString = org.bouncycastle.asn1.DEROctetString
14
+ end
15
+
16
+ PKCS7 = org.jruby.ext.openssl.impl.PKCS7 unless defined?(PKCS7)
17
+ Attribute = org.jruby.ext.openssl.impl.Attribute unless defined?(Attribute)
18
+ Digest = org.jruby.ext.openssl.impl.Digest unless defined?(Digest)
19
+ EncContent = org.jruby.ext.openssl.impl.EncContent unless defined?(EncContent)
20
+ Encrypt = org.jruby.ext.openssl.impl.Encrypt unless defined?(Encrypt)
21
+ Envelope = org.jruby.ext.openssl.impl.Envelope unless defined?(Envelope)
22
+ IssuerAndSerial = org.jruby.ext.openssl.impl.IssuerAndSerial unless defined?(IssuerAndSerial)
23
+ RecipInfo = org.jruby.ext.openssl.impl.RecipInfo unless defined?(RecipInfo)
24
+ SignEnvelope = org.jruby.ext.openssl.impl.SignEnvelope unless defined?(SignEnvelope)
25
+ Signed = org.jruby.ext.openssl.impl.Signed unless defined?(Signed)
26
+ SMIME = org.jruby.ext.openssl.impl.SMIME unless defined?(SMIME)
27
+ Mime = org.jruby.ext.openssl.impl.Mime unless defined?(Mime)
28
+ MimeHeader = org.jruby.ext.openssl.impl.MimeHeader unless defined?(MimeHeader)
29
+ MimeParam = org.jruby.ext.openssl.impl.MimeParam unless defined?(MimeParam)
30
+ BIO = org.jruby.ext.openssl.impl.BIO unless defined?(BIO)
31
+ PKCS7Exception = org.jruby.ext.openssl.impl.PKCS7Exception unless defined?(PKCS7Exception)
32
+ ASN1Registry = org.jruby.ext.openssl.impl.ASN1Registry unless defined?(ASN1Registry)
33
+ AlgorithmIdentifier = org.bouncycastle.asn1.x509.AlgorithmIdentifier unless defined?(AlgorithmIdentifier)
34
+ SignerInfoWithPkey = org.jruby.ext.openssl.impl.SignerInfoWithPkey unless defined?(SignerInfoWithPkey)
35
+ IssuerAndSerialNumber = org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber unless defined?(IssuerAndSerialNumber)
36
+ ASN1InputStream = org.bouncycastle.asn1.ASN1InputStream unless defined?(ASN1InputStream)
37
+ X509AuxCertificate = org.jruby.ext.openssl.x509store.X509AuxCertificate unless defined?(X509AuxCertificate)
38
+
39
+ ArrayList = java.util.ArrayList unless defined?(ArrayList)
40
+ CertificateFactory = java.security.cert.CertificateFactory unless defined?(CertificateFactory)
41
+ BCP = org.bouncycastle.jce.provider.BouncyCastleProvider unless defined?(BCP)
42
+ ByteArrayInputStream = java.io.ByteArrayInputStream unless defined?(ByteArrayInputStream)
43
+ BigInteger = java.math.BigInteger unless defined?(BigInteger)
44
+ Cipher = javax.crypto.Cipher unless defined?(Cipher)
45
+
46
+ DERInteger = org.bouncycastle.asn1.DERInteger
47
+ DERSet = org.bouncycastle.asn1.DERSet
48
+ DEROctetString = org.bouncycastle.asn1.DEROctetString
49
+ X509Name = org.bouncycastle.asn1.x509.X509Name
50
+
51
+
52
+ MimeEnvelopedString = File::read(File.join(File.dirname(__FILE__), 'pkcs7_mime_enveloped.message'))
53
+ MimeSignedString = File::read(File.join(File.dirname(__FILE__), 'pkcs7_mime_signed.message'))
54
+ MultipartSignedString = File::read(File.join(File.dirname(__FILE__), 'pkcs7_multipart_signed.message'))
55
+
56
+ X509CertString = <<CERT
57
+ -----BEGIN CERTIFICATE-----
58
+ MIICijCCAXKgAwIBAgIBAjANBgkqhkiG9w0BAQUFADA9MRMwEQYKCZImiZPyLGQB
59
+ GRYDb3JnMRkwFwYKCZImiZPyLGQBGRYJcnVieS1sYW5nMQswCQYDVQQDDAJDQTAe
60
+ Fw0wODA3MDgxOTE1NDZaFw0wODA3MDgxOTQ1NDZaMEQxEzARBgoJkiaJk/IsZAEZ
61
+ FgNvcmcxGTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxEjAQBgNVBAMMCWxvY2Fs
62
+ aG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAy8LEsNRApz7U/j5DoB4X
63
+ BgO9Z8Atv5y/OVQRp0ag8Tqo1YewsWijxEWB7JOATwpBN267U4T1nPZIxxEEO7n/
64
+ WNa2ws9JWsjah8ssEBFSxZqdXKSLf0N4Hi7/GQ/aYoaMCiQ8jA4jegK2FJmXM71u
65
+ Pe+jFN/peeBOpRfyXxRFOYcCAwEAAaMSMBAwDgYDVR0PAQH/BAQDAgWgMA0GCSqG
66
+ SIb3DQEBBQUAA4IBAQCU879BALJIM9avHiuZ3WTjDy0UYP3ZG5wtuSqBSnD1k8pr
67
+ hXfRaga7mDj6EQaGUovImb+KrRi6mZc+zsx4rTxwBNJT9U8yiW2eYxmgcT9/qKrD
68
+ /1nz+e8NeUCCDY5UTUHGszZw5zLEDgDX2n3E/CDIZsoRSyq5vXq1jpfih/tSWanj
69
+ Y9uP/o8Dc7ZcRJOAX7NPu1bbZcbxEbZ8sMe5wZ5HNiAR6gnOrjz2Yyazb//PSskE
70
+ 4flt/2h4pzGA0/ZHcnDjcoLdiLtInsqPOlVDLgqd/XqRYWtj84N4gw1iS9cHyrIZ
71
+ dqbS54IKvzElD+R0QVS2z6TIGJSpuSBnZ4yfuNuq
72
+ -----END CERTIFICATE-----
73
+ CERT
74
+
75
+ X509CRLString = <<CRL
76
+ ----BEGIN X509 CRL-----
77
+ MIIBlTB/AgEBMA0GCSqGSIb3DQEBBQUAMD0xEzARBgoJkiaJk/IsZAEZFgNvcmcx
78
+ GTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxCzAJBgNVBAMMAkNBFw0wODA3MTgx
79
+ NzQxMjhaFw0wODA3MTgxODA4MDhaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0B
80
+ AQUFAAOCAQEASJaj1keN+tMmsF3QmjH2RhbW/9rZAl4gjv+uQQqrcS2ByfkXLU1d
81
+ l/8rCHeT/XMoeU6xhQNHPP3uZBwfuuETcp65BMBcZFOUhUR0U5AaGhvSDS/+6EsP
82
+ zFdQgAagmThFdN5ei9guTLqWwN0ZyqiaHyevFJuk+L9qbKavaSeKqfJbU7Sj/Z3J
83
+ WLKoixvyj3N6W7evygH80lTvjZugmxJ1/AjICVSYr1hpHHd6EWq0b0YFrGFmg27R
84
+ WmsAXd0QV5UChfAJ2+Cz5U1bPszvIJGrzfAIoLxHv5rI5rseQzqZdPaFSe4Oehln
85
+ 9qEYmsK3PS6bYoQol0cgj97Ep4olS8CulA==
86
+ -----END X509 CRL-----
87
+ CRL
88
+
89
+ X509Cert = X509AuxCertificate.new(CertificateFactory.getInstance("X.509",BCP.new).generateCertificate(ByteArrayInputStream.new(X509CertString.to_java_bytes)))
90
+ X509CRL = CertificateFactory.getInstance("X.509",BCP.new).generateCRL(ByteArrayInputStream.new(X509CRLString.to_java_bytes))
91
+ end
92
+
93
+ require File.join(File.dirname(__FILE__), 'test_java_attribute')
94
+ require File.join(File.dirname(__FILE__), 'test_java_bio')
95
+ require File.join(File.dirname(__FILE__), 'test_java_mime')
96
+ require File.join(File.dirname(__FILE__), 'test_java_pkcs7')
97
+ require File.join(File.dirname(__FILE__), 'test_java_smime')
98
+ end
@@ -0,0 +1,25 @@
1
+ module PKCS7Test
2
+ class TestJavaAttribute < Test::Unit::TestCase
3
+ def test_attributes
4
+ val = ASN1::OctetString.new("foo".to_java_bytes)
5
+ val2 = ASN1::OctetString.new("bar".to_java_bytes)
6
+ attr = Attribute.create(123, 444, val)
7
+ assert_raises NoMethodError do
8
+ attr.type = 12
9
+ end
10
+ assert_raises NoMethodError do
11
+ attr.value = val2
12
+ end
13
+
14
+ assert_equal 123, attr.type
15
+ assert_equal val, attr.set.get(0)
16
+
17
+ attr2 = Attribute.create(123, 444, val)
18
+
19
+ assert_equal attr, attr2
20
+
21
+ assert_not_equal Attribute.create(124, 444, val), attr
22
+ assert_not_equal Attribute.create(123, 444, val2), attr
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,42 @@
1
+ module PKCS7Test
2
+ class TestJavaBIO < Test::Unit::TestCase
3
+ def test_string_bio_simple
4
+ bio = BIO::from_string("abc")
5
+ arr = Java::byte[20].new
6
+ read = bio.gets(arr, 10)
7
+ assert_equal 3, read
8
+ assert_equal "abc".to_java_bytes.to_a, arr.to_a[0...read]
9
+ end
10
+
11
+ def test_string_bio_simple_with_newline
12
+ bio = BIO::from_string("abc\n")
13
+ arr = Java::byte[20].new
14
+ read = bio.gets(arr, 10)
15
+ assert_equal 4, read
16
+ assert_equal "abc\n".to_java_bytes.to_a, arr.to_a[0...read]
17
+ end
18
+
19
+ def test_string_bio_simple_with_newline_and_more_data
20
+ bio = BIO::from_string("abc\nfoo\n\nbar")
21
+ arr = Java::byte[20].new
22
+ read = bio.gets(arr, 10)
23
+ assert_equal 4, read
24
+ assert_equal "abc\n".to_java_bytes.to_a, arr.to_a[0...read]
25
+
26
+ read = bio.gets(arr, 10)
27
+ assert_equal 4, read
28
+ assert_equal "foo\n".to_java_bytes.to_a, arr.to_a[0...read]
29
+
30
+ read = bio.gets(arr, 10)
31
+ assert_equal 1, read
32
+ assert_equal "\n".to_java_bytes.to_a, arr.to_a[0...read]
33
+
34
+ read = bio.gets(arr, 10)
35
+ assert_equal 3, read
36
+ assert_equal "bar".to_java_bytes.to_a, arr.to_a[0...read]
37
+
38
+ read = bio.gets(arr, 10)
39
+ assert_equal 0, read
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,173 @@
1
+ module PKCS7Test
2
+ class TestJavaMime < Test::Unit::TestCase
3
+ def test_find_header_returns_null_on_nonexisting_header
4
+ headers = []
5
+ assert_nil Mime::DEFAULT.find_header(headers, "foo")
6
+
7
+ headers = [MimeHeader.new("blarg", "bluff")]
8
+ assert_nil Mime::DEFAULT.find_header(headers, "foo")
9
+ end
10
+
11
+ def test_find_header_returns_the_header_with_the_same_name
12
+ hdr = MimeHeader.new("one", "two")
13
+ assert_equal hdr, Mime::DEFAULT.find_header([hdr], "one")
14
+ end
15
+
16
+ def test_find_param_returns_null_on_nonexisting_param
17
+ assert_nil Mime::DEFAULT.find_param(MimeHeader.new("one", "two", []), "foo")
18
+ assert_nil Mime::DEFAULT.find_param(MimeHeader.new("one", "two", [MimeParam.new("hi", "ho")]), "foo")
19
+ end
20
+
21
+ def test_find_param_returns_the_param_with_the_same_name
22
+ par = MimeParam.new("hox", "box")
23
+ hdr = MimeHeader.new("one", "two", [par])
24
+ assert_equal par, Mime::DEFAULT.find_param(hdr, "hox")
25
+ end
26
+
27
+ def test_simple_parse_headers
28
+ bio = BIO::from_string("Foo: bar")
29
+ result = Mime::DEFAULT.parse_headers(bio)
30
+ assert_equal 1, result.size
31
+ assert_equal MimeHeader.new("Foo", "bar"), result[0]
32
+ assert_equal "foo", result[0].name
33
+ end
34
+
35
+ def test_simple_parse_headers2
36
+ bio = BIO::from_string("Foo:bar")
37
+ result = Mime::DEFAULT.parse_headers(bio)
38
+ assert_equal 1, result.size
39
+ assert_equal MimeHeader.new("Foo", "bar"), result[0]
40
+ assert_equal "foo", result[0].name
41
+ end
42
+
43
+ def test_simple_parse_headers3
44
+ bio = BIO::from_string("Foo: bar")
45
+ result = Mime::DEFAULT.parse_headers(bio)
46
+ assert_equal 1, result.size
47
+ assert_equal MimeHeader.new("Foo", "bar"), result[0]
48
+ assert_equal "foo", result[0].name
49
+ end
50
+
51
+ def test_simple_parse_headers4
52
+ bio = BIO::from_string("Foo: bar\n")
53
+ result = Mime::DEFAULT.parse_headers(bio)
54
+ assert_equal 1, result.size
55
+ assert_equal MimeHeader.new("Foo", "bar"), result[0]
56
+ assert_equal "foo", result[0].name
57
+ end
58
+
59
+ def test_simple_parse_headers5
60
+ bio = BIO::from_string(" Foo : bar \n")
61
+ result = Mime::DEFAULT.parse_headers(bio)
62
+ assert_equal 1, result.size
63
+ assert_equal MimeHeader.new("Foo", "bar"), result[0]
64
+ assert_equal "foo", result[0].name
65
+ end
66
+
67
+
68
+ def test_simple_parse_headers6
69
+ bio = BIO::from_string("Foo: bar;\n")
70
+ result = Mime::DEFAULT.parse_headers(bio)
71
+ assert_equal 1, result.size
72
+ assert_equal MimeHeader.new("Foo", "bar"), result[0]
73
+ assert_equal "foo", result[0].name
74
+ end
75
+
76
+ def test_simple_parse_headers7
77
+ bio = BIO::from_string("Foo: bar;\nFlurg: blarg")
78
+ result = Mime::DEFAULT.parse_headers(bio)
79
+ assert_equal 2, result.size
80
+ assert_equal MimeHeader.new("Foo", "bar"), result[0]
81
+ assert_equal MimeHeader.new("Flurg", "blarg"), result[1]
82
+ assert_equal "foo", result[0].name
83
+ assert_equal "flurg", result[1].name
84
+ end
85
+
86
+ def test_simple_parse_headers_quotes
87
+ bio = BIO::from_string("Foo: \"bar\"")
88
+ result = Mime::DEFAULT.parse_headers(bio)
89
+ assert_equal 1, result.size
90
+ assert_equal MimeHeader.new("Foo", "bar"), result[0]
91
+ assert_equal "foo", result[0].name
92
+ end
93
+
94
+ def test_simple_parse_headers_comment
95
+ bio = BIO::from_string("Foo: (this is the right thing)ba(and this is the wrong one)r")
96
+ result = Mime::DEFAULT.parse_headers(bio)
97
+ assert_equal 1, result.size
98
+ assert_equal MimeHeader.new("Foo", "(this is the right thing)ba(and this is the wrong one)r"), result[0]
99
+ assert_equal "foo", result[0].name
100
+ end
101
+
102
+ def test_parse_headers_with_param
103
+ bio = BIO::from_string("Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml")
104
+ result = Mime::DEFAULT.parse_headers(bio)
105
+ assert_equal 1, result.size
106
+ header = result[0]
107
+ assert_equal "content-type", header.name
108
+ assert_equal "multipart/related", header.value
109
+ assert_equal [MimeParam.new("boundary","MIME_boundary"),
110
+ MimeParam.new("type","text/xml")], header.params.to_a
111
+ end
112
+
113
+ def test_parse_headers_with_param_newline
114
+ bio = BIO::from_string("Content-Type: Multipart/Related\n boundary=MIME_boundary; type=text/xml")
115
+ result = Mime::DEFAULT.parse_headers(bio)
116
+ assert_equal 1, result.size
117
+ header = result[0]
118
+ assert_equal "content-type", header.name
119
+ assert_equal "multipart/related", header.value
120
+ assert_equal [MimeParam.new("boundary","MIME_boundary"),
121
+ MimeParam.new("type","text/xml")], header.params.to_a
122
+ end
123
+
124
+ def test_parse_headers_with_param_newline_and_semicolon
125
+ bio = BIO::from_string("Content-Type: Multipart/Related;\n boundary=MIME_boundary;\n Type=text/xml")
126
+ result = Mime::DEFAULT.parse_headers(bio)
127
+ assert_equal 1, result.size
128
+ header = result[0]
129
+ assert_equal "content-type", header.name
130
+ assert_equal "multipart/related", header.value
131
+ assert_equal [MimeParam.new("boundary","MIME_boundary"),
132
+ MimeParam.new("type","text/xml")], header.params.to_a
133
+ end
134
+
135
+ def test_advanced_mime_message
136
+ bio = BIO::from_string(MultipartSignedString)
137
+ result = Mime::DEFAULT.parse_headers(bio)
138
+
139
+ assert_equal "mime-version", result[0].name
140
+ assert_equal "1.0", result[0].value
141
+
142
+ assert_equal "to", result[1].name
143
+ assert_equal "user2@examples.com", result[1].value
144
+
145
+ assert_equal "from", result[2].name
146
+ assert_equal "alicedss@examples.com", result[2].value
147
+
148
+ assert_equal "subject", result[3].name
149
+ assert_equal "example 4.8", result[3].value
150
+
151
+ assert_equal "message-id", result[4].name
152
+ assert_equal "<020906002550300.249@examples.com>", result[4].value
153
+
154
+ assert_equal "date", result[5].name
155
+ assert_equal "fri, 06 sep 2002 00:25:21 -0300", result[5].value
156
+
157
+ assert_equal "content-type", result[6].name
158
+ assert_equal "multipart/signed", result[6].value
159
+
160
+ assert_equal "micalg", result[6].params[0].param_name
161
+ assert_equal "SHA1", result[6].params[0].param_value
162
+
163
+ assert_equal "boundary", result[6].params[1].param_name
164
+ assert_equal "----=_NextBoundry____Fri,_06_Sep_2002_00:25:21", result[6].params[1].param_value
165
+
166
+ assert_equal "protocol", result[6].params[2].param_name
167
+ assert_equal "application/pkcs7-signature", result[6].params[2].param_value
168
+
169
+ assert_equal 3, result[6].params.length
170
+ assert_equal 7, result.length
171
+ end
172
+ end
173
+ end