ruby-sslyze 0.2.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -4
  3. data/.travis.yml +15 -7
  4. data/ChangeLog.md +29 -12
  5. data/Gemfile +3 -2
  6. data/LICENSE.txt +1 -1
  7. data/README.md +5 -5
  8. data/Rakefile +1 -1
  9. data/lib/sslyze/cipher_suites.rb +176 -0
  10. data/lib/sslyze/program.rb +8 -8
  11. data/lib/sslyze/task.rb +40 -33
  12. data/lib/sslyze/version.rb +1 -1
  13. data/lib/sslyze/{certificate/domain_name.rb → x509/domain.rb} +5 -3
  14. data/lib/sslyze/x509/extension.rb +15 -0
  15. data/lib/sslyze/x509/extension_set.rb +140 -0
  16. data/lib/sslyze/x509/extensions.rb +6 -0
  17. data/lib/sslyze/x509/extensions/basic_constraints.rb +41 -0
  18. data/lib/sslyze/x509/extensions/certificate_policies.rb +108 -0
  19. data/lib/sslyze/x509/extensions/crl_distribution_points.rb +47 -0
  20. data/lib/sslyze/x509/extensions/extended_key_usage.rb +58 -0
  21. data/lib/sslyze/x509/extensions/key_usage.rb +66 -0
  22. data/lib/sslyze/x509/extensions/subject_alt_name.rb +144 -0
  23. data/lib/sslyze/x509/name.rb +194 -0
  24. data/lib/sslyze/x509/public_key.rb +53 -0
  25. data/lib/sslyze/xml.rb +26 -37
  26. data/lib/sslyze/xml/attributes.rb +5 -0
  27. data/lib/sslyze/xml/attributes/error.rb +30 -0
  28. data/lib/sslyze/xml/attributes/exception.rb +30 -0
  29. data/lib/sslyze/xml/attributes/is_supported.rb +29 -0
  30. data/lib/sslyze/xml/attributes/is_vulnerable.rb +29 -0
  31. data/lib/sslyze/xml/attributes/title.rb +31 -0
  32. data/lib/sslyze/xml/certinfo.rb +67 -0
  33. data/lib/sslyze/xml/certinfo/certificate.rb +202 -0
  34. data/lib/sslyze/xml/certinfo/certificate_validation.rb +69 -0
  35. data/lib/sslyze/xml/certinfo/certificate_validation/hostname_validation.rb +54 -0
  36. data/lib/sslyze/xml/certinfo/certificate_validation/path_validation.rb +84 -0
  37. data/lib/sslyze/xml/certinfo/certificate_validation/verified_certificate_chain.rb +41 -0
  38. data/lib/sslyze/xml/certinfo/has_certificates.rb +102 -0
  39. data/lib/sslyze/xml/certinfo/ocsp_stapling.rb +45 -0
  40. data/lib/sslyze/xml/certinfo/ocsp_stapling/ocsp_response.rb +87 -0
  41. data/lib/sslyze/xml/certinfo/received_certificate_chain.rb +48 -0
  42. data/lib/sslyze/xml/compression.rb +33 -0
  43. data/lib/sslyze/xml/compression/compression_method.rb +38 -0
  44. data/lib/sslyze/xml/fallback.rb +34 -0
  45. data/lib/sslyze/xml/fallback/tls_fallback_scsv.rb +27 -0
  46. data/lib/sslyze/xml/heartbleed.rb +38 -0
  47. data/lib/sslyze/xml/heartbleed/openssl_heartbleed.rb +29 -0
  48. data/lib/sslyze/xml/http_headers.rb +42 -0
  49. data/lib/sslyze/xml/http_headers/http_public_key_pinning.rb +121 -0
  50. data/lib/sslyze/xml/http_headers/http_strict_transport_security.rb +59 -0
  51. data/lib/sslyze/xml/invalid_target.rb +33 -0
  52. data/lib/sslyze/xml/openssl_ccs.rb +34 -0
  53. data/lib/sslyze/xml/openssl_ccs/openssl_ccs_injection.rb +26 -0
  54. data/lib/sslyze/xml/plugin.rb +27 -0
  55. data/lib/sslyze/xml/protocol.rb +143 -0
  56. data/lib/sslyze/xml/protocol/cipher_suite.rb +93 -0
  57. data/lib/sslyze/xml/protocol/cipher_suite/key_exchange.rb +127 -0
  58. data/lib/sslyze/xml/reneg.rb +28 -0
  59. data/lib/sslyze/xml/reneg/session_renegotiation.rb +51 -0
  60. data/lib/sslyze/xml/resum.rb +42 -0
  61. data/lib/sslyze/xml/resum/session_resumption_with_session_ids.rb +94 -0
  62. data/lib/sslyze/xml/resum/session_resumption_with_tls_tickets.rb +69 -0
  63. data/lib/sslyze/xml/resum_rate.rb +30 -0
  64. data/lib/sslyze/xml/target.rb +371 -0
  65. data/lib/sslyze/xml/types.rb +19 -0
  66. data/ruby-sslyze.gemspec +3 -3
  67. data/spec/spec_helper.rb +2 -4
  68. data/spec/sslyze.xml +2356 -2580
  69. data/spec/x509/domain_spec.rb +125 -0
  70. data/spec/x509/extension_set_spec.rb +208 -0
  71. data/spec/x509/extension_spec.rb +58 -0
  72. data/spec/x509/extensions/basic_constraints_spec.rb +41 -0
  73. data/spec/x509/extensions/certificate_policies_spec.rb +38 -0
  74. data/spec/x509/extensions/crl_distribution_points_spec.rb +38 -0
  75. data/spec/x509/extensions/extended_key_usage_spec.rb +58 -0
  76. data/spec/x509/extensions/key_usage_spec.rb +84 -0
  77. data/spec/x509/extensions/subject_alt_name_spec.rb +146 -0
  78. data/spec/x509/name_spec.rb +85 -0
  79. data/spec/x509/public_key_spec.rb +113 -0
  80. data/spec/xml/certinfo/certificate_spec.rb +166 -0
  81. data/spec/xml/certinfo/certificate_validation/hostname_validation_spec.rb +23 -0
  82. data/spec/xml/certinfo/certificate_validation/path_validation_spec.rb +107 -0
  83. data/spec/xml/certinfo/certificate_validation/verified_certificate_chain_spec.rb +163 -0
  84. data/spec/xml/certinfo/certificate_validation_spec.rb +40 -0
  85. data/spec/xml/certinfo/ocsp_stapling/ocsp_response_spec.rb +61 -0
  86. data/spec/xml/certinfo/ocsp_stapling_spec.rb +31 -0
  87. data/spec/xml/certinfo/received_certificate_chain_spec.rb +165 -0
  88. data/spec/xml/certinfo_spec.rb +45 -0
  89. data/spec/xml/compression/compression_method_spec.rb +23 -0
  90. data/spec/xml/compression_spec.rb +23 -0
  91. data/spec/xml/heartbleed/openssl_heartbleed_spec.rb +17 -0
  92. data/spec/xml/heartbleed_spec.rb +37 -0
  93. data/spec/xml/http_headers/http_public_key_pinning_spec.rb +73 -0
  94. data/spec/xml/http_headers/http_strict_transport_security_spec.rb +107 -0
  95. data/spec/xml/http_headers_spec.rb +63 -0
  96. data/spec/xml/invalid_target_spec.rb +23 -0
  97. data/spec/xml/plugin_examples.rb +14 -0
  98. data/spec/{key_exchange_spec.rb → xml/protocol/cipher_suite/key_exchange_spec.rb} +9 -3
  99. data/spec/xml/protocol/cipher_suite_spec.rb +66 -0
  100. data/spec/xml/protocol_spec.rb +115 -0
  101. data/spec/xml/reneg/session_renegotiation_spec.rb +23 -0
  102. data/spec/xml/reneg_spec.rb +35 -0
  103. data/spec/xml/resum/session_resumption_with_session_ids_spec.rb +103 -0
  104. data/spec/xml/resum/session_resumption_with_tls_tickets_spec.rb +121 -0
  105. data/spec/xml/resum_rate_spec.rb +30 -0
  106. data/spec/xml/resum_spec.rb +47 -0
  107. data/spec/{target_spec.rb → xml/target_spec.rb} +73 -27
  108. data/spec/xml_spec.rb +13 -21
  109. metadata +138 -61
  110. data/lib/sslyze/cert_info.rb +0 -57
  111. data/lib/sslyze/certificate.rb +0 -139
  112. data/lib/sslyze/certificate/extensions.rb +0 -127
  113. data/lib/sslyze/certificate/extensions/authority_information_access.rb +0 -38
  114. data/lib/sslyze/certificate/extensions/extension.rb +0 -26
  115. data/lib/sslyze/certificate/extensions/x509v3_basic_constraints.rb +0 -60
  116. data/lib/sslyze/certificate/extensions/x509v3_certificate_policies.rb +0 -50
  117. data/lib/sslyze/certificate/extensions/x509v3_crl_distribution_points.rb +0 -32
  118. data/lib/sslyze/certificate/extensions/x509v3_extended_key_usage.rb +0 -32
  119. data/lib/sslyze/certificate/extensions/x509v3_key_usage.rb +0 -50
  120. data/lib/sslyze/certificate/extensions/x509v3_subject_alternative_name.rb +0 -71
  121. data/lib/sslyze/certificate/issuer.rb +0 -56
  122. data/lib/sslyze/certificate/public_key.rb +0 -9
  123. data/lib/sslyze/certificate/subject.rb +0 -117
  124. data/lib/sslyze/certificate/subject_public_key_info.rb +0 -53
  125. data/lib/sslyze/certificate/validity.rb +0 -9
  126. data/lib/sslyze/certificate_chain.rb +0 -89
  127. data/lib/sslyze/certificate_validation.rb +0 -70
  128. data/lib/sslyze/cipher_suite.rb +0 -237
  129. data/lib/sslyze/invalid_target.rb +0 -35
  130. data/lib/sslyze/key_exchange.rb +0 -106
  131. data/lib/sslyze/ocsp_response.rb +0 -87
  132. data/lib/sslyze/protocol.rb +0 -133
  133. data/lib/sslyze/target.rb +0 -312
  134. data/lib/sslyze/types.rb +0 -17
  135. data/spec/cert_info_spec.rb +0 -29
  136. data/spec/certificate/subject_name_spec.rb +0 -72
  137. data/spec/certificate_chain_spec.rb +0 -61
  138. data/spec/certificate_spec.rb +0 -330
  139. data/spec/certificate_validation_spec.rb +0 -39
  140. data/spec/cipher_suite_spec.rb +0 -50
  141. data/spec/invalid_target_spec.rb +0 -21
  142. data/spec/issuer_spec.rb +0 -33
  143. data/spec/ocsp_response_spec.rb +0 -59
  144. data/spec/protocol_spec.rb +0 -99
  145. data/spec/subject_public_key_info_spec.rb +0 -35
  146. data/spec/subject_spec.rb +0 -69
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c04db52b8cef3f43b85dc0eeabd6d54ea8677059
4
- data.tar.gz: 945e8f92174305403a57fedbaee3f0e8aef1241b
3
+ metadata.gz: d7ea99501fa0ae17845721682e514eba2e8215b8
4
+ data.tar.gz: 7a644cac1658032cfb7db09aeeb6b1afe4b3dc70
5
5
  SHA512:
