ruby-sslyze 0.2.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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