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.
- data/CHANGES +49 -2
- data/README.md +2 -7
- data/ROADMAP.md +8 -9
- data/Rakefile +29 -44
- data/bin/redcar +11 -2
- data/lib/openssl/History.txt +75 -0
- data/lib/openssl/License.txt +30 -0
- data/lib/openssl/Manifest.txt +99 -0
- data/lib/openssl/README.txt +24 -0
- data/lib/openssl/Rakefile +71 -0
- data/lib/openssl/build.properties.SAMPLE +7 -0
- data/lib/openssl/build.xml +57 -0
- data/lib/openssl/lib/jopenssl/version.rb +5 -0
- data/lib/openssl/lib/openssl.rb +24 -0
- data/lib/openssl/lib/openssl/bn.rb +33 -0
- data/lib/openssl/lib/openssl/buffering.rb +239 -0
- data/lib/openssl/lib/openssl/cipher.rb +56 -0
- data/lib/openssl/lib/openssl/digest.rb +46 -0
- data/lib/openssl/lib/openssl/dummy.rb +34 -0
- data/lib/openssl/lib/openssl/dummyssl.rb +13 -0
- data/lib/openssl/lib/openssl/ssl.rb +135 -0
- data/lib/openssl/lib/openssl/x509.rb +154 -0
- data/lib/openssl/mocha/COPYING +3 -0
- data/lib/openssl/mocha/MIT-LICENSE +7 -0
- data/lib/openssl/mocha/README +35 -0
- data/lib/openssl/mocha/RELEASE +171 -0
- data/lib/openssl/mocha/Rakefile +147 -0
- data/lib/openssl/mocha/TODO +48 -0
- data/lib/openssl/mocha/examples/misc.rb +36 -0
- data/lib/openssl/mocha/examples/mocha.rb +26 -0
- data/lib/openssl/mocha/examples/stubba.rb +65 -0
- data/lib/openssl/mocha/init.rb +3 -0
- data/lib/openssl/mocha/lib/mocha.rb +19 -0
- data/lib/openssl/mocha/lib/mocha/any_instance_method.rb +35 -0
- data/lib/openssl/mocha/lib/mocha/auto_verify.rb +111 -0
- data/lib/openssl/mocha/lib/mocha/central.rb +35 -0
- data/lib/openssl/mocha/lib/mocha/class_method.rb +62 -0
- data/lib/openssl/mocha/lib/mocha/deprecation.rb +22 -0
- data/lib/openssl/mocha/lib/mocha/exception_raiser.rb +17 -0
- data/lib/openssl/mocha/lib/mocha/expectation.rb +382 -0
- data/lib/openssl/mocha/lib/mocha/expectation_error.rb +6 -0
- data/lib/openssl/mocha/lib/mocha/expectation_list.rb +45 -0
- data/lib/openssl/mocha/lib/mocha/infinite_range.rb +25 -0
- data/lib/openssl/mocha/lib/mocha/inspect.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/instance_method.rb +8 -0
- data/lib/openssl/mocha/lib/mocha/is_a.rb +9 -0
- data/lib/openssl/mocha/lib/mocha/metaclass.rb +7 -0
- data/lib/openssl/mocha/lib/mocha/missing_expectation.rb +27 -0
- data/lib/openssl/mocha/lib/mocha/mock.rb +200 -0
- data/lib/openssl/mocha/lib/mocha/multiple_yields.rb +20 -0
- data/lib/openssl/mocha/lib/mocha/no_yields.rb +11 -0
- data/lib/openssl/mocha/lib/mocha/object.rb +110 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers.rb +9 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/all_of.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/any_of.rb +44 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/anything.rb +30 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_entry.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_key.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/has_value.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/includes.rb +37 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/instance_of.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/parameter_matchers/kind_of.rb +39 -0
- data/lib/openssl/mocha/lib/mocha/pretty_parameters.rb +28 -0
- data/lib/openssl/mocha/lib/mocha/return_values.rb +31 -0
- data/lib/openssl/mocha/lib/mocha/setup_and_teardown.rb +23 -0
- data/lib/openssl/mocha/lib/mocha/single_return_value.rb +24 -0
- data/lib/openssl/mocha/lib/mocha/single_yield.rb +18 -0
- data/lib/openssl/mocha/lib/mocha/standalone.rb +32 -0
- data/lib/openssl/mocha/lib/mocha/stub.rb +18 -0
- data/lib/openssl/mocha/lib/mocha/test_case_adapter.rb +49 -0
- data/lib/openssl/mocha/lib/mocha/yield_parameters.rb +31 -0
- data/lib/openssl/mocha/lib/mocha_standalone.rb +2 -0
- data/lib/openssl/mocha/lib/stubba.rb +2 -0
- data/lib/openssl/mocha/templates/html_with_google_analytics.rb +742 -0
- data/lib/openssl/mocha/test/acceptance/expected_invocation_count_acceptance_test.rb +187 -0
- data/lib/openssl/mocha/test/acceptance/mocha_acceptance_test.rb +98 -0
- data/lib/openssl/mocha/test/acceptance/mocked_methods_dispatch_acceptance_test.rb +71 -0
- data/lib/openssl/mocha/test/acceptance/parameter_matcher_acceptance_test.rb +63 -0
- data/lib/openssl/mocha/test/acceptance/standalone_acceptance_test.rb +131 -0
- data/lib/openssl/mocha/test/acceptance/stubba_acceptance_test.rb +102 -0
- data/lib/openssl/mocha/test/active_record_test_case.rb +36 -0
- data/lib/openssl/mocha/test/deprecation_disabler.rb +15 -0
- data/lib/openssl/mocha/test/execution_point.rb +34 -0
- data/lib/openssl/mocha/test/integration/mocha_test_result_integration_test.rb +105 -0
- data/lib/openssl/mocha/test/integration/stubba_integration_test.rb +89 -0
- data/lib/openssl/mocha/test/integration/stubba_test_result_integration_test.rb +85 -0
- data/lib/openssl/mocha/test/method_definer.rb +18 -0
- data/lib/openssl/mocha/test/test_helper.rb +12 -0
- data/lib/openssl/mocha/test/test_runner.rb +31 -0
- data/lib/openssl/mocha/test/unit/any_instance_method_test.rb +124 -0
- data/lib/openssl/mocha/test/unit/array_inspect_test.rb +16 -0
- data/lib/openssl/mocha/test/unit/auto_verify_test.rb +122 -0
- data/lib/openssl/mocha/test/unit/central_test.rb +124 -0
- data/lib/openssl/mocha/test/unit/class_method_test.rb +196 -0
- data/lib/openssl/mocha/test/unit/date_time_inspect_test.rb +21 -0
- data/lib/openssl/mocha/test/unit/expectation_list_test.rb +69 -0
- data/lib/openssl/mocha/test/unit/expectation_raiser_test.rb +28 -0
- data/lib/openssl/mocha/test/unit/expectation_test.rb +399 -0
- data/lib/openssl/mocha/test/unit/hash_inspect_test.rb +16 -0
- data/lib/openssl/mocha/test/unit/infinite_range_test.rb +53 -0
- data/lib/openssl/mocha/test/unit/metaclass_test.rb +22 -0
- data/lib/openssl/mocha/test/unit/missing_expectation_test.rb +45 -0
- data/lib/openssl/mocha/test/unit/mock_test.rb +316 -0
- data/lib/openssl/mocha/test/unit/multiple_yields_test.rb +18 -0
- data/lib/openssl/mocha/test/unit/no_yield_test.rb +18 -0
- data/lib/openssl/mocha/test/unit/object_inspect_test.rb +35 -0
- data/lib/openssl/mocha/test/unit/object_test.rb +165 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/all_of_test.rb +26 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/any_of_test.rb +26 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/anything_test.rb +21 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/has_entry_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/has_key_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/has_value_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/includes_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/instance_of_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/kind_of_test.rb +25 -0
- data/lib/openssl/mocha/test/unit/parameter_matchers/stub_matcher.rb +22 -0
- data/lib/openssl/mocha/test/unit/pretty_parameters_test.rb +32 -0
- data/lib/openssl/mocha/test/unit/return_values_test.rb +63 -0
- data/lib/openssl/mocha/test/unit/setup_and_teardown_test.rb +76 -0
- data/lib/openssl/mocha/test/unit/single_return_value_test.rb +33 -0
- data/lib/openssl/mocha/test/unit/single_yield_test.rb +18 -0
- data/lib/openssl/mocha/test/unit/string_inspect_test.rb +11 -0
- data/lib/openssl/mocha/test/unit/stub_test.rb +24 -0
- data/lib/openssl/mocha/test/unit/yield_parameters_test.rb +93 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/FOLDERS +53 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/LICENSE +340 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/README +117 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/bin/coderay +77 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/bin/coderay_stylesheet +4 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay.rb +319 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/duo.rb +29 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoder.rb +173 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/_map.rb +8 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/count.rb +21 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/debug.rb +46 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/div.rb +20 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html.rb +260 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/classes.rb +77 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/css.rb +65 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/numerization.rb +122 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/html/output.rb +195 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/null.rb +26 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/page.rb +21 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/span.rb +20 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/statistic.rb +81 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/text.rb +33 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/tokens.rb +44 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/xml.rb +71 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/encoders/yaml.rb +22 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/file_type.rb +182 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/gzip_simple.rb +122 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/plugin.rb +326 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/helpers/word_list.rb +119 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanner.rb +238 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/_map.rb +15 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/c.rb +163 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/debug.rb +60 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/delphi.rb +149 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/html.rb +177 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/nitro_xhtml.rb +133 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/plaintext.rb +16 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/rhtml.rb +73 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/ruby.rb +367 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/ruby/patterns.rb +230 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/scanners/xml.rb +18 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/style.rb +20 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/_map.rb +7 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/cycnus.rb +125 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/styles/murphy.rb +119 -0
- data/lib/openssl/mocha/vendor/coderay-0.7.4.215/lib/coderay/tokens.rb +368 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/CHANGES +295 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/MIT-LICENSE +21 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/README +129 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/Rakefile +152 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project.rb +19 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/open_uri.rb +22 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/pathname.rb +36 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/core_ext/string.rb +5 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/http/multipart.rb +32 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/patois.rb +1 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/patois/parser.rb +99 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project.rb +4 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/base.rb +9 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/codehaus.rb +1 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/codehaus/codehaus_project_svn.rb +31 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/trac.rb +1 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/trac/trac_project.rb +54 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge.rb +5 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/ruby_forge.rb +47 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/session.rb +177 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/source_forge.rb +50 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/xfile.rb +45 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project/xforge/xforge_base.rb +85 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/project_analyzer.rb +36 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/release/freshmeat.rb +267 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/release/raa.rb +572 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web.rb +2 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web/browser.rb +112 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/scm_web/pathname.rb +89 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker.rb +6 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/base.rb +24 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/digit_issues.rb +34 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/issue.rb +57 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira.rb +2 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira/jira_issues.rb +35 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/jira/jira_tracker.rb +149 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/trac.rb +1 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/trac/trac_tracker.rb +33 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge.rb +3 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/ruby_forge_tracker.rb +17 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/source_forge_tracker.rb +17 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/tracker/xforge/xforge_tracker.rb +191 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb +52 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge.rb +3 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/base.rb +64 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/news_publisher.rb +97 -0
- data/lib/openssl/mocha/vendor/meta_project-0.4.15/lib/rake/contrib/xforge/release.rb +134 -0
- data/lib/openssl/nbproject/genfiles.properties +5 -0
- data/lib/openssl/nbproject/jdk.xml +157 -0
- data/lib/openssl/nbproject/nbjdk.properties +1 -0
- data/lib/openssl/nbproject/nbjdk.xml +16 -0
- data/lib/openssl/nbproject/project.xml +117 -0
- data/lib/openssl/src/java/JopensslService.java +41 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/ASN1.java +930 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Attribute.java +132 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/BN.java +769 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/BouncyCastlePEMHandler.java +69 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Callable.java +10 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Cipher.java +661 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/CipherStrings.java +1827 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Config.java +49 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/DefaultPEMHandler.java +44 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Digest.java +207 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/HMAC.java +183 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/NetscapeSPKI.java +212 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/OpenSSLImpl.java +341 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/OpenSSLReal.java +113 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PEMHandler.java +40 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKCS10CertificationRequestExt.java +159 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKCS7.java +642 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKey.java +154 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyDH.java +401 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyDSA.java +419 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/PKeyRSA.java +762 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Random.java +103 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Request.java +336 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/SSL.java +71 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/SSLContext.java +358 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/SSLSocket.java +561 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/SimpleSecretKey.java +53 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/Utils.java +60 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509.java +108 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509CRL.java +446 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Cert.java +520 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Extensions.java +751 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Name.java +405 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Revoked.java +111 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509Store.java +282 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/X509StoreCtx.java +206 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/ASN1Registry.java +5135 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Attribute.java +79 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/BIO.java +345 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/BIOFilter.java +38 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Base64BIOFilter.java +84 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/CipherBIOFilter.java +157 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Digest.java +126 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/EVP.java +136 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/EncContent.java +178 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Encrypt.java +77 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Envelope.java +169 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/IssuerAndSerial.java +35 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MemBIO.java +117 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MessageDigestBIOFilter.java +76 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Mime.java +245 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MimeHeader.java +103 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/MimeParam.java +69 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/NotVerifiedPKCS7Exception.java +38 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/NullSinkBIO.java +52 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java +1276 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java +168 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataData.java +88 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataDigest.java +64 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataEncrypted.java +61 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataEnveloped.java +85 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java +127 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java +91 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/PKCS7Exception.java +68 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/RecipInfo.java +244 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SMIME.java +281 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java +202 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/Signed.java +345 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/SignerInfoWithPkey.java +365 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/TypeDiscriminating.java +34 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/impl/utils/Base64.java +1809 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/util/Base64Coder.java +103 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CRL.java +59 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Certificate.java +57 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CertificateFile.java +46 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/CertificateHashDir.java +46 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function0.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function1.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function2.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function3.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function4.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Function5.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Lookup.java +560 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/LookupMethod.java +84 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Name.java +85 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PEMInputOutput.java +1210 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PKey.java +41 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/PolicyTree.java +36 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Purpose.java +475 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Store.java +377 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/StoreContext.java +1356 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/Trust.java +279 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/VerifyParameter.java +324 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Aux.java +43 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509AuxCertificate.java +170 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Error.java +70 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Object.java +88 -0
- data/lib/openssl/src/java/org/jruby/ext/openssl/x509store/X509Utils.java +541 -0
- data/lib/openssl/test/cert_with_ec_pk.cer +27 -0
- data/lib/openssl/test/fixture/ca_path/72fa7371.0 +19 -0
- data/lib/openssl/test/fixture/ca_path/verisign.pem +19 -0
- data/lib/openssl/test/fixture/cacert.pem +23 -0
- data/lib/openssl/test/fixture/cert_localhost.pem +19 -0
- data/lib/openssl/test/fixture/common.pem +48 -0
- data/lib/openssl/test/fixture/localhost_keypair.pem +18 -0
- data/lib/openssl/test/fixture/max.pem +29 -0
- data/lib/openssl/test/fixture/purpose/b70a5bc1.0 +24 -0
- data/lib/openssl/test/fixture/purpose/ca/PASSWD_OF_CA_KEY_IS_1234 +0 -0
- data/lib/openssl/test/fixture/purpose/ca/ca_config.rb +37 -0
- data/lib/openssl/test/fixture/purpose/ca/cacert.pem +24 -0
- data/lib/openssl/test/fixture/purpose/ca/newcerts/2_cert.pem +19 -0
- data/lib/openssl/test/fixture/purpose/ca/newcerts/3_cert.pem +19 -0
- data/lib/openssl/test/fixture/purpose/ca/private/cakeypair.pem +30 -0
- data/lib/openssl/test/fixture/purpose/ca/serial +1 -0
- data/lib/openssl/test/fixture/purpose/cacert.pem +24 -0
- data/lib/openssl/test/fixture/purpose/scripts/gen_cert.rb +127 -0
- data/lib/openssl/test/fixture/purpose/scripts/gen_csr.rb +50 -0
- data/lib/openssl/test/fixture/purpose/scripts/init_ca.rb +66 -0
- data/lib/openssl/test/fixture/purpose/sslclient.pem +19 -0
- data/lib/openssl/test/fixture/purpose/sslclient/csr.pem +10 -0
- data/lib/openssl/test/fixture/purpose/sslclient/keypair.pem +15 -0
- data/lib/openssl/test/fixture/purpose/sslclient/sslclient.pem +19 -0
- data/lib/openssl/test/fixture/purpose/sslserver.pem +19 -0
- data/lib/openssl/test/fixture/purpose/sslserver/csr.pem +10 -0
- data/lib/openssl/test/fixture/purpose/sslserver/keypair.pem +15 -0
- data/lib/openssl/test/fixture/purpose/sslserver/sslserver.pem +19 -0
- data/lib/openssl/test/fixture/verisign.pem +19 -0
- data/lib/openssl/test/fixture/verisign_c3.pem +14 -0
- data/lib/openssl/test/openssl/ssl_server.rb +99 -0
- data/lib/openssl/test/openssl/test_asn1.rb +199 -0
- data/lib/openssl/test/openssl/test_cipher.rb +196 -0
- data/lib/openssl/test/openssl/test_digest.rb +88 -0
- data/lib/openssl/test/openssl/test_hmac.rb +44 -0
- data/lib/openssl/test/openssl/test_ns_spki.rb +69 -0
- data/lib/openssl/test/openssl/test_pair.rb +149 -0
- data/lib/openssl/test/openssl/test_pkcs7.rb +160 -0
- data/lib/openssl/test/openssl/test_pkey_rsa.rb +49 -0
- data/lib/openssl/test/openssl/test_ssl.rb +413 -0
- data/lib/openssl/test/openssl/test_x509cert.rb +236 -0
- data/lib/openssl/test/openssl/test_x509crl.rb +234 -0
- data/lib/openssl/test/openssl/test_x509ext.rb +95 -0
- data/lib/openssl/test/openssl/test_x509name.rb +281 -0
- data/lib/openssl/test/openssl/test_x509req.rb +178 -0
- data/lib/openssl/test/openssl/test_x509store.rb +245 -0
- data/lib/openssl/test/openssl/utils.rb +135 -0
- data/lib/openssl/test/pkcs7_mime_enveloped.message +19 -0
- data/lib/openssl/test/pkcs7_mime_signed.message +30 -0
- data/lib/openssl/test/pkcs7_multipart_signed.message +45 -0
- data/lib/openssl/test/ref/compile.rb +8 -0
- data/lib/openssl/test/ref/pkcs1 +0 -0
- data/lib/openssl/test/ref/pkcs1.c +21 -0
- data/lib/openssl/test/test_cipher.rb +95 -0
- data/lib/openssl/test/test_integration.rb +139 -0
- data/lib/openssl/test/test_java.rb +98 -0
- data/lib/openssl/test/test_java_attribute.rb +25 -0
- data/lib/openssl/test/test_java_bio.rb +42 -0
- data/lib/openssl/test/test_java_mime.rb +173 -0
- data/lib/openssl/test/test_java_pkcs7.rb +769 -0
- data/lib/openssl/test/test_java_smime.rb +177 -0
- data/lib/openssl/test/test_openssl.rb +34 -0
- data/lib/openssl/test/test_openssl_x509.rb +34 -0
- data/lib/openssl/test/test_parse_certificate.rb +20 -0
- data/lib/openssl/test/test_pkey.rb +46 -0
- data/lib/openssl/test/test_x509store.rb +155 -0
- data/lib/openssl/test/ut_eof.rb +128 -0
- data/lib/redcar.rb +134 -8
- data/lib/redcar/installer.rb +46 -11
- data/lib/redcar/runner.rb +2 -1
- data/lib/redcar/usage.rb +12 -5
- data/lib/redcar_quick_start.rb +37 -0
- data/plugins/application/features/support/env.rb +9 -1
- data/plugins/application/icons/redcar_icon_beta.png +0 -0
- data/plugins/application/lib/application.rb +113 -43
- data/plugins/application/lib/application/clipboard.rb +28 -4
- data/plugins/application/lib/application/command.rb +4 -12
- data/plugins/application/lib/application/command/executor.rb +2 -2
- data/plugins/application/lib/application/keymap.rb +39 -0
- data/plugins/application/lib/application/keymap/builder.rb +19 -0
- data/plugins/application/lib/application/speedbar.rb +33 -24
- data/plugins/application/lib/application/tab.rb +15 -0
- data/plugins/application/lib/application/window.rb +28 -5
- data/plugins/application/spec/application/clipboard_spec.rb +20 -1
- data/plugins/application/spec/application/command/executor_spec.rb +7 -2
- data/plugins/application/spec/application/command_spec.rb +0 -5
- data/plugins/application/spec/application/keymap/builder_spec.rb +17 -0
- data/plugins/application/spec/application/menu_spec.rb +30 -0
- data/plugins/application/spec/application/speedbar_spec.rb +30 -6
- data/plugins/application/spec/application/window_spec.rb +2 -2
- data/plugins/application/spec/spec_helper.rb +1 -1
- data/plugins/application_swt/lib/application_swt.rb +3 -0
- data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +10 -1
- data/plugins/application_swt/lib/application_swt/html_tab.rb +1 -0
- data/plugins/application_swt/lib/application_swt/menu.rb +4 -3
- data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +12 -4
- data/plugins/application_swt/lib/application_swt/speedbar.rb +105 -19
- data/plugins/application_swt/lib/application_swt/swt_wrapper.rb +2 -0
- data/plugins/application_swt/lib/application_swt/window.rb +55 -23
- data/plugins/application_swt/spec/spec_helper.rb +0 -1
- data/plugins/auto_completer/lib/auto_completer.rb +57 -3
- data/plugins/auto_indenter/lib/auto_indenter.rb +1 -1
- data/plugins/core/lib/core.rb +5 -3
- data/plugins/core/lib/core/interface.rb +73 -0
- data/plugins/core/lib/core/model.rb +2 -0
- data/plugins/core/lib/core/observable.rb +12 -1
- data/plugins/core/lib/core/observable_struct.rb +34 -0
- data/plugins/core/lib/core/plugin/storage.rb +16 -3
- data/plugins/core/lib/core/reentry_helpers.rb +13 -0
- data/plugins/core/spec/core/observable_spec.rb +13 -0
- data/plugins/core/spec/core/storage_spec.rb +18 -0
- data/plugins/core/spec/spec_helper.rb +1 -0
- data/plugins/edit_view/features/cut_and_paste.feature +4 -2
- data/plugins/edit_view/features/soft_tabs.feature +243 -0
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +91 -2
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +1 -1
- data/plugins/edit_view/features/tabs.feature +146 -0
- data/plugins/edit_view/lib/edit_view.rb +197 -8
- data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +121 -0
- data/plugins/edit_view/lib/edit_view/actions/deletion.rb +30 -0
- data/plugins/edit_view/lib/edit_view/actions/tab.rb +66 -0
- data/plugins/edit_view/lib/edit_view/command.rb +0 -2
- data/plugins/edit_view/lib/edit_view/document.rb +62 -27
- data/plugins/edit_view/lib/edit_view/document/command.rb +11 -0
- data/plugins/edit_view/lib/edit_view/edit_tab.rb +2 -1
- data/plugins/edit_view/lib/edit_view/info_speedbar.rb +69 -0
- data/plugins/edit_view/lib/edit_view/tab_settings.rb +40 -0
- data/plugins/edit_view/spec/edit_view/document_spec.rb +26 -0
- data/plugins/edit_view/spec/spec_helper.rb +0 -1
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +57 -69
- data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +24 -3
- data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +23 -6
- data/plugins/edit_view_swt/spec/spec_helper.rb +0 -1
- data/plugins/edit_view_swt/vendor/java-mateview.rb +19 -2
- data/plugins/encryption/encryption.rb +38 -0
- data/plugins/encryption/ezcrypto.rb +652 -0
- data/plugins/encryption/jarmor-1.1.jar +0 -0
- data/plugins/encryption/plugin.rb +9 -0
- data/plugins/execute_current_tab/lib/execute_current_tab.rb +56 -0
- data/plugins/execute_current_tab/plugin.rb +8 -0
- data/plugins/html_view/lib/html_view.rb +16 -11
- data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +2 -1
- data/plugins/plugin_manager_ui/views/index.html.erb +22 -4
- data/plugins/project/lib/project.rb +140 -26
- data/plugins/project/lib/project/drb_service.rb +75 -0
- data/plugins/project/lib/project/file_mirror.rb +5 -5
- data/plugins/project/lib/project/find_file_dialog.rb +123 -32
- data/plugins/project/spec/project/file_mirror_spec.rb +10 -1
- data/plugins/project/spec/spec_helper.rb +0 -1
- data/plugins/redcar/plugin.rb +1 -1
- data/plugins/redcar/redcar.rb +204 -109
- data/plugins/redcar/spec/redcar/redcar_spec.rb +70 -0
- data/plugins/redcar/spec/spec_helper.rb +4 -0
- data/plugins/repl/lib/repl.rb +14 -7
- data/plugins/repl/lib/repl/internal_mirror.rb +43 -22
- data/plugins/repl/spec/repl/internal_mirror_spec.rb +34 -7
- data/plugins/repl/spec/spec_helper.rb +0 -1
- data/plugins/tree/spec/spec_helper.rb +0 -1
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +1 -1
- data/textmate/Bundles/RedcarRepl.tmbundle/Syntaxes/InternalRuby.plist +2 -18
- data/textmate/Bundles/asciidoc.tmbundle/Syntaxes/AsciiDoc.tmLanguage +428 -0
- metadata +790 -371
- data/lib/redcar/boot.rb +0 -108
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
/***** BEGIN LICENSE BLOCK *****
|
|
2
|
+
* Version: CPL 1.0/GPL 2.0/LGPL 2.1
|
|
3
|
+
*
|
|
4
|
+
* The contents of this file are subject to the Common Public
|
|
5
|
+
* License Version 1.0 (the "License"); you may not use this file
|
|
6
|
+
* except in compliance with the License. You may obtain a copy of
|
|
7
|
+
* the License at http://www.eclipse.org/legal/cpl-v10.html
|
|
8
|
+
*
|
|
9
|
+
* Software distributed under the License is distributed on an "AS
|
|
10
|
+
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
11
|
+
* implied. See the License for the specific language governing
|
|
12
|
+
* rights and limitations under the License.
|
|
13
|
+
*
|
|
14
|
+
* Copyright (C) 2006, 2007 Ola Bini <ola@ologix.com>
|
|
15
|
+
*
|
|
16
|
+
* Alternatively, the contents of this file may be used under the terms of
|
|
17
|
+
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
|
18
|
+
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
19
|
+
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
20
|
+
* of those above. If you wish to allow use of your version of this file only
|
|
21
|
+
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
22
|
+
* use your version of this file under the terms of the CPL, indicate your
|
|
23
|
+
* decision by deleting the provisions above and replace them with the notice
|
|
24
|
+
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
25
|
+
* the provisions above, a recipient may use your version of this file under
|
|
26
|
+
* the terms of any one of the CPL, the GPL or the LGPL.
|
|
27
|
+
***** END LICENSE BLOCK *****/
|
|
28
|
+
package org.jruby.ext.openssl;
|
|
29
|
+
|
|
30
|
+
import java.io.ByteArrayInputStream;
|
|
31
|
+
import java.io.IOException;
|
|
32
|
+
import java.io.StringWriter;
|
|
33
|
+
import java.math.BigInteger;
|
|
34
|
+
import java.security.GeneralSecurityException;
|
|
35
|
+
import java.security.InvalidKeyException;
|
|
36
|
+
import java.security.NoSuchAlgorithmException;
|
|
37
|
+
import java.security.NoSuchProviderException;
|
|
38
|
+
import java.security.PublicKey;
|
|
39
|
+
import java.security.SignatureException;
|
|
40
|
+
import java.security.cert.Certificate;
|
|
41
|
+
import java.security.cert.CertificateEncodingException;
|
|
42
|
+
import java.security.cert.CertificateException;
|
|
43
|
+
import java.security.cert.CertificateFactory;
|
|
44
|
+
import java.security.cert.X509Certificate;
|
|
45
|
+
import java.util.ArrayList;
|
|
46
|
+
import java.util.Iterator;
|
|
47
|
+
import java.util.List;
|
|
48
|
+
import java.util.Set;
|
|
49
|
+
|
|
50
|
+
import java.util.logging.Level;
|
|
51
|
+
import java.util.logging.Logger;
|
|
52
|
+
import org.bouncycastle.asn1.ASN1EncodableVector;
|
|
53
|
+
import org.bouncycastle.asn1.ASN1InputStream;
|
|
54
|
+
import org.bouncycastle.asn1.DERObjectIdentifier;
|
|
55
|
+
import org.bouncycastle.asn1.DERSequence;
|
|
56
|
+
import org.bouncycastle.asn1.x509.GeneralName;
|
|
57
|
+
import org.bouncycastle.asn1.x509.GeneralNames;
|
|
58
|
+
import org.bouncycastle.x509.X509V3CertificateGenerator;
|
|
59
|
+
import org.jruby.Ruby;
|
|
60
|
+
import org.jruby.RubyArray;
|
|
61
|
+
import org.jruby.RubyClass;
|
|
62
|
+
import org.jruby.RubyModule;
|
|
63
|
+
import org.jruby.RubyNumeric;
|
|
64
|
+
import org.jruby.RubyObject;
|
|
65
|
+
import org.jruby.RubyString;
|
|
66
|
+
import org.jruby.RubyTime;
|
|
67
|
+
import org.jruby.anno.JRubyMethod;
|
|
68
|
+
import org.jruby.exceptions.RaiseException;
|
|
69
|
+
import org.jruby.ext.openssl.x509store.PEMInputOutput;
|
|
70
|
+
import org.jruby.ext.openssl.x509store.X509AuxCertificate;
|
|
71
|
+
import org.jruby.runtime.Arity;
|
|
72
|
+
import org.jruby.runtime.Block;
|
|
73
|
+
import org.jruby.runtime.ObjectAllocator;
|
|
74
|
+
import org.jruby.runtime.ThreadContext;
|
|
75
|
+
import org.jruby.runtime.builtin.IRubyObject;
|
|
76
|
+
import org.jruby.util.ByteList;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @author <a href="mailto:ola.bini@ki.se">Ola Bini</a>
|
|
80
|
+
*/
|
|
81
|
+
public class X509Cert extends RubyObject {
|
|
82
|
+
private static ObjectAllocator X509CERT_ALLOCATOR = new ObjectAllocator() {
|
|
83
|
+
public IRubyObject allocate(Ruby runtime, RubyClass klass) {
|
|
84
|
+
return new X509Cert(runtime, klass);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
public static void createX509Cert(Ruby runtime, RubyModule mX509) {
|
|
89
|
+
RubyClass cX509Cert = mX509.defineClassUnder("Certificate",runtime.getObject(),X509CERT_ALLOCATOR);
|
|
90
|
+
RubyClass openSSLError = runtime.getModule("OpenSSL").getClass("OpenSSLError");
|
|
91
|
+
mX509.defineClassUnder("CertificateError",openSSLError,openSSLError.getAllocator());
|
|
92
|
+
|
|
93
|
+
cX509Cert.defineAnnotatedMethods(X509Cert.class);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public X509Cert(Ruby runtime, RubyClass type) {
|
|
97
|
+
super(runtime,type);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
private IRubyObject serial;
|
|
101
|
+
private IRubyObject not_before;
|
|
102
|
+
private IRubyObject not_after;
|
|
103
|
+
private IRubyObject issuer;
|
|
104
|
+
private IRubyObject subject;
|
|
105
|
+
private IRubyObject public_key;
|
|
106
|
+
|
|
107
|
+
private IRubyObject sig_alg;
|
|
108
|
+
private IRubyObject version;
|
|
109
|
+
|
|
110
|
+
private List<IRubyObject> extensions;
|
|
111
|
+
|
|
112
|
+
private boolean changed = true;
|
|
113
|
+
|
|
114
|
+
private X509V3CertificateGenerator generator = new X509V3CertificateGenerator();
|
|
115
|
+
private X509Certificate cert;
|
|
116
|
+
private String public_key_algorithm;
|
|
117
|
+
private byte[] public_key_encoded;
|
|
118
|
+
|
|
119
|
+
X509AuxCertificate getAuxCert() {
|
|
120
|
+
if(null == cert) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
if(cert instanceof X509AuxCertificate) {
|
|
124
|
+
return (X509AuxCertificate)cert;
|
|
125
|
+
}
|
|
126
|
+
return new X509AuxCertificate(cert);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public static IRubyObject wrap(Ruby runtime, Certificate c) throws CertificateEncodingException {
|
|
130
|
+
RubyClass cr = (RubyClass)(((RubyModule)(runtime.getModule("OpenSSL").getConstant("X509"))).getConstant("Certificate"));
|
|
131
|
+
return cr.callMethod(runtime.getCurrentContext(),"new",RubyString.newString(runtime, c.getEncoded()));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// this is the javax.security counterpart of the previous wrap method
|
|
135
|
+
public static IRubyObject wrap(Ruby runtime, javax.security.cert.Certificate c) throws javax.security.cert.CertificateEncodingException {
|
|
136
|
+
RubyClass cr = (RubyClass)(((RubyModule)(runtime.getModule("OpenSSL").getConstant("X509"))).getConstant("Certificate"));
|
|
137
|
+
return cr.callMethod(runtime.getCurrentContext(),"new",RubyString.newString(runtime, c.getEncoded()));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@JRubyMethod(name="initialize", optional = 1, frame=true)
|
|
141
|
+
public IRubyObject initialize(ThreadContext context, IRubyObject[] args, Block unusedBlock) {
|
|
142
|
+
Ruby runtime = context.getRuntime();
|
|
143
|
+
extensions = new ArrayList<IRubyObject>();
|
|
144
|
+
if(args.length == 0) {
|
|
145
|
+
return this;
|
|
146
|
+
}
|
|
147
|
+
ThreadContext tc = runtime.getCurrentContext();
|
|
148
|
+
IRubyObject arg = OpenSSLImpl.to_der_if_possible(args[0]);
|
|
149
|
+
ByteArrayInputStream bis = new ByteArrayInputStream(arg.convertToString().getBytes());
|
|
150
|
+
CertificateFactory cf;
|
|
151
|
+
|
|
152
|
+
RubyModule ossl = runtime.getModule("OpenSSL");
|
|
153
|
+
RubyModule x509 = (RubyModule)ossl.getConstant("X509");
|
|
154
|
+
IRubyObject x509Name = x509.getConstant("Name");
|
|
155
|
+
|
|
156
|
+
try {
|
|
157
|
+
cf = CertificateFactory.getInstance("X.509",OpenSSLReal.PROVIDER);
|
|
158
|
+
cert = (X509Certificate)cf.generateCertificate(bis);
|
|
159
|
+
} catch (CertificateException ex) {
|
|
160
|
+
throw newCertificateError(runtime, ex);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
set_serial(RubyNumeric.str2inum(runtime,runtime.newString(cert.getSerialNumber().toString()),10));
|
|
164
|
+
set_not_before(RubyTime.newTime(runtime,cert.getNotBefore().getTime()));
|
|
165
|
+
set_not_after(RubyTime.newTime(runtime,cert.getNotAfter().getTime()));
|
|
166
|
+
set_subject(x509Name.callMethod(tc,"new",RubyString.newString(runtime, cert.getSubjectX500Principal().getEncoded())));
|
|
167
|
+
set_issuer(x509Name.callMethod(tc,"new",RubyString.newString(runtime, cert.getIssuerX500Principal().getEncoded())));
|
|
168
|
+
|
|
169
|
+
String algorithm = cert.getPublicKey().getAlgorithm();
|
|
170
|
+
|
|
171
|
+
set_public_key(algorithm, cert.getPublicKey().getEncoded());
|
|
172
|
+
|
|
173
|
+
IRubyObject extFact = ((RubyClass)(x509.getConstant("ExtensionFactory"))).callMethod(tc,"new");
|
|
174
|
+
extFact.callMethod(tc,"subject_certificate=",this);
|
|
175
|
+
|
|
176
|
+
Set crit = cert.getCriticalExtensionOIDs();
|
|
177
|
+
if(crit != null) {
|
|
178
|
+
for(Iterator iter = crit.iterator();iter.hasNext();) {
|
|
179
|
+
String critOid = (String)iter.next();
|
|
180
|
+
byte[] value = cert.getExtensionValue(critOid);
|
|
181
|
+
IRubyObject rValue = ASN1.decode(ossl.getConstant("ASN1"),runtime.newString(new ByteList(value, false))).callMethod(tc,"value");
|
|
182
|
+
if(critOid.equals("2.5.29.17")) {
|
|
183
|
+
X509Extensions.Extension ext = (X509Extensions.Extension)(((RubyClass)(((RubyModule)(getRuntime().getModule("OpenSSL").getConstant("X509"))).getConstant("Extension"))).callMethod(tc,"new", new IRubyObject[]{runtime.newString(critOid),rValue,runtime.getTrue()}));
|
|
184
|
+
add_extension(ext);
|
|
185
|
+
} else {
|
|
186
|
+
byte[] dest = new byte[value.length - 4];
|
|
187
|
+
System.arraycopy(value, 4, dest, 0, value.length - 4);
|
|
188
|
+
add_extension(extFact.callMethod(tc,"create_ext", new IRubyObject[]{runtime.newString(critOid),runtime.newString(new ByteList(dest, false)),runtime.getFalse()}));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
Set ncrit = cert.getNonCriticalExtensionOIDs();
|
|
194
|
+
if(ncrit != null) {
|
|
195
|
+
for(Iterator iter = ncrit.iterator();iter.hasNext();) {
|
|
196
|
+
String ncritOid = (String)iter.next();
|
|
197
|
+
byte[] value = cert.getExtensionValue(ncritOid);
|
|
198
|
+
IRubyObject rValue = ASN1.decode(ossl.getConstant("ASN1"),runtime.newString(new ByteList(value, false))).callMethod(tc,"value");
|
|
199
|
+
|
|
200
|
+
if(ncritOid.equals("2.5.29.17")) {
|
|
201
|
+
X509Extensions.Extension ext = (X509Extensions.Extension)(((RubyClass)(((RubyModule)(getRuntime().getModule("OpenSSL").getConstant("X509"))).getConstant("Extension"))).callMethod(tc,"new", new IRubyObject[]{runtime.newString(ncritOid),rValue,runtime.getFalse()}));
|
|
202
|
+
add_extension(ext);
|
|
203
|
+
} else {
|
|
204
|
+
byte[] dest = new byte[value.length - 4];
|
|
205
|
+
System.arraycopy(value, 4, dest, 0, value.length - 4);
|
|
206
|
+
add_extension(extFact.callMethod(tc,"create_ext", new IRubyObject[]{runtime.newString(ncritOid),runtime.newString(new ByteList(dest, false)),runtime.getFalse()}));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
changed = false;
|
|
211
|
+
|
|
212
|
+
return this;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
//Lazy method for public key instantiation
|
|
216
|
+
private void set_public_key(String algorithm, byte[] encoded) {
|
|
217
|
+
this.public_key_algorithm = algorithm;
|
|
218
|
+
this.public_key_encoded = encoded;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
public static RaiseException newCertificateError(Ruby runtime, Exception ex) {
|
|
222
|
+
return newCertificateError(runtime, ex.getMessage());
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
public static RaiseException newCertificateError(Ruby runtime, String message) {
|
|
226
|
+
throw new RaiseException(runtime, (RubyClass)runtime.getClassFromPath("OpenSSL::X509::CertificateError"), message, true);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
@JRubyMethod
|
|
230
|
+
public IRubyObject initialize_copy(IRubyObject obj) {
|
|
231
|
+
if(this == obj) {
|
|
232
|
+
return this;
|
|
233
|
+
}
|
|
234
|
+
checkFrozen();
|
|
235
|
+
return this;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@JRubyMethod
|
|
239
|
+
public IRubyObject to_der() {
|
|
240
|
+
try {
|
|
241
|
+
return RubyString.newString(getRuntime(), cert.getEncoded());
|
|
242
|
+
} catch (CertificateEncodingException ex) {
|
|
243
|
+
throw newCertificateError(getRuntime(), ex);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@JRubyMethod(name={"to_pem","to_s"})
|
|
248
|
+
public IRubyObject to_pem() {
|
|
249
|
+
try {
|
|
250
|
+
StringWriter w = new StringWriter();
|
|
251
|
+
PEMInputOutput.writeX509Certificate(w, getAuxCert());
|
|
252
|
+
w.close();
|
|
253
|
+
return getRuntime().newString(w.toString());
|
|
254
|
+
} catch (IOException ex) {
|
|
255
|
+
throw getRuntime().newIOErrorFromException(ex);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
@JRubyMethod
|
|
260
|
+
public IRubyObject to_text() {
|
|
261
|
+
return getRuntime().newString(getAuxCert().toString());
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
@JRubyMethod
|
|
265
|
+
public IRubyObject inspect() {
|
|
266
|
+
return getRuntime().getNil();
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
@JRubyMethod
|
|
270
|
+
public IRubyObject version() {
|
|
271
|
+
return version;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
@JRubyMethod(name="version=")
|
|
275
|
+
public IRubyObject set_version(IRubyObject arg) {
|
|
276
|
+
if(!arg.equals(this.version)) {
|
|
277
|
+
changed = true;
|
|
278
|
+
}
|
|
279
|
+
this.version = arg;
|
|
280
|
+
return arg;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
@JRubyMethod
|
|
284
|
+
public IRubyObject signature_algorithm() {
|
|
285
|
+
return sig_alg;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
@JRubyMethod
|
|
289
|
+
public IRubyObject serial() {
|
|
290
|
+
return serial;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
@JRubyMethod(name="serial=")
|
|
294
|
+
public IRubyObject set_serial(IRubyObject num) {
|
|
295
|
+
if(!num.equals(this.serial)) {
|
|
296
|
+
changed = true;
|
|
297
|
+
}
|
|
298
|
+
serial = num;
|
|
299
|
+
String s = serial.toString();
|
|
300
|
+
|
|
301
|
+
BigInteger bi;
|
|
302
|
+
if (s.equals("0")) { // MRI compatibility: allow 0 serial number
|
|
303
|
+
bi = BigInteger.ONE;
|
|
304
|
+
} else {
|
|
305
|
+
bi = new BigInteger(s);
|
|
306
|
+
}
|
|
307
|
+
generator.setSerialNumber(bi);
|
|
308
|
+
return num;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
@JRubyMethod
|
|
312
|
+
public IRubyObject subject() {
|
|
313
|
+
return subject;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
@JRubyMethod(name="subject=")
|
|
317
|
+
public IRubyObject set_subject(IRubyObject arg) {
|
|
318
|
+
if(!arg.equals(this.subject)) {
|
|
319
|
+
changed = true;
|
|
320
|
+
}
|
|
321
|
+
subject = arg;
|
|
322
|
+
generator.setSubjectDN(((X509Name)subject).getRealName());
|
|
323
|
+
return arg;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
@JRubyMethod
|
|
327
|
+
public IRubyObject issuer() {
|
|
328
|
+
return issuer;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
@JRubyMethod(name="issuer=")
|
|
332
|
+
public IRubyObject set_issuer(IRubyObject arg) {
|
|
333
|
+
if(!arg.equals(this.issuer)) {
|
|
334
|
+
changed = true;
|
|
335
|
+
}
|
|
336
|
+
issuer = arg;
|
|
337
|
+
generator.setIssuerDN(((X509Name)issuer).getRealName());
|
|
338
|
+
return arg;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
@JRubyMethod
|
|
342
|
+
public IRubyObject not_before() {
|
|
343
|
+
return not_before;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
@JRubyMethod(name="not_before=")
|
|
347
|
+
public IRubyObject set_not_before(IRubyObject arg) {
|
|
348
|
+
changed = true;
|
|
349
|
+
not_before = arg.callMethod(getRuntime().getCurrentContext(),"getutc");
|
|
350
|
+
((RubyTime)not_before).setMicroseconds(0);
|
|
351
|
+
generator.setNotBefore(((RubyTime)not_before).getJavaDate());
|
|
352
|
+
return arg;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
@JRubyMethod
|
|
356
|
+
public IRubyObject not_after() {
|
|
357
|
+
return not_after;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
@JRubyMethod(name="not_after=")
|
|
361
|
+
public IRubyObject set_not_after(IRubyObject arg) {
|
|
362
|
+
changed = true;
|
|
363
|
+
not_after = arg.callMethod(getRuntime().getCurrentContext(),"getutc");
|
|
364
|
+
((RubyTime)not_after).setMicroseconds(0);
|
|
365
|
+
generator.setNotAfter(((RubyTime)not_after).getJavaDate());
|
|
366
|
+
return arg;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
@JRubyMethod
|
|
370
|
+
public IRubyObject public_key() {
|
|
371
|
+
if (public_key == null && public_key_encoded != null && public_key_algorithm != null){
|
|
372
|
+
RubyModule ossl = getRuntime().getModule("OpenSSL");
|
|
373
|
+
RubyModule pkey = (RubyModule)ossl.getConstant("PKey");
|
|
374
|
+
ThreadContext tc = getRuntime().getCurrentContext();
|
|
375
|
+
|
|
376
|
+
if ("RSA".equalsIgnoreCase(public_key_algorithm)) {
|
|
377
|
+
set_public_key(pkey.getConstant("RSA").callMethod(tc,"new",RubyString.newString(getRuntime(), cert.getPublicKey().getEncoded())));
|
|
378
|
+
} else if ("DSA".equalsIgnoreCase(public_key_algorithm)) {
|
|
379
|
+
set_public_key(pkey.getConstant("DSA").callMethod(tc,"new",RubyString.newString(getRuntime(), cert.getPublicKey().getEncoded())));
|
|
380
|
+
} else {
|
|
381
|
+
throw newCertificateError(getRuntime(), "The algorithm " + public_key_algorithm + " is unsupported for public keys");
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
return public_key;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
@JRubyMethod(name="public_key=")
|
|
389
|
+
public IRubyObject set_public_key(IRubyObject arg) {
|
|
390
|
+
if(!arg.equals(this.public_key)) {
|
|
391
|
+
changed = true;
|
|
392
|
+
}
|
|
393
|
+
public_key = arg;
|
|
394
|
+
generator.setPublicKey(((PKey)public_key).getPublicKey());
|
|
395
|
+
return arg;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
@JRubyMethod
|
|
399
|
+
public IRubyObject sign(ThreadContext context, final IRubyObject key, IRubyObject digest) {
|
|
400
|
+
Ruby runtime = context.getRuntime();
|
|
401
|
+
|
|
402
|
+
// Have to obey some artificial constraints of the OpenSSL implementation. Stupid.
|
|
403
|
+
String keyAlg = ((PKey)key).getAlgorithm();
|
|
404
|
+
String digAlg = ((Digest)digest).getAlgorithm();
|
|
405
|
+
|
|
406
|
+
if(("DSA".equalsIgnoreCase(keyAlg) && "MD5".equalsIgnoreCase(digAlg)) ||
|
|
407
|
+
("RSA".equalsIgnoreCase(keyAlg) && "DSS1".equals(((Digest)digest).name().toString())) ||
|
|
408
|
+
("DSA".equalsIgnoreCase(keyAlg) && "SHA1".equals(((Digest)digest).name().toString()))) {
|
|
409
|
+
throw new RaiseException(runtime, (RubyClass)(((RubyModule)(runtime.getModule("OpenSSL").getConstant("X509"))).getConstant("CertificateError")), null, true);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
for(Iterator<IRubyObject> iter = extensions.iterator();iter.hasNext();) {
|
|
413
|
+
X509Extensions.Extension ag = (X509Extensions.Extension)iter.next();
|
|
414
|
+
try {
|
|
415
|
+
byte[] bytes = ag.getRealValueBytes();
|
|
416
|
+
generator.addExtension(ag.getRealOid(),ag.getRealCritical(),bytes);
|
|
417
|
+
} catch (IOException ioe) {
|
|
418
|
+
throw runtime.newIOErrorFromException(ioe);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
sig_alg = runtime.newString(digAlg);
|
|
423
|
+
generator.setSignatureAlgorithm(digAlg + "WITH" + keyAlg);
|
|
424
|
+
|
|
425
|
+
OpenSSLReal.doWithBCProvider(new Runnable() {
|
|
426
|
+
public void run() {
|
|
427
|
+
try {
|
|
428
|
+
cert = generator.generate(((PKey)key).getPrivateKey(),"BC");
|
|
429
|
+
} catch(GeneralSecurityException e) {
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
changed = false;
|
|
435
|
+
return this;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
@JRubyMethod
|
|
439
|
+
public IRubyObject verify(IRubyObject key) {
|
|
440
|
+
if(changed) {
|
|
441
|
+
return getRuntime().getFalse();
|
|
442
|
+
}
|
|
443
|
+
try {
|
|
444
|
+
cert.verify(((PKey)key).getPublicKey());
|
|
445
|
+
return getRuntime().getTrue();
|
|
446
|
+
} catch (CertificateException ce) {
|
|
447
|
+
throw newCertificateError(getRuntime(), ce);
|
|
448
|
+
} catch (NoSuchAlgorithmException nsae) {
|
|
449
|
+
throw newCertificateError(getRuntime(), nsae);
|
|
450
|
+
} catch (NoSuchProviderException nspe) {
|
|
451
|
+
throw newCertificateError(getRuntime(), nspe);
|
|
452
|
+
} catch (SignatureException se) {
|
|
453
|
+
throw newCertificateError(getRuntime(), se);
|
|
454
|
+
} catch(InvalidKeyException e) {
|
|
455
|
+
return getRuntime().getFalse();
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
@JRubyMethod
|
|
460
|
+
public IRubyObject check_private_key(IRubyObject arg) {
|
|
461
|
+
PKey key = (PKey)arg;
|
|
462
|
+
PublicKey pkey = key.getPublicKey();
|
|
463
|
+
PublicKey certPubKey = getAuxCert().getPublicKey();
|
|
464
|
+
if (certPubKey.equals(pkey))
|
|
465
|
+
return getRuntime().getTrue();
|
|
466
|
+
return getRuntime().getFalse();
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
@JRubyMethod
|
|
470
|
+
public IRubyObject extensions() {
|
|
471
|
+
return getRuntime().newArray(extensions);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
@SuppressWarnings("unchecked")
|
|
475
|
+
@JRubyMethod(name="extensions=")
|
|
476
|
+
public IRubyObject set_extensions(IRubyObject arg) {
|
|
477
|
+
extensions = new ArrayList(((RubyArray)arg).getList());
|
|
478
|
+
return arg;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
@JRubyMethod
|
|
482
|
+
public IRubyObject add_extension(IRubyObject arg) {
|
|
483
|
+
changed = true;
|
|
484
|
+
DERObjectIdentifier oid = ((X509Extensions.Extension)arg).getRealOid();
|
|
485
|
+
if(oid.equals(new DERObjectIdentifier("2.5.29.17"))) {
|
|
486
|
+
boolean one = true;
|
|
487
|
+
for(Iterator iter = extensions.iterator();iter.hasNext();) {
|
|
488
|
+
X509Extensions.Extension ag = (X509Extensions.Extension)iter.next();
|
|
489
|
+
if(ag.getRealOid().equals(new DERObjectIdentifier("2.5.29.17"))) {
|
|
490
|
+
ASN1EncodableVector v1 = new ASN1EncodableVector();
|
|
491
|
+
|
|
492
|
+
try {
|
|
493
|
+
GeneralName[] n1 = GeneralNames.getInstance(new ASN1InputStream(ag.getRealValueBytes()).readObject()).getNames();
|
|
494
|
+
GeneralName[] n2 = GeneralNames.getInstance(new ASN1InputStream(((X509Extensions.Extension)arg).getRealValueBytes()).readObject()).getNames();
|
|
495
|
+
|
|
496
|
+
for(int i=0;i<n1.length;i++) {
|
|
497
|
+
v1.add(n1[i]);
|
|
498
|
+
}
|
|
499
|
+
for(int i=0;i<n2.length;i++) {
|
|
500
|
+
v1.add(n2[i]);
|
|
501
|
+
}
|
|
502
|
+
} catch (IOException ex) {
|
|
503
|
+
throw getRuntime().newIOErrorFromException(ex);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
ag.setRealValue(new String(ByteList.plain(new GeneralNames(new DERSequence(v1)).getDEREncoded())));
|
|
507
|
+
one = false;
|
|
508
|
+
break;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
if(one) {
|
|
512
|
+
extensions.add(arg);
|
|
513
|
+
}
|
|
514
|
+
} else {
|
|
515
|
+
extensions.add(arg);
|
|
516
|
+
}
|
|
517
|
+
return arg;
|
|
518
|
+
}
|
|
519
|
+
}// X509Cert
|
|
520
|
+
|