6
- metadata.gz: a6c8c76320828ed9b82cc0f512cf07760d14092730acdb5e07e6ff1d0efdcc822b3f9f21904fd5ffd509d804ab3d845a30a2904f9e22e3f6a0288b55f9d423f2
7
- data.tar.gz: b8ed037b913ea17bd7f2c583f2e9bd09eb28f4fe3afb53f2ee7e261b61d1e5680241df8b64a5c6b10699b4d77eeecb74e4aea89fd5b80aa30e7a20330e222690
6
+ metadata.gz: f2b5ee21ec3a517cf2ec415562a4f599973da3aa45b4575d4060cd876e9777a0f3ed8acec69ecc5c36e2535d1a0624d908294de61041415d2bf5f67d41b3a362
7
+ data.tar.gz: 8e4d491aad4d6468b46c99c1e662201d1d9796d5febd4691f4cc253792de035e02ce986b5db616693a67b605c336428878a7f9c29d69f00ca80c07946bf652eb
data/.gitignore CHANGED
@@ -1,4 +1,6 @@
1
- Gemfile.lock
2
- doc/
3
- pkg/
4
- vendor/cache/*.gem
1
+ /Gemfile.lock
2
+ /coverage
3
+ /doc/
4
+ /pkg/
5
+ /vendor/cache/*.gem
6
+ /env
@@ -1,18 +1,26 @@
1
1
  language: ruby
2
2
  sudo: false
3
+ before_install:
4
+ - pip install --upgrade --user pip setuptools
5
+ - pip install --user sslyze
6
+
3
7
  rvm:
4
- - 2.0
5
- - 2.1
6
- - 2.2
7
- - ruby-head
8
- - jruby
9
- - rbx-2
8
+ - 2.3
9
+ - 2.4
10
+ - ruby-head
11
+ - jruby
12
+
10
13
  matrix:
11
14
  allow_failures:
12
- - rvm: rbx-2
15
+ - rvm: jruby
16
+
13
17
  addons:
14
18
  code_climate:
15
19
  repo_token: 2a03fa37ce5a5cb21bb117a736be5d83dcf9f1c3ea2b248f7af4c0a7b330d8c8
20
+
21
+ after_success:
22
+ - bundle exec codeclimate-test-reporter
23
+
16
24
  notifications:
17
25
  slack:
18
26
  secure: IfKhtia5nM6KA9nK8jiSkNnVOLN96er6gK5jgjYKFNrVyWAKRUJZ0TB9L+igjUWDq7t+tRvj8yGT2k61xVJgF+ZDlQiWvyazTsgQeqbjieCxCrj/BTGZLyD1hhOLg7vqpyeQvp/34hDahx6XNp6XPvkxeofjc0H6STv2UjJkpQk=
@@ -1,3 +1,20 @@
1
+ ### 1.0.0 / 2018-03-06
2
+
3
+ * Require [sslyze] >= 1.3.4.
4
+ * Added {SSLyze::X509::Domain}.
5
+ * Added {SSLyze::X509::Extension}.
6
+ * Added {SSLyze::X509::ExtensionSet}.
7
+ * Added {SSLyze::X509::Extensions::BasicConstraints}.
8
+ * Added {SSLyze::X509::Extensions::CertificatePolicies}.
9
+ * Added {SSLyze::X509::Extensions::CRLDistributionPoints}.
10
+ * Added {SSLyze::X509::Extensions::ExtendedKeyUsage}.
11
+ * Added {SSLyze::X509::Extensions::KeyUsage}.
12
+ * Added {SSLyze::X509::Extensions::SubjectAltName}.
13
+ * Added {SSLyze::X509::Name}.
14
+ * Added {SSLyze::X509::PublicKey}.
15
+ * Moved all XML related classes into {SSLyze::XML}.
16
+ * Updated {SSLyze::XML} and classes to represent the current sslyze 1.3.4 XSD.
17
+
1
18
  ### 0.2.1 / 2017-01-13
2
19
 
3
20
  * Fix file descriptor leak in {SSLyze::XML.open} by using
@@ -7,23 +24,23 @@
7
24
  ### 0.2.0 / 2016-08-16
8
25
 
9
26
  * Requires sslyze 0.12.x.
10
- * Added {SSLyze::XML#each_invalid_target}.
11
- * Added {SSLyze::XML#invalid_targets}.
12
- * Added {SSLyze::InvalidTarget}.
13
- * Added {SSLyze::Target#ssl_v2} alias.
14
- * Added {SSLyze::Target#ssl_v3} alias.
15
- * Added {SSLyze::Target#tls_v1} alias.
16
- * Added {SSLyze::Target#tls_v1_1} alias.
17
- * Added {SSLyze::Target#tls_v1_2} alias.
18
- * Added {SSLyze::CertificateValidation#path?}.
19
- * Added {SSLyze::CertificateValidation#results}.
20
- * Fixed a bug in {SSLyze::CertInfo#validation} when the `certificateValidation`
27
+ * Added `SSLyze::XML#each_invalid_target`.
28
+ * Added `SSLyze::XML#invalid_targets`.
29
+ * Added `SSLyze::InvalidTarget`.
30
+ * Added `SSLyze::Target#ssl_v2` alias.
31
+ * Added `SSLyze::Target#ssl_v3` alias.
32
+ * Added `SSLyze::Target#tls_v1` alias.
33
+ * Added `SSLyze::Target#tls_v1_1` alias.
34
+ * Added `SSLyze::Target#tls_v1_2` alias.
35
+ * Added `SSLyze::CertificateValidation#path?`.
36
+ * Added `SSLyze::CertificateValidation#results`.
37
+ * Fixed a bug in `SSLyze::CertInfo#validation` when the `certificateValidation`
21
38
  node is omitted.
22
39
 
23
40
  ### 0.1.1 / 2015-12-08
24
41
 
25
42
  * `certificateValidation` may be omitted from `certinfo` if an OpenSSL
26
- exception occurred. Allow {SSLyze::CertInfo#validation} may return `nil`.
43
+ exception occurred. Allow `SSLyze::CertInfo#validation` may return `nil`.
27
44
 
28
45
  ### 0.1.0 / 2015-10-13
29
46
 
data/Gemfile CHANGED
@@ -8,11 +8,12 @@ group :development do
8
8
 
9
9
  gem 'rspec', '~> 3.0'
10
10
 
11
- gem 'yard', '~> 0.8'
11
+ gem 'yard', '~> 0.9'
12
12
  gem 'kramdown'
13
13
  end
14
14
 
15
15
  group :test do
16
16
  gem 'json'
17
- gem 'codeclimate-test-reporter', require: nil
17
+ gem 'simplecov', require: nil
18
+ gem 'codeclimate-test-reporter', '~> 1.0.0', require: nil
18
19
  end
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014-2017 Hal Brodigan
1
+ Copyright (c) 2014-2018 Hal Brodigan
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -7,7 +7,6 @@
7
7
  * [Homepage](https://github.com/trailofbits/ruby-sslyze#readme)
8
8
  * [Issues](https://github.com/trailofbits/ruby-sslyze/issues)
9
9
  * [Documentation](http://rubydoc.info/gems/ruby-sslyze/frames)
10
- * [Email](mailto:hal at trailofbits.com)
11
10
 
12
11
  ## Description
13
12
 
@@ -17,7 +16,7 @@ A Ruby interface to [sslyze] python utility.
17
16
 
18
17
  * Provides a Ruby interface to `sslyze.py`.
19
18
  * Provides a Parser for consuming the sslyze XML output.
20
- * [sslyze] 0.12.x
19
+ * Supports [sslyze] >= 1.3.4.
21
20
 
22
21
  ## Examples
23
22
 
@@ -51,16 +50,17 @@ Parsing sslyze XML output:
51
50
  ## Requirements
52
51
 
53
52
  * [rprogram] ~> 0.3
54
- * [nokogiri] ~> 1.0
55
- * [sslyze] 0.12.x
53
+ * [nokogiri] ~> 1.8
54
+ * [sslyze] >= 1.3.4
56
55
 
57
56
  ## Install
58
57
 
58
+ $ pip install sslyze
59
59
  $ gem install ruby-sslyze
60
60
 
61
61
  ## Copyright
62
62
 
63
- Copyright (c) 2014-2017 Hal Brodigan
63
+ Copyright (c) 2014-2018 Hal Brodigan
64
64
 
65
65
  See {file:LICENSE.txt} for details.
66
66
 
data/Rakefile CHANGED
@@ -19,5 +19,5 @@ YARD::Rake::YardocTask.new
19
19
  task :doc => :yard
20
20
 
21
21
  file 'spec/sslyze.xml' do
22
- sh 'sslyze.py --xml_out spec/sslyze.xml --regular --timeout 5 twitter.com github.com:443 yahoo.com:443'
22
+ sh 'sslyze --xml_out spec/sslyze.xml --regular --resum_rate --http_headers --timeout 5 twitter.com github.com:443 www.yahoo.com:443 foo bar'
23
23
  end
@@ -0,0 +1,176 @@
1
+ module SSLyze
2
+ module CipherSuites
3
+ # Mapping of RFC cipher suite names to their OpenSSL equivalents
4
+ #
5
+ # @note Source https://testssl.sh/openssl-rfc.mapping.html
6
+ OPENSSL_NAMES = {
7
+ "TLS_RSA_WITH_NULL_MD5"=>"NULL-MD5",
8
+ "TLS_RSA_WITH_NULL_SHA"=>"NULL-SHA",
9
+ "TLS_RSA_EXPORT_WITH_RC4_40_MD5"=>"EXP-RC4-MD5",
10
+ "TLS_RSA_WITH_RC4_128_MD5"=>"RC4-MD5",
11
+ "TLS_RSA_WITH_RC4_128_SHA"=>"RC4-SHA",
12
+ "TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5"=>"EXP-RC2-CBC-MD5",
13
+ "TLS_RSA_WITH_IDEA_CBC_SHA"=>"IDEA-CBC-SHA",
14
+ "TLS_RSA_EXPORT_WITH_DES40_CBC_SHA"=>"EXP-DES-CBC-SHA",
15
+ "TLS_RSA_WITH_DES_CBC_SHA"=>"DES-CBC-SHA",
16
+ "TLS_RSA_WITH_3DES_EDE_CBC_SHA"=>"DES-CBC3-SHA",
17
+ "TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"=>"EXP-DH-DSS-DES-CBC-SHA",
18
+ "TLS_DH_DSS_WITH_DES_CBC_SHA"=>"DH-DSS-DES-CBC-SHA",
19
+ "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA"=>"DH-DSS-DES-CBC3-SHA",
20
+ "TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"=>"EXP-DH-RSA-DES-CBC-SHA",
21
+ "TLS_DH_RSA_WITH_DES_CBC_SHA"=>"DH-RSA-DES-CBC-SHA",
22
+ "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA"=>"DH-RSA-DES-CBC3-SHA",
23
+ "TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"=>"EXP-EDH-DSS-DES-CBC-SHA",
24
+ "TLS_DHE_DSS_WITH_DES_CBC_SHA"=>"EDH-DSS-DES-CBC-SHA",
25
+ "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"=>"EDH-DSS-DES-CBC3-SHA",
26
+ "TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"=>"EXP-EDH-RSA-DES-CBC-SHA",
27
+ "TLS_DHE_RSA_WITH_DES_CBC_SHA"=>"EDH-RSA-DES-CBC-SHA",
28
+ "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"=>"EDH-RSA-DES-CBC3-SHA",
29
+ "TLS_DH_anon_EXPORT_WITH_RC4_40_MD5"=>"EXP-ADH-RC4-MD5",
30
+ "TLS_DH_anon_WITH_RC4_128_MD5"=>"ADH-RC4-MD5",
31
+ "TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA"=>"EXP-ADH-DES-CBC-SHA",
32
+ "TLS_DH_anon_WITH_DES_CBC_SHA"=>"ADH-DES-CBC-SHA",
33
+ "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA"=>"ADH-DES-CBC3-SHA",
34
+ "TLS_KRB5_WITH_DES_CBC_SHA"=>"KRB5-DES-CBC-SHA",
35
+ "TLS_KRB5_WITH_3DES_EDE_CBC_SHA"=>"KRB5-DES-CBC3-SHA",
36
+ "TLS_KRB5_WITH_RC4_128_SHA"=>"KRB5-RC4-SHA",
37
+ "TLS_KRB5_WITH_IDEA_CBC_SHA"=>"KRB5-IDEA-CBC-SHA",
38
+ "TLS_KRB5_WITH_DES_CBC_MD5"=>"KRB5-DES-CBC-MD5",
39
+ "TLS_KRB5_WITH_3DES_EDE_CBC_MD5"=>"KRB5-DES-CBC3-MD5",
40
+ "TLS_KRB5_WITH_RC4_128_MD5"=>"KRB5-RC4-MD5",
41
+ "TLS_KRB5_WITH_IDEA_CBC_MD5"=>"KRB5-IDEA-CBC-MD5",
42
+ "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA"=>"EXP-KRB5-DES-CBC-SHA",
43
+ "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA"=>"EXP-KRB5-RC2-CBC-SHA",
44
+ "TLS_KRB5_EXPORT_WITH_RC4_40_SHA"=>"EXP-KRB5-RC4-SHA",
45
+ "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"=>"EXP-KRB5-DES-CBC-MD5",
46
+ "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5"=>"EXP-KRB5-RC2-CBC-MD5",
47
+ "TLS_KRB5_EXPORT_WITH_RC4_40_MD5"=>"EXP-KRB5-RC4-MD5",
48
+ "TLS_RSA_WITH_AES_128_CBC_SHA"=>"AES128-SHA",
49
+ "TLS_DH_DSS_WITH_AES_128_CBC_SHA"=>"DH-DSS-AES128-SHA",
50
+ "TLS_DH_RSA_WITH_AES_128_CBC_SHA"=>"DH-RSA-AES128-SHA",
51
+ "TLS_DHE_DSS_WITH_AES_128_CBC_SHA"=>"DHE-DSS-AES128-SHA",
52
+ "TLS_DHE_RSA_WITH_AES_128_CBC_SHA"=>"DHE-RSA-AES128-SHA",
53
+ "TLS_DH_anon_WITH_AES_128_CBC_SHA"=>"ADH-AES128-SHA",
54
+ "TLS_RSA_WITH_AES_256_CBC_SHA"=>"AES256-SHA",
55
+ "TLS_DH_DSS_WITH_AES_256_CBC_SHA"=>"DH-DSS-AES256-SHA",
56
+ "TLS_DH_RSA_WITH_AES_256_CBC_SHA"=>"DH-RSA-AES256-SHA",
57
+ "TLS_DHE_DSS_WITH_AES_256_CBC_SHA"=>"DHE-DSS-AES256-SHA",
58
+ "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"=>"DHE-RSA-AES256-SHA",
59
+ "TLS_DH_anon_WITH_AES_256_CBC_SHA"=>"ADH-AES256-SHA",
60
+ "TLS_RSA_WITH_NULL_SHA256"=>"NULL-SHA256",
61
+ "TLS_RSA_WITH_AES_128_CBC_SHA256"=>"AES128-SHA256",
62
+ "TLS_RSA_WITH_AES_256_CBC_SHA256"=>"AES256-SHA256",
63
+ "TLS_DH_DSS_WITH_AES_128_CBC_SHA256"=>"DH-DSS-AES128-SHA256",
64
+ "TLS_DH_RSA_WITH_AES_128_CBC_SHA256"=>"DH-RSA-AES128-SHA256",
65
+ "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"=>"DHE-DSS-AES128-SHA256",
66
+ "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA"=>"CAMELLIA128-SHA",
67
+ "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA"=>"DH-DSS-CAMELLIA128-SHA",
68
+ "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA"=>"DH-RSA-CAMELLIA128-SHA",
69
+ "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA"=>"DHE-DSS-CAMELLIA128-SHA",
70
+ "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA"=>"DHE-RSA-CAMELLIA128-SHA",
71
+ "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA"=>"ADH-CAMELLIA128-SHA",
72
+ "TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA"=>"EXP1024-DES-CBC-SHA",
73
+ "TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA"=>"EXP1024-DHE-DSS-DES-CBC-SHA",
74
+ "TLS_RSA_EXPORT1024_WITH_RC4_56_SHA"=>"EXP1024-RC4-SHA",
75
+ "TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA"=>"EXP1024-DHE-DSS-RC4-SHA",
76
+ "TLS_DHE_DSS_WITH_RC4_128_SHA"=>"DHE-DSS-RC4-SHA",
77
+ "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"=>"DHE-RSA-AES128-SHA256",
78
+ "TLS_DH_DSS_WITH_AES_256_CBC_SHA256"=>"DH-DSS-AES256-SHA256",
79
+ "TLS_DH_RSA_WITH_AES_256_CBC_SHA256"=>"DH-RSA-AES256-SHA256",
80
+ "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256"=>"DHE-DSS-AES256-SHA256",
81
+ "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256"=>"DHE-RSA-AES256-SHA256",
82
+ "TLS_DH_anon_WITH_AES_128_CBC_SHA256"=>"ADH-AES128-SHA256",
83
+ "TLS_DH_anon_WITH_AES_256_CBC_SHA256"=>"ADH-AES256-SHA256",
84
+ "TLS_GOSTR341094_WITH_28147_CNT_IMIT"=>"GOST94-GOST89-GOST89",
85
+ "TLS_GOSTR341001_WITH_28147_CNT_IMIT"=>"GOST2001-GOST89-GOST89",
86
+ "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA"=>"CAMELLIA256-SHA",
87
+ "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA"=>"DH-DSS-CAMELLIA256-SHA",
88
+ "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA"=>"DH-RSA-CAMELLIA256-SHA",
89
+ "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA"=>"DHE-DSS-CAMELLIA256-SHA",
90
+ "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA"=>"DHE-RSA-CAMELLIA256-SHA",
91
+ "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA"=>"ADH-CAMELLIA256-SHA",
92
+ "TLS_PSK_WITH_RC4_128_SHA"=>"PSK-RC4-SHA",
93
+ "TLS_PSK_WITH_3DES_EDE_CBC_SHA"=>"PSK-3DES-EDE-CBC-SHA",
94
+ "TLS_PSK_WITH_AES_128_CBC_SHA"=>"PSK-AES128-CBC-SHA",
95
+ "TLS_PSK_WITH_AES_256_CBC_SHA"=>"PSK-AES256-CBC-SHA",
96
+ "TLS_RSA_WITH_SEED_CBC_SHA"=>"SEED-SHA",
97
+ "TLS_DH_DSS_WITH_SEED_CBC_SHA"=>"DH-DSS-SEED-SHA",
98
+ "TLS_DH_RSA_WITH_SEED_CBC_SHA"=>"DH-RSA-SEED-SHA",
99
+ "TLS_DHE_DSS_WITH_SEED_CBC_SHA"=>"DHE-DSS-SEED-SHA",
100
+ "TLS_DHE_RSA_WITH_SEED_CBC_SHA"=>"DHE-RSA-SEED-SHA",
101
+ "TLS_DH_anon_WITH_SEED_CBC_SHA"=>"ADH-SEED-SHA",
102
+ "TLS_RSA_WITH_AES_128_GCM_SHA256"=>"AES128-GCM-SHA256",
103
+ "TLS_RSA_WITH_AES_256_GCM_SHA384"=>"AES256-GCM-SHA384",
104
+ "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"=>"DHE-RSA-AES128-GCM-SHA256",
105
+ "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384"=>"DHE-RSA-AES256-GCM-SHA384",
106
+ "TLS_DH_RSA_WITH_AES_128_GCM_SHA256"=>"DH-RSA-AES128-GCM-SHA256",
107
+ "TLS_DH_RSA_WITH_AES_256_GCM_SHA384"=>"DH-RSA-AES256-GCM-SHA384",
108
+ "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256"=>"DHE-DSS-AES128-GCM-SHA256",
109
+ "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384"=>"DHE-DSS-AES256-GCM-SHA384",
110
+ "TLS_DH_DSS_WITH_AES_128_GCM_SHA256"=>"DH-DSS-AES128-GCM-SHA256",
111
+ "TLS_DH_DSS_WITH_AES_256_GCM_SHA384"=>"DH-DSS-AES256-GCM-SHA384",
112
+ "TLS_DH_anon_WITH_AES_128_GCM_SHA256"=>"ADH-AES128-GCM-SHA256",
113
+ "TLS_DH_anon_WITH_AES_256_GCM_SHA384"=>"ADH-AES256-GCM-SHA384",
114
+ "TLS_FALLBACK_SCSV"=>"TLS_FALLBACK_SCSV",
115
+ "TLS_ECDH_ECDSA_WITH_NULL_SHA"=>"ECDH-ECDSA-NULL-SHA",
116
+ "TLS_ECDH_ECDSA_WITH_RC4_128_SHA"=>"ECDH-ECDSA-RC4-SHA",
117
+ "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA"=>"ECDH-ECDSA-DES-CBC3-SHA",
118
+ "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA"=>"ECDH-ECDSA-AES128-SHA",
119
+ "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA"=>"ECDH-ECDSA-AES256-SHA",
120
+ "TLS_ECDHE_ECDSA_WITH_NULL_SHA"=>"ECDHE-ECDSA-NULL-SHA",
121
+ "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA"=>"ECDHE-ECDSA-RC4-SHA",
122
+ "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"=>"ECDHE-ECDSA-DES-CBC3-SHA",
123
+ "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA"=>"ECDHE-ECDSA-AES128-SHA",
124
+ "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"=>"ECDHE-ECDSA-AES256-SHA",
125
+ "TLS_ECDH_RSA_WITH_NULL_SHA"=>"ECDH-RSA-NULL-SHA",
126
+ "TLS_ECDH_RSA_WITH_RC4_128_SHA"=>"ECDH-RSA-RC4-SHA",
127
+ "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA"=>"ECDH-RSA-DES-CBC3-SHA",
128
+ "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA"=>"ECDH-RSA-AES128-SHA",
129
+ "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA"=>"ECDH-RSA-AES256-SHA",
130
+ "TLS_ECDHE_RSA_WITH_NULL_SHA"=>"ECDHE-RSA-NULL-SHA",
131
+ "TLS_ECDHE_RSA_WITH_RC4_128_SHA"=>"ECDHE-RSA-RC4-SHA",
132
+ "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"=>"ECDHE-RSA-DES-CBC3-SHA",
133
+ "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"=>"ECDHE-RSA-AES128-SHA",
134
+ "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"=>"ECDHE-RSA-AES256-SHA",
135
+ "TLS_ECDH_anon_WITH_NULL_SHA"=>"AECDH-NULL-SHA",
136
+ "TLS_ECDH_anon_WITH_RC4_128_SHA"=>"AECDH-RC4-SHA",
137
+ "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA"=>"AECDH-DES-CBC3-SHA",
138
+ "TLS_ECDH_anon_WITH_AES_128_CBC_SHA"=>"AECDH-AES128-SHA",
139
+ "TLS_ECDH_anon_WITH_AES_256_CBC_SHA"=>"AECDH-AES256-SHA",
140
+ "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA"=>"SRP-3DES-EDE-CBC-SHA",
141
+ "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA"=>"SRP-RSA-3DES-EDE-CBC-SHA",
142
+ "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA"=>"SRP-DSS-3DES-EDE-CBC-SHA",
143
+ "TLS_SRP_SHA_WITH_AES_128_CBC_SHA"=>"SRP-AES-128-CBC-SHA",
144
+ "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA"=>"SRP-RSA-AES-128-CBC-SHA",
145
+ "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA"=>"SRP-DSS-AES-128-CBC-SHA",
146
+ "TLS_SRP_SHA_WITH_AES_256_CBC_SHA"=>"SRP-AES-256-CBC-SHA",
147
+ "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA"=>"SRP-RSA-AES-256-CBC-SHA",
148
+ "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA"=>"SRP-DSS-AES-256-CBC-SHA",
149
+ "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"=>"ECDHE-ECDSA-AES128-SHA256",
150
+ "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"=>"ECDHE-ECDSA-AES256-SHA384",
151
+ "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256"=>"ECDH-ECDSA-AES128-SHA256",
152
+ "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384"=>"ECDH-ECDSA-AES256-SHA384",
153
+ "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"=>"ECDHE-RSA-AES128-SHA256",
154
+ "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"=>"ECDHE-RSA-AES256-SHA384",
155
+ "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256"=>"ECDH-RSA-AES128-SHA256",
156
+ "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384"=>"ECDH-RSA-AES256-SHA384",
157
+ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"=>"ECDHE-ECDSA-AES128-GCM-SHA256",
158
+ "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"=>"ECDHE-ECDSA-AES256-GCM-SHA384",
159
+ "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256"=>"ECDH-ECDSA-AES128-GCM-SHA256",
160
+ "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384"=>"ECDH-ECDSA-AES256-GCM-SHA384",
161
+ "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"=>"ECDHE-RSA-AES128-GCM-SHA256",
162
+ "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"=>"ECDHE-RSA-AES256-GCM-SHA384",
163
+ "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256"=>"ECDH-RSA-AES128-GCM-SHA256",
164
+ "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384"=>"ECDH-RSA-AES256-GCM-SHA384",
165
+ "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"=>"ECDHE-RSA-CHACHA20-POLY1305",
166
+ "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"=>
167
+ "ECDHE-ECDSA-CHACHA20-POLY1305",
168
+ "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256"=>"DHE-RSA-CHACHA20-POLY1305",
169
+ "SSL_CK_RC2_128_CBC_WITH_MD5"=>"RC2-CBC-MD5",
170
+ "SSL_CK_IDEA_128_CBC_WITH_MD5"=>"IDEA-CBC-MD5",
171
+ "SSL_CK_DES_64_CBC_WITH_MD5"=>"DES-CBC-MD5",
172
+ "SSL_CK_DES_192_EDE3_CBC_WITH_MD5"=>"DES-CBC3-MD5",
173
+ "SSL_CK_RC4_64_WITH_MD5"=>"RC4-64-MD5"
174
+ }
175
+ end
176
+ end
@@ -4,24 +4,24 @@ require 'rprogram/program'
4
4
 
5
5
  module SSLyze
6
6
  #
7
- # Represents the `sslyze.py` command line utility.
7
+ # Represents the `sslyze` command line utility.
8
8
  #
9
9
  class Program < RProgram::Program
10
10
 
11
- name_program 'sslyze.py'
11
+ name_program 'sslyze'
12
12
 
13
13
  #
14
- # Finds the `sslyze.py` script and runs it.
14
+ # Finds the `sslyze` script and runs it.
15
15
  #
16
16
  # @param [Hash{Symbol => Object}] options
17
- # Additional options for `sslyze.py`.
17
+ # Additional options for `sslyze`.
18
18
  #
19
19
  # @param [Hash{Symbol => Object}] exec_options
20
20
  # Additional exec-options.
21
21
  #
22
22
  # @yield [task]
23
23
  # If a block is given, it will be passed a task object
24
- # used to specify options for `sslyze.py`.
24
+ # used to specify options for `sslyze`.
25
25
  #
26
26
  # @yieldparam [Task] task
27
27
  # The sslyze task object.
@@ -37,17 +37,17 @@ module SSLyze
37
37
  end
38
38
 
39
39
  #
40
- # Runs `sslyze.py`.
40
+ # Runs `sslyze`.
41
41
  #
42
42
  # @param [Hash{Symbol => Object}] options
43
- # Additional options for `sslyze.py`.
43
+ # Additional options for `sslyze`.
44
44
  #
45
45
  # @param [Hash{Symbol => Object}] exec_options
46
46
  # Additional exec-options.
47
47
  #
48
48
  # @yield [task]
49
49
  # If a block is given, it will be passed a task object
50
- # used to specify options for `sslyze.py`.
50
+ # used to specify options for `sslyze`.
51
51
  #
52
52
  # @yieldparam [Task] task
53
53
  # The sslyze task object.
@@ -9,56 +9,63 @@ module SSLyze
9
9
  # Options:
10
10
  long_option flag: '--version'
11
11
  long_option flag: '--help'
12
- long_option flag: '--xml_out'
13
- long_option flag: '--targets_in'
14
- long_option flag: '--timeout'
15
- long_option flag: '--nb_retries'
16
- long_option flag: '--https_tunnel'
17
- long_option flag: '--starttls'
18
- long_option flag: '--xmpp_to'
19
- long_option flag: '--sni'
20
12
  long_option flag: '--regular'
21
13
 
22
14
  # Client certificate support:
23
- long_option flag: '--cert'
24
- long_option flag: '--certfrom'
25
- long_option flag: '--key'
26
- long_option flag: '--keyfrom'
27
- long_option flag: '--pass'
15
+ long_option flag: '--cert', equals: true
16
+ long_option flag: '--key', equals: true
17
+ long_option flag: '--keyform', equals: true
18
+ long_option flag: '--pass', equals: true
28
19
 
29
- # PluginHeartbleed:
20
+ # Input and output options:
21
+ long_option flag: '--xml_out', equals: true
22
+ long_option flag: '--json_out', equals: true
23
+ long_option flag: '--targets_in', equals: true
24
+ long_option flag: '--quiet'
25
+
26
+ # Connectivity options:
27
+ long_option flag: '--timeout', equals: true
28
+ long_option flag: '--nb_retries', equals: true
29
+ long_option flag: '--https_tunnel', equals: true
30
+ long_option flag: '--starttls', equals: true
31
+ long_option flag: '--xmpp_to', equals: true
32
+ long_option flag: '--sni', equals: true
33
+
34
+ # HeartbleedPlugin:
30
35
  long_option flag: '--heartbleed'
31
36
 
32
- # PluginOpenSSLCipherSuites:
33
- # Scans the server(s) for supported OpenSSL cipher suites.
34
- long_option flag: '--sslv2'
35
- long_option flag: '--sslv3'
36
- long_option flag: '--tlsv1'
37
- long_option flag: '--tlsv1_1'
38
- long_option flag: '--tlsv1_2'
39
- long_option flag: '--http_get'
40
- long_option flag: '--hide_rejected_ciphers'
37
+ # OpenSslCcsInjectionPlugin:
38
+ long_option flag: '--openssl_ccs'
39
+
40
+ # FallbackScsvPlugin:
41
+ long_option flag: '--fallback'
41
42
 
42
- # PluginSessionRenegotiation:
43
+ # SessionRenegotiationPlugin:
43
44
  long_option flag: '--reneg'
44
45
 
45
- # PluginCertInfo:
46
+ # CertificateInfoPlugin:
46
47
  long_option flag: '--certinfo'
48
+ long_option flag: '--ca_file', equals: true
47
49
 
48
- # PluginHSTS:
49
- long_option flag: '--hsts'
50
+ # HttpHeadersPlugin:
51
+ long_option flag: '--http_headers'
50
52
 
51
- # PluginSessionResumption:
52
- # Analyzes the target server's SSL session resumption capabilities.
53
+ # SessionResumptionPlugin:
53
54
  long_option flag: '--resum'
54
55
  long_option flag: '--resum_rate'
55
56
 
56
- # PluginChromeSha1Deprecation:
57
- long_option flag: '--chrome_sha1'
58
-
59
- # PluginCompression:
57
+ # CompressionPlugin:
60
58
  long_option flag: '--compression'
61
59
 
60
+ # OpenSslCipherSuitesPlugin:
61
+ long_option flag: '--sslv2'
62
+ long_option flag: '--sslv3'
63
+ long_option flag: '--tlsv1'
64
+ long_option flag: '--tlsv1_1'
65
+ long_option flag: '--tlsv1_2'
66
+ long_option flag: '--http_get'
67
+ long_option flag: '--hide_rejected_ciphers'
68
+
62
69
  non_option name: :targets, tailing: true
63
70
 
64
71
  end