manticore 0.4.1-java → 0.4.2-java

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c68549109cd024c3e482eaed8cd316d9c316570d
4
- data.tar.gz: 6844c804051ce09e9f31ccf3ffd4d14d5d294fe9
3
+ metadata.gz: e81862fe8dbfe629fdc9dbe09504e2214b3de702
4
+ data.tar.gz: 5b840aa1a038b4eab593e248b3a679ec6d16fc67
5
5
  SHA512:
6
- metadata.gz: 5f98cbb04885e180f8b692338648460a6b51220168e648629f5dcea0281871e94f16ca8cfd0470bcd33cceb2fed2914fe50b25e00f5226fc59c9e3786005feb9
7
- data.tar.gz: d0a49ec53bb0286a2b6eed9cff0d819f80749317d280150040bf43d54126a9ec6e0a5bf2262c0d13b6c2f297fa8b3b8004e8f02b6e3ae0a2e9c179060a9753b6
6
+ metadata.gz: 9e5e970a68358d71776af2f4fd0b7e13bf3a13dac3d2beb2c860882301a4fe4cfbb1dae42fbff1ca4bc6ff8bff042237370e243fe804c0b1547f6f370c1d3f30
7
+ data.tar.gz: 5f3122739a100067e60c2817476ec75af8af109e1ef4ece4b75fed4e695d51d39c018a1fedc3b71a663bcf21eedc36a1d50c614a4d9dbb749c33fcbbd6c54784
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ spec/ssl
data/.travis.yml CHANGED
@@ -4,4 +4,10 @@ rvm:
4
4
  jdk:
5
5
  - oraclejdk8
6
6
  - oraclejdk7
7
- - openjdk7
7
+ - openjdk7
8
+ matrix:
9
+ include:
10
+ - rvm: jruby-head
11
+ jdk: oraclejdk8
12
+ allow_failures:
13
+ - rvm: jruby-head
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
1
  ## v0.4
2
2
 
3
- ### v0.4.1 (pending)
3
+ ### v0.4.3 (pending)
4
+
5
+ ### v0.4.2
6
+
7
+ * Fixed truststore documentation to be more clear (thanks @andrewvc)
8
+ * Always re-raise any errors thrown during request execution, not just a subset of expected exceptions (thanks @andrewvc)
9
+ * Add Connection: Keep-Alive to requests which indicate keepalive to ensure that HTTP/1.0 transactions honor keepalives. HTTP/1.1 requests should be unaffected.
10
+
11
+ ### v0.4.1
4
12
 
5
13
  * Add support for ssl[:ca_file], ssl[:client_cert], and ssl[:client_key], to emulate OpenSSL features in other Ruby HTTP clients
6
14
  * Integrate Faraday adapter for Manticore
data/Gemfile CHANGED
@@ -8,4 +8,5 @@ gem "rspec", "~> 2.0"
8
8
  gem "rspec-its"
9
9
  gem "httpclient", "~> 2.3"
10
10
  gem "rack", "~> 1.5"
11
- gem "rake-compiler"
11
+ gem "rake-compiler"
12
+ gem "gserver"
data/README.md CHANGED
@@ -120,7 +120,10 @@ To set this up, you might create 2 pools, each configured for the task:
120
120
 
121
121
  ```ruby
122
122
  general_http_client = Manticore::Client.new connect_timeout: 10, socket_timeout: 10, request_timeout: 10, follow_redirects: true, max_per_route: 2
123
- proxied_backend_client = Manticore::Client.new proxy: "https://backend.internal:4242", truststore: "./truststore.jks", truststore_password: "s3cr3t"
123
+ # With an OpenSSL CA store
124
+ proxied_backend_client = Manticore::Client.new proxy: "https://backend.internal:4242", ssl: {ca_file: "my_certs.pem"}
125
+ # Or with a .jks truststore
126
+ # proxied_backend_client = Manticore::Client.new proxy: "https://backend.internal:4242", ssl: {truststore: "./truststore.jks", truststore_password: "s3cr3t"}
124
127
  ```
125
128
 
126
129
  This would create 2 separate request pools; the first would be configured with generous timeouts and redirect following, and would use the system
@@ -273,6 +276,15 @@ future = client.background.get("http://google.com")
273
276
  response = future.get
274
277
  ```
275
278
 
279
+ ### Faraday Adapter
280
+
281
+ Manticore includes a Faraday adapter. To use it:
282
+
283
+ require 'faraday/adapter/manticore'
284
+ Faraday.new(...) do |faraday|
285
+ faraday.adapter :manticore
286
+ end
287
+
276
288
  ## Contributing
277
289
 
278
290
  1. Fork it
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
5
5
  spec.pattern = 'spec/**/*_spec.rb'
6
6
  spec.rspec_opts = ['--tty --color --format documentation']
7
7
  end
8
- task :default => :spec
8
+ task :default => [:generate_certs, :spec]
9
9
 
10
10
  require 'rake/javaextensiontask'
11
11
 
@@ -19,4 +19,33 @@ Rake::JavaExtensionTask.new do |ext|
19
19
  ext.name = "manticore-ext"
20
20
  ext.lib_dir = "lib/jar"
21
21
  ext.classpath = jars.map {|x| File.expand_path x}.join ':'
22
+ end
23
+
24
+ task :generate_certs do
25
+ root = File.expand_path("../spec/ssl", __FILE__)
26
+ openssl = `which openssl`.strip
27
+ keytool = `which keytool`.strip
28
+
29
+ Dir.glob("#{root}/*").each {|f| File.unlink f }
30
+
31
+ # Create the CA
32
+ cmds = [
33
+ "#{openssl} genrsa 4096 | #{openssl} pkcs8 -topk8 -nocrypt -out #{root}/root-ca.key",
34
+ "#{openssl} req -sha256 -x509 -newkey rsa:4096 -nodes -key #{root}/root-ca.key -sha256 -days 365 -out #{root}/root-ca.crt -subj \"/C=US/ST=The Internet/L=The Internet/O=Manticore CA/OU=Manticore/CN=localhost\"",
35
+
36
+ # Create the client CSR, key, and signed cert
37
+ "#{openssl} genrsa 4096 | #{openssl} pkcs8 -topk8 -nocrypt -out #{root}/client.key",
38
+ "#{openssl} req -sha256 -key #{root}/client.key -newkey rsa:4096 -out #{root}/client.csr -subj \"/C=US/ST=The Internet/L=The Internet/O=Manticore Client/OU=Manticore/CN=localhost\"",
39
+ "#{openssl} x509 -req -in #{root}/client.csr -CA #{root}/root-ca.crt -CAkey #{root}/root-ca.key -CAcreateserial -out #{root}/client.crt -sha256 -days 1",
40
+
41
+ # Create the server cert
42
+ "#{openssl} genrsa 4096 | #{openssl} pkcs8 -topk8 -nocrypt -out #{root}/host.key",
43
+ "#{openssl} req -sha256 -key #{root}/host.key -newkey rsa:4096 -out #{root}/host.csr -subj \"/C=US/ST=The Internet/L=The Internet/O=Manticore Host/OU=Manticore/CN=localhost\"",
44
+ "#{openssl} x509 -req -in #{root}/host.csr -CA #{root}/root-ca.crt -CAkey #{root}/root-ca.key -CAcreateserial -out #{root}/host.crt -sha256 -days 1",
45
+
46
+ "#{keytool} -import -file #{root}/root-ca.crt -alias rootCA -keystore #{root}/truststore.jks -noprompt -storepass test123",
47
+ "#{openssl} pkcs12 -export -clcerts -out #{root}/client.p12 -inkey #{root}/client.key -in #{root}/client.crt -certfile #{root}/root-ca.crt -password pass:test123",
48
+ ]
49
+
50
+ cmds.each.with_index {|cmd, index| puts "#{index}. #{cmd}"; system cmd }
22
51
  end
data/lib/manticore.rb CHANGED
@@ -34,9 +34,21 @@ module Manticore
34
34
  # DNS resolution failure
35
35
  class ResolutionFailure < ManticoreException; end
36
36
 
37
+ # Is something flat out malformed (bad port number?)
38
+ class InvalidArgumentException < ManticoreException; end
39
+
37
40
  # Socket breaks, etc
38
41
  class SocketException < ManticoreException; end
39
42
 
43
+ # General Timeout exception thrown for various Manticore timeouts
44
+ class Timeout < ManticoreException; end
45
+ class SocketTimeout < Timeout; end
46
+ class ConnectTimeout < Timeout; end
47
+
48
+ # Did we miss an exception? We may still want to catch it
49
+ class UnknownException < ManticoreException; end
50
+
51
+ require_relative "./manticore/java_extensions"
40
52
  require_relative './manticore/client/proxies'
41
53
  require_relative './manticore/client'
42
54
  require_relative './manticore/response'
@@ -2,9 +2,6 @@ require 'thread'
2
2
  require 'base64'
3
3
 
4
4
  module Manticore
5
- # General Timeout exception thrown for various Manticore timeouts
6
- class Timeout < ManticoreException; end
7
-
8
5
  # @!macro [new] http_method_shared
9
6
  # @param url [String] URL to request
10
7
  # @param options [Hash]
@@ -178,8 +175,8 @@ module Manticore
178
175
  # We can disable this for connection reuse.
179
176
  builder.disable_connection_state unless options.fetch(:ssl, {}).fetch(:track_state, false)
180
177
 
181
- keepalive = options.fetch(:keepalive, true)
182
- if keepalive == false
178
+ @keepalive = options.fetch(:keepalive, true)
179
+ if @keepalive == false
183
180
  builder.set_connection_reuse_strategy {|response, context| false }
184
181
  else
185
182
  builder.set_connection_reuse_strategy DefaultConnectionReuseStrategy.new
@@ -463,9 +460,11 @@ module Manticore
463
460
  req.set_config config.build
464
461
  end
465
462
 
466
- if options[:headers]
467
- options[:headers].each {|k, v| req.set_header k, v }
468
- end
463
+
464
+ options[:headers].each {|k, v| req[k] = v } if options.key?(:headers)
465
+
466
+ # Support keepalive on HTTP/1.0 connections
467
+ req["Connection"] = "Keep-Alive" if @keepalive
469
468
 
470
469
  context = HttpClientContext.new
471
470
  proxy_user = req_options[:proxy].is_a?(Hash) && (req_options[:proxy][:user] || req_options[:proxy][:username])
@@ -587,9 +586,10 @@ module Manticore
587
586
  KEY_EXTRACTION_REGEXP = /(?:^-----BEGIN(.* )PRIVATE KEY-----\n)(.*?)(?:-----END\1PRIVATE KEY.*$)/m
588
587
  def setup_key_store(ssl_options, context)
589
588
  key_store = get_store(:keystore, ssl_options) if ssl_options.key?(:keystore)
589
+ keystore_password = ssl_options.fetch(:keystore_password, "").to_java.toCharArray
590
590
 
591
591
  # Support OpenSSL-style bare X.509 certs with an RSA key
592
- # This is really dumb - we have to b64-decode the key ourselves.
592
+ # This is really dumb - we have to b64-decode the key ourselves, and we can only support PKCS8
593
593
  if ssl_options[:client_cert] && ssl_options[:client_key]
594
594
  key_store ||= blank_keystore
595
595
  certs, key = nil, nil
@@ -597,7 +597,6 @@ module Manticore
597
597
  certs = CertificateFactory.get_instance("X509").generate_certificates(fp.to_inputstream).to_array([].to_java(Certificate))
598
598
  end
599
599
 
600
- keystore_password = ssl_options.fetch(:keystore_password, "").to_java.toCharArray
601
600
  # Add each of the keys in the given keyfile into the keystore.
602
601
  open(ssl_options[:client_key]) do |fp|
603
602
  key_parts = fp.read.scan(KEY_EXTRACTION_REGEXP)
@@ -0,0 +1,20 @@
1
+ java_import "org.apache.http.client.methods.HttpRequestBase"
2
+
3
+ class Java::OrgApacheHttpClientMethods::HttpRequestBase
4
+
5
+ # Provides an easy way to get the request headers from any request
6
+ def headers
7
+ Hash[*get_all_headers.flat_map {|h| [h.name, h.value] }]
8
+ end
9
+
10
+ # Get a single request header
11
+ def [](key)
12
+ h = get_last_header(key)
13
+ h && h.value || nil
14
+ end
15
+
16
+ # Set a single request header
17
+ def []=(key, val)
18
+ set_header key, val
19
+ end
20
+ end
@@ -45,22 +45,35 @@ module Manticore
45
45
  @called = true
46
46
  begin
47
47
  @client.execute @request, self, @context
48
- execute_complete
49
- return self
50
- rescue Java::JavaNet::SocketTimeoutException, Java::OrgApacheHttpConn::ConnectTimeoutException => e
51
- ex = Manticore::Timeout.new(e.cause || e.message)
48
+ rescue Java::JavaNet::SocketTimeoutException => e
49
+ ex = Manticore::SocketTimeout
50
+ rescue Java::OrgApacheHttpConn::ConnectTimeoutException => e
51
+ ex = Manticore::ConnectTimeout
52
52
  rescue Java::JavaNet::SocketException => e
53
- ex = Manticore::SocketException.new(e.cause || e.message)
53
+ ex = Manticore::SocketException
54
54
  rescue Java::OrgApacheHttpClient::ClientProtocolException, Java::JavaxNetSsl::SSLHandshakeException, Java::OrgApacheHttpConn::HttpHostConnectException,
55
55
  Java::OrgApacheHttp::NoHttpResponseException, Java::OrgApacheHttp::ConnectionClosedException => e
56
- ex = Manticore::ClientProtocolException.new(e.cause || e.message)
56
+ ex = Manticore::ClientProtocolException
57
57
  rescue Java::JavaNet::UnknownHostException => e
58
- ex = Manticore::ResolutionFailure.new(e.cause || e.message)
58
+ ex = Manticore::ResolutionFailure
59
+ rescue Java::JavaLang::IllegalArgumentException => e
60
+ ex = Manticore::InvalidArgumentException
61
+ rescue Java::JavaLang::Exception => e # Handle anything we may have missed from java
62
+ ex = Manticore::UnknownException
63
+ rescue StandardError => e
64
+ @exception = e
65
+ end
66
+
67
+ # TODO: If calling async, execute_complete may fail and then silently swallow exceptions. How do we fix that?
68
+ if ex || @exception
69
+ @exception ||= ex.new(e.cause || e.message)
70
+ @handlers[:failure].call @exception
71
+ execute_complete
72
+ nil
73
+ else
74
+ execute_complete
75
+ self
59
76
  end
60
- @exception = ex
61
- @handlers[:failure].call ex
62
- execute_complete
63
- nil
64
77
  end
65
78
 
66
79
  def fire_and_forget
@@ -121,6 +134,13 @@ module Manticore
121
134
  @headers
122
135
  end
123
136
 
137
+ # Return the value of a single response header. Will call the request if it has not been called yet.
138
+ #
139
+ # @return [String] Value of the header, or nil if not present
140
+ def [](key)
141
+ headers[key.downcase]
142
+ end
143
+
124
144
  # Return the response code from this request as an integer. Will call the request if it has not been called yet.
125
145
  #
126
146
  # @return [Integer] The response code
@@ -1,3 +1,3 @@
1
1
  module Manticore
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -89,7 +89,7 @@ describe Manticore::Client do
89
89
  end
90
90
 
91
91
  context 'when on and custom trust store is given' do
92
- let(:client) { Manticore::Client.new :ssl => {verify: :strict, truststore: File.expand_path("../../ssl/test_truststore", __FILE__), truststore_password: "test123"} }
92
+ let(:client) { Manticore::Client.new :ssl => {verify: :strict, truststore: File.expand_path("../../ssl/truststore.jks", __FILE__), truststore_password: "test123"} }
93
93
 
94
94
  it "should verify the request and succeed" do
95
95
  expect { client.get("https://localhost:55444/").body }.to_not raise_exception
@@ -97,7 +97,7 @@ describe Manticore::Client do
97
97
  end
98
98
 
99
99
  context "when the client specifies a protocol list" do
100
- let(:client) { Manticore::Client.new :ssl => {verify: :strict, truststore: File.expand_path("../../ssl/test_truststore", __FILE__), truststore_password: "test123", protocols: ["TLSv1", "TLSv1.1", "TLSv1.2"]} }
100
+ let(:client) { Manticore::Client.new :ssl => {verify: :strict, truststore: File.expand_path("../../ssl/truststore.jks", __FILE__), truststore_password: "test123", protocols: ["TLSv1", "TLSv1.1", "TLSv1.2"]} }
101
101
 
102
102
  it "should verify the request and succeed" do
103
103
  expect { client.get("https://localhost:55444/").body }.to_not raise_exception
@@ -105,7 +105,7 @@ describe Manticore::Client do
105
105
  end
106
106
 
107
107
  context 'when on and custom trust store is given with the wrong password' do
108
- let(:client) { Manticore::Client.new :ssl => {verify: :strict, truststore: File.expand_path("../../ssl/test_truststore", __FILE__), truststore_password: "wrongpass"} }
108
+ let(:client) { Manticore::Client.new :ssl => {verify: :strict, truststore: File.expand_path("../../ssl/truststore.jks", __FILE__), truststore_password: "wrongpass"} }
109
109
 
110
110
  it "should fail to load the keystore" do
111
111
  expect { client.get("https://localhost:55444/").body }.to raise_exception(Java::JavaIo::IOException)
@@ -113,7 +113,7 @@ describe Manticore::Client do
113
113
  end
114
114
 
115
115
  context 'when ca_file is given' do
116
- let(:client) { Manticore::Client.new :ssl => {verify: :strict, ca_file: File.expand_path("../../ssl/ca_cert.crt", __FILE__) } }
116
+ let(:client) { Manticore::Client.new :ssl => {verify: :strict, ca_file: File.expand_path("../../ssl/root-ca.crt", __FILE__) } }
117
117
 
118
118
  it "should verify the request and succeed" do
119
119
  expect { client.get("https://localhost:55444/").body }.to_not raise_exception
@@ -124,7 +124,7 @@ describe Manticore::Client do
124
124
  let(:client) { Manticore::Client.new(
125
125
  :ssl => {
126
126
  verify: :strict,
127
- ca_file: File.expand_path("../../ssl/ca_cert.crt", __FILE__),
127
+ ca_file: File.expand_path("../../ssl/root-ca.crt", __FILE__),
128
128
  client_cert: File.expand_path("../../ssl/client.crt", __FILE__),
129
129
  client_key: File.expand_path("../../ssl/client.key", __FILE__)
130
130
  })
@@ -147,12 +147,13 @@ describe Manticore::Client do
147
147
  context "when client cert auth is provided" do
148
148
  let(:client) {
149
149
  options = {
150
- truststore: File.expand_path("../../ssl/test_truststore", __FILE__),
150
+ truststore: File.expand_path("../../ssl/truststore.jks", __FILE__),
151
151
  truststore_password: "test123",
152
152
  keystore: File.expand_path("../../ssl/client.p12", __FILE__),
153
- keystore_password: ""
153
+ keystore_password: "test123",
154
+ verify: :strict
154
155
  }
155
- Manticore::Client.new :ssl => options.merge(verify: :strict)
156
+ Manticore::Client.new :ssl => options
156
157
  }
157
158
 
158
159
  it "should successfully auth requests" do
@@ -163,10 +164,11 @@ describe Manticore::Client do
163
164
  context "when client cert auth is not provided" do
164
165
  let(:client) {
165
166
  options = {
166
- truststore: File.expand_path("../../ssl/test_truststore", __FILE__),
167
- truststore_password: "test123"
167
+ truststore: File.expand_path("../../ssl/truststore.jks", __FILE__),
168
+ truststore_password: "test123",
169
+ verify: :strict
168
170
  }
169
- Manticore::Client.new :ssl => options.merge(verify: :strict)
171
+ Manticore::Client.new :ssl => options
170
172
  }
171
173
 
172
174
  it "should fail the request" do
@@ -227,6 +229,29 @@ describe Manticore::Client do
227
229
  req = client.async.get(local_server).on_success {|r| }
228
230
  expect { client.execute! }.to change { req.called? }.from(false).to(true)
229
231
  end
232
+
233
+
234
+ describe "with a bad port number" do
235
+ it "should return a Manticore::InvalidArgumentException" do
236
+ failure = nil
237
+ client.async.get(local_server("/", 65536)).
238
+ on_failure {|f| failure = f }
239
+ client.execute!
240
+ expect(failure).to be_a(Manticore::InvalidArgumentException)
241
+ end
242
+ end
243
+
244
+ describe "mysterious failures" do
245
+ it "should still return an error to on failure" do
246
+ failure = nil
247
+ # I'm not crazy about reaching into the client via instance_variable_get here, but it works.
248
+ expect(client.instance_variable_get("@client")).to receive(:execute).and_raise(StandardError.new("Uh oh"))
249
+ client.async.get(local_server).
250
+ on_failure {|f| failure = f }
251
+ client.execute!
252
+ expect(failure).to be_a(StandardError)
253
+ end
254
+ end
230
255
  end
231
256
 
232
257
  context "when client-wide cookie management is disabled" do
@@ -532,7 +557,12 @@ describe Manticore::Client do
532
557
  describe "keepalive" do
533
558
  let(:url) { "http://www.facebook.com/" }
534
559
 
560
+
535
561
  context "with keepalive" do
562
+ it "should add the Connection: Keep-Alive header for http/1.0" do
563
+ expect( client.get(url).request["Connection"] ).to eq "Keep-Alive"
564
+ end
565
+
536
566
  let(:client) { Manticore::Client.new keepalive: true, pool_max: 1 }
537
567
 
538
568
  it "should keep the connection open after a request" do
@@ -547,6 +577,10 @@ describe Manticore::Client do
547
577
  context "without keepalive" do
548
578
  let(:client) { Manticore::Client.new keepalive: false, pool_max: 1 }
549
579
 
580
+ it "should not add the Connection: Keep-Alive header for http/1.0" do
581
+ expect( client.get(url).request["Connection"] ).to be_nil
582
+ end
583
+
550
584
  it "should close the connection after a request" do
551
585
  skip
552
586
  response = client.get(url).call
@@ -562,7 +596,6 @@ describe Manticore::Client do
562
596
  before do
563
597
  @socket = TCPServer.new 4567
564
598
  @server = Thread.new do
565
- puts "Accepting"
566
599
  loop do
567
600
  client = @socket.accept
568
601
  client.puts([
@@ -630,11 +663,11 @@ describe Manticore::Client do
630
663
  let(:client) { Manticore::Client.new request_timeout: 1, connect_timeout: 1, socket_timeout: 1 }
631
664
 
632
665
  it "should time out" do
633
- expect { client.get(local_server "/?sleep=2").body }.to raise_exception(Manticore::Timeout)
666
+ expect { client.get(local_server "/?sleep=2").body }.to raise_exception(Manticore::SocketTimeout)
634
667
  end
635
668
 
636
669
  it "should time out when custom request options are passed" do
637
- expect { client.get(local_server("/?sleep=2"), max_redirects: 5).body }.to raise_exception(Manticore::Timeout)
670
+ expect { client.get(local_server("/?sleep=2"), max_redirects: 5).body }.to raise_exception(Manticore::SocketTimeout)
638
671
  end
639
672
  end
640
673
 
@@ -8,6 +8,10 @@ describe Manticore::Response do
8
8
  its(:body) { should be_a String }
9
9
  its(:length) { should be_a Fixnum }
10
10
 
11
+ it "should provide response header lookup via #[]" do
12
+ subject["Content-Type"].should eq "text/plain"
13
+ end
14
+
11
15
  it "should read the body" do
12
16
  subject.body.should match "Manticore"
13
17
  end
data/spec/spec_helper.rb CHANGED
@@ -93,8 +93,9 @@ def start_ssl_server(port, options = {})
93
93
  cert_name = [
94
94
  %w[CN localhost],
95
95
  ]
96
- cert = OpenSSL::X509::Certificate.new File.read(File.expand_path('../ssl/localhost.pem', __FILE__))
97
- pkey = OpenSSL::PKey::RSA.new File.read(File.expand_path('../ssl/localhost.key', __FILE__))
96
+ cert = OpenSSL::X509::Certificate.new File.read(File.expand_path('../ssl/host.crt', __FILE__))
97
+ cert.version = 0 # HACK: Work around jruby-openssl in jruby-head not setting cert.version
98
+ pkey = OpenSSL::PKey::RSA.new File.read(File.expand_path('../ssl/host.key', __FILE__))
98
99
  @servers[port] = Thread.new {
99
100
  server = WEBrick::HTTPServer.new(
100
101
  {
@@ -122,8 +123,8 @@ RSpec.configure do |c|
122
123
  start_server 55441
123
124
  start_server 55442
124
125
  start_ssl_server 55444
125
- start_ssl_server 55445, :SSLVerifyClient => OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT, :SSLCACertificateFile => File.expand_path("../ssl/ca_cert.pem", __FILE__)
126
+ start_ssl_server 55445, :SSLVerifyClient => OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT, :SSLCACertificateFile => File.expand_path("../ssl/root-ca.crt", __FILE__)
126
127
  }
127
128
 
128
129
  c.after(:suite) { stop_servers }
129
- end
130
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manticore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: java
6
6
  authors:
7
7
  - Chris Heald
@@ -30,7 +30,7 @@ cert_chain:
30
30
  cnyabLOcGIKZNxvnSfwOuCBnjgoSOyJi/n48n1s+OPB/OmPJoWmhKu2DO4sUb4+K
31
31
  /3Mhp5UWSl9SmDR1
32
32
  -----END CERTIFICATE-----
33
- date: 2015-04-04 00:00:00.000000000 Z
33
+ date: 2015-07-02 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  requirement: !ruby/object:Gem::Requirement
@@ -104,6 +104,7 @@ files:
104
104
  - lib/manticore/client/proxies.rb
105
105
  - lib/manticore/cookie.rb
106
106
  - lib/manticore/facade.rb
107
+ - lib/manticore/java_extensions.rb
107
108
  - lib/manticore/response.rb
108
109
  - lib/manticore/stubbed_response.rb
109
110
  - lib/manticore/version.rb
@@ -115,16 +116,7 @@ files:
115
116
  - spec/manticore/response_spec.rb
116
117
  - spec/manticore/stubbed_response_spec.rb
117
118
  - spec/spec_helper.rb
118
- - spec/ssl/ca_cert.crt
119
- - spec/ssl/ca_cert.pem
120
- - spec/ssl/ca_key.pem
121
- - spec/ssl/client.crt
122
- - spec/ssl/client.key
123
- - spec/ssl/client.p12
124
- - spec/ssl/localhost.key
125
- - spec/ssl/localhost.pem
126
- - spec/ssl/readme.md
127
- - spec/ssl/test_truststore
119
+ - spec/ssl/.keepme
128
120
  homepage: https://github.com/cheald/manticore
129
121
  licenses:
130
122
  - MIT
@@ -145,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
137
  version: '0'
146
138
  requirements: []
147
139
  rubyforge_project:
148
- rubygems_version: 2.4.5
140
+ rubygems_version: 2.4.8
149
141
  signing_key:
150
142
  specification_version: 4
151
143
  summary: Manticore is an HTTP client built on the Apache HttpCore components
@@ -157,13 +149,4 @@ test_files:
157
149
  - spec/manticore/response_spec.rb
158
150
  - spec/manticore/stubbed_response_spec.rb
159
151
  - spec/spec_helper.rb
160
- - spec/ssl/ca_cert.crt
161
- - spec/ssl/ca_cert.pem
162
- - spec/ssl/ca_key.pem
163
- - spec/ssl/client.crt
164
- - spec/ssl/client.key
165
- - spec/ssl/client.p12
166
- - spec/ssl/localhost.key
167
- - spec/ssl/localhost.pem
168
- - spec/ssl/readme.md
169
- - spec/ssl/test_truststore
152
+ - spec/ssl/.keepme
metadata.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- :ot�� b��.�Վ_��!��>�d����)}K%ޕ���Ӏ@��7 W$Z}h��9���:Uw���aLd`��|;�O,:�ɔ�: +*g7)^sߒ�)mX�2����iU��, �߱����e^z��3`;�S%������?�u��+<�s���=�' ��k�M�d�?~��*�Ã�1r�) ܠ��`t�����&�}:”J���-�VLYF�sO��q�dbc���{`?�1�n
2
- �����
1
+ B1PbЇX"�bu�9� ds��76�\����L�Wk(x?�>ok B�.����)�E�8a������3[z��y��3]9��Op46�*$���z����k��Q��P`ƚq|iV��y�+,~�SJ��RiF
2
+ \μ��CF=�Yj��\Q��9)�����r/�_��CC�`�j}u[t_L���Md3���t�&��D �|�Q��㮸j�5
3
+ �Y-�m�o/�5<�*��aL� "��5
data/spec/ssl/ca_cert.crt DELETED
Binary file
data/spec/ssl/ca_cert.pem DELETED
@@ -1,31 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIFPjCCAyYCCQCQsu6LeOWnuzANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJV
3
- UzELMAkGA1UECAwCTUQxEjAQBgNVBAcMCUJhbHRpbW9yZTEQMA4GA1UEAwwHVGVz
4
- dCBDQTEfMB0GCSqGSIb3DQEJARYQdGVzdEBleGFtcGxlLmNvbTAeFw0xNTAxMDcx
5
- NzM3MDdaFw0yODA5MTUxNzM3MDdaMGExCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJN
6
- RDESMBAGA1UEBwwJQmFsdGltb3JlMRAwDgYDVQQDDAdUZXN0IENBMR8wHQYJKoZI
7
- hvcNAQkBFhB0ZXN0QGV4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
8
- MIICCgKCAgEAuTlMyzLeLF6ts6lqVsSFbNC2R0KXvRzXEztbzsV/yVYTkaX2Pnul
9
- EevfU/qEhza94032tCVqvVXu1X11PJEQRWmZ7s5ovEW119h5N9cMlHBaAOJbls3S
10
- igDC2SsJGCnfrYZpuBdbMsTtqE50OEXHCK1jHkmM8821XvEwhsPSRgSplcsgVS2Q
11
- rxzIePznpdJnSFI6T7S/Woekt0Mn1udwOOhKo6Y3NaxX7zM3LYF3RBFwvY2wpzV/
12
- Mu8/Be19a8QLN3ZStyAwAyS1nbH1/a70Ie8yFiEZs76QVJYqkfedQkt24wz5fGBo
13
- VCY/wlkGy36U0Bijuatoh4dr3ivxNERz6yq7O97vlrsq4zFBG8VRQbATh/APTFBQ
14
- 7tWJDlQImqEfVnWCv8bEy4kkTBz260iT0/WmEC5zYT7NW3nKfGGdo8pERqWn1x9g
15
- TLpsPuIo8b3vUUJjlqpSfSoiiabC6WP0bQ8h8swvAWEK2Q2e5KqbmSmlfVrCQUyn
16
- CxsS9WwX9Zm/AUS/hxbs6gCnmKcIVVcesWrnpXzkC2tevAYrIIm94Enwy/YyKBId
17
- N/pK3DcWIb3NG/6AfBywSnW9mpbyXvnScDMS5FXZhb6eVp/3zTKYox4OQenb6qX0
18
- JFRHuX2cVK84WJtJEKAFvO2nsY2kg2C3h3I3LCZTthdnZ06Nq1AV9wsCAwEAATAN
19
- BgkqhkiG9w0BAQUFAAOCAgEAVQw+V+dP73ZMUeSd2WqL7flPfUM7T0T52Amtw2zD
20
- 2nynQ3xwHwyHrKNm2S0CIdu3Eq4R0EFznk6DhjeLM0kAJX4RuWraT16TCcLq/YxC
21
- K4qXAX6eyq3oauv47PTUMbSeIwyqspY/LY/cGxzgeFMNWHc2llUPTyN3qszubMUn
22
- T/3Mbec1WCIgGh4TqFloCPqLy/EqkANXXW4V10olhjzGkwjZ5KoJVmXTQlTzz2PJ
23
- mVeIQXlceawj25inhjdvjFWMaO1csm5ZNqIBvLgN45gKxcnDjUbUyglRRa0Dxvut
24
- T94HbFONYHWMTDWO5ElGgjjjdwCAiyKuAk/Lv5ZJ8dw8ByPLzsjM76lbzlXGDGsx
25
- /ay4PuBCOMKOul4yyb8WMFcsIzk/f/mUhU68gTesMYX0mNYqjDvifA8Ws7So+yD+
26
- oMAwMabkn11p5UwPLpszr7cqfmYTsxcHQUKFYPM3jySxaqOU1mwL4d/FshrcR1s2
27
- doen2Dq2VzJFxJqsQVK7uvEz847Av3JRUDCbjx7rYc9DfuY6anZ1/tv7YqPGxiXd
28
- LznEPNy9/9p5gGtlj6bqo8l4Kf+puvpkX3qICelO3P9Unzky+tNrkY7i2rgK9Vyh
29
- X6EOcJ8K53Y9AHOvKElq/UszMOjkZbpGo/qhZkYPGqaD8yM35MNrQXBonk/zH6cA
30
- xA4=
31
- -----END CERTIFICATE-----
data/spec/ssl/ca_key.pem DELETED
@@ -1,52 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 9PHu8NbuMMEKwwlAmT5DjbUfeTNhYcdUsYWwJdS6m3VBZUML+B6gIXiTSvkLwYu9
33
- PSqe8veBqxX5X18R3eVKUYpLH1dgzmFi25VsgeefX6xeYJvmouOdst6HEdFt+Qyx
34
- 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
- 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
- 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
- lS/AheHLhFyEOMayTg4njl1L4L96zcPSDWV3AuDcZWt6ekiVweys6lxhCYNUa9CC
38
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- bUC9AoIBAFiXa1qyRWGVkaPIY1tWr0UQywSESZ0C1+4W0Lfe8Wn+Vlx3H+voywQt
47
- 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
- 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
- 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
- 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
51
- umjprdvaT6QOMOjb1GZqJhdCLskcB/w=
52
- -----END PRIVATE KEY-----
data/spec/ssl/client.crt DELETED
@@ -1,22 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDlTCCAX0CAQEwDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMCVVMxCzAJBgNV
3
- BAgMAk1EMRIwEAYDVQQHDAlCYWx0aW1vcmUxEDAOBgNVBAMMB1Rlc3QgQ0ExHzAd
4
- BgkqhkiG9w0BCQEWEHRlc3RAZXhhbXBsZS5jb20wIBcNMTQxMjEwMjIwMzMxWhgP
5
- MjExNDExMTYyMjAzMzFaMEIxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0
6
- IENpdHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQwgZ8wDQYJKoZIhvcN
7
- AQEBBQADgY0AMIGJAoGBANf8i2rFB1llfRuNuERJyvXCR9cHEvW7jAXXUbrWRAFJ
8
- yAE466ZYPWBZZ241iQOFsEAtjldly80USyD0Nfx18M6FR6dppH/cqEsLKT6Esa5X
9
- ASOMJhgftiU2CvjIkVSVlIdTACetnoLLGF926F7lyNgAS4b9PZdg4QFr2Ih04NSx
10
- AgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAKWAYd1Cgzu9lvhjweeO2HI9eLk7pr/c
11
- 1f6yOLxwfZyxCVYkQ906/YVcO+vvb+R1gbHEw3cHED9SgIZARvNNM9I2YFk/KFEg
12
- 3N8mo37KOHu4HGyhRcJqB90P7umwVyWJn2iXe8Wus/eWsszBgXyPM3Xa7Wwy7aBw
13
- AXAnrRhESethWI3vH3yAJeT1RG1rGjEqEuojfDxgzKvt08PgMwkN8VY0b7XdAdXj
14
- ycXCmhaTLveM9BQVYY/LrrMR4ynVM6Fv3GXR3Sz/Eup4sJTXo3DhZ4rSBAPkyHCD
15
- wxcmrjEL9eMG8kqXT4y/UQyXYhWKbFB3InnfZCh/QJ1+JqpIhi+tEMrVRvMrYp7l
16
- /6ZGml4wHlCL+ky/wG30sgTHpj+S8PG96LnJ+kXnkxycq6vCRJEfRmXhh70swIiv
17
- Pgh6RAZu6AdVX+gztnD0oSbez39hb4qcolLjlSO2msBTbQ2lp9zNrB4MqzuAgC1K
18
- CWs2oBm6NrrR4+Sx/JjLmQcoSeuFooUmloL1c5XRv1B7vpx9P2Do0aF6Xksvli0w
19
- 62n72nI7nF8VfyKjjEABk6dNBK0dYFrO+5pWJ4KEdOt2fVw5pduB4K2TN12z0LlY
20
- ItFnYxmFPzUGleMHZsHASsMPlNtroE4p6O+ofNfrwwBzSQ+G+KDoC94TzOF2pf69
21
- A3NjNKNgxgG5
22
- -----END CERTIFICATE-----
data/spec/ssl/client.key DELETED
@@ -1,16 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANf8i2rFB1llfRuN
3
- uERJyvXCR9cHEvW7jAXXUbrWRAFJyAE466ZYPWBZZ241iQOFsEAtjldly80USyD0
4
- Nfx18M6FR6dppH/cqEsLKT6Esa5XASOMJhgftiU2CvjIkVSVlIdTACetnoLLGF92
5
- 6F7lyNgAS4b9PZdg4QFr2Ih04NSxAgMBAAECgYEAg0qy/P40D3WP7VXiszAgPfAR
6
- d3aHYfTVkx9mQSrKP/Y3q/aL2Jw/AviV1PqaBRgZIYoPwrTQhCNX3/pTbtnKvMDr
7
- Py5l9AHGvzWx9ThYV/ErcVNEFUNegTeiIKPcX8jh72s62PVRU0ZYUNPUh2cShZjr
8
- qcLn+QKpxpnuuMPxgDkCQQD7NRFbkfq3Q7lwDN8/GMmBHxv/HOpLdLmWT7ua9OE9
9
- JnVjml89fT31rM9D/YVZaf3kIe6y1xehRhCUfrlhnufnAkEA3Bt0E5DT0/utRgXS
10
- 4xA5LHvnZ0R5mHGPd6m0/3c7uf3epeHUakE3HBvsp9Ys/87hByq/R7QCoTE2MVhg
11
- uSZrpwJAIgeoWE1IN3dXMZSs0XFcKr+6HS8fliUz1ubqNS2jLZN+J4YMDNpggF1u
12
- nnlDjT9Mg5ENMvDsZI6HRHZ+SnkqVQJAApzo0dqkSR3xvqUPDdcBdr+5zYYIk4C1
13
- nUwMdAPsV5bl774wkVpY1yKVuqBWRGsmTLl7L9S5O0SkSg2siEYmfQJBAOEwqhs7
14
- tkLpUpWv3+0V2Lv/0CuXrqgacXxebQ8MfcH9YpWV0M54kJ7u/4gNCXgj66pDAqfE
15
- bU+RhxY82ohb5uo=
16
- -----END PRIVATE KEY-----
data/spec/ssl/client.p12 DELETED
Binary file
@@ -1,28 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC4I1J9AVuytCuy
3
- BlmDQD/ZhJygHhLhGN2ZBPd2mBs0OfnNO2ert9zo5jUaRvHAKhTs6/gmmMd2U39R
4
- TnN4cqHtEVbyDp/97zY4v75rL9iILk8l18qJVSbdsbEdZ9fyuj9MnLNY+J100FVS
5
- jfNIR+mCunVPjI+Mb2tooSOZKovdcTZVZcLVwnnkXsPbDFOZbWp3V0v0vqyYxAQB
6
- sLEypEtt1fzKrL0gevTCsRFYxsUbjdaJmb4E63hKAr+PkrjXT6r6gR4oWjFejoIm
7
- OhEZxm1H6cLwBWK/PM55b7kdV9pNUetXTNz5uTjKx0512rsBC9GZK9rM/wATI1o+
8
- KsXSxuDnAgMBAAECggEAG2OFnXpaPVZ3OV+gaNlhpeUHtvlCLaEZNO18MXOmeDo3
9
- YcN4RB5xCWNUergatU6NFkBzBKqs4HjC80EMA9ppI2301MRAH/E4y3AZzq+rMXZR
10
- 53sVcR/tTARmJ82OXVg+mhKkypMQOJPUXRcoHJQ1s3AwisiJgYYBH+r39IxTiXhQ
11
- vMuiUFHmQSn7TAsDV9ULMvYmMh4FA+9RVW1DJ9zH5/IQKtRyLVupulGimF8n0kVR
12
- tNVqwTckZpJJlZFdLHUjaTiSm4s5vYwoxNzNXxZ0GnBXBxs5YAErEjas/OhmYguZ
13
- lFwpkVuV9/dwR4jfPRciGuRuJqO2I2Pp6K6/Z+QLoQKBgQDmYRNnOfESwaqVWh9G
14
- VmT70bhob5A2GwVS2fJ+UOBCfnwrn+ybR2AZjliKlM4a6k+pboPrwl4rncH2LlXO
15
- o/EX9VyTdDCMxiN+YMlvOuzpVF1LrM/BL6pw3uMjmWBEMmbprwiMFCKRC4BJZ3Vv
16
- X07A1zoKq8oNFW+m80Db1eMciwKBgQDMncDJLJFBqIcas5plUlwTQXmr8Xq/+Q/B
17
- UB4yU75eUbp1H0jFrJ8ier6A1IXX2bVnxUjilATM/trIH4GLMK66j5hp0ih0JfjE
18
- gYnI83GKOxL+KF0C2tLjjhuTAVtmWXla8s37dBtz3ZleyyKfaGzvgm3zjheD+s/R
19
- ordHaRpMlQKBgEOvq9q9TFX9bpf45Y1t3reZ03tjo9Qxtiu0eymfq3P944+Rqhup
20
- KdP4XY1B0RhZVVRrcvj2n2JjNFSXIoDW7APlA/ESxxzlLhJ4b1Zt0qNvNQYB3Pxe
21
- e84zvjp8WqtOv6vS0EkPtWQ2I9ftPLSfJO1FjvkJphCYBrjfaWPtgI+nAoGBAMOS
22
- RKIEJxJKslejMv+FKNx+yHy/4kN7GsP6f+I6iMo986nerP/DbpbWGx+oAgW94NW+
23
- i1uFftExBowhEQCpF1jZxyPd6yyY3p1z8u5PQUaOECk9CymfXdKCEXkA4wuAma2E
24
- Rb0BzPuB4wXnwr/6X6TNVaplNbTAFcKZc/SdULXBAoGBAM02iPIys9ghA1nfQHD+
25
- MD4lJNyPzOrnx1C8SXPP/hHUbFRmZF9hW3U9vuwo7jD2MzIrHAycAaIUjIDkTD+w
26
- rUYsH9nOAHCbk1lGqy24SF4Pcvpj28O4gfHBdBEq4c2b48moml3tJOPOTEude8fp
27
- PgYaeX3y+gzY7K7ZSM+gIuuo
28
- -----END PRIVATE KEY-----
@@ -1,100 +0,0 @@
1
- Certificate:
2
- Data:
3
- Version: 3 (0x2)
4
- Serial Number: 3 (0x3)
5
- Signature Algorithm: sha256WithRSAEncryption
6
- Issuer: C=US, ST=MD, L=Baltimore, CN=Test CA/emailAddress=test@example.com
7
- Validity
8
- Not Before: Nov 29 00:38:23 2014 GMT
9
- Not After : Aug 25 00:38:23 2017 GMT
10
- Subject: C=US, ST=Arizona, L=NA, O=Manticore, OU=Manticore, CN=localhost
11
- Subject Public Key Info:
12
- Public Key Algorithm: rsaEncryption
13
- Public-Key: (2048 bit)
14
- Modulus:
15
- 00:b8:23:52:7d:01:5b:b2:b4:2b:b2:06:59:83:40:
16
- 3f:d9:84:9c:a0:1e:12:e1:18:dd:99:04:f7:76:98:
17
- 1b:34:39:f9:cd:3b:67:ab:b7:dc:e8:e6:35:1a:46:
18
- f1:c0:2a:14:ec:eb:f8:26:98:c7:76:53:7f:51:4e:
19
- 73:78:72:a1:ed:11:56:f2:0e:9f:fd:ef:36:38:bf:
20
- be:6b:2f:d8:88:2e:4f:25:d7:ca:89:55:26:dd:b1:
21
- b1:1d:67:d7:f2:ba:3f:4c:9c:b3:58:f8:9d:74:d0:
22
- 55:52:8d:f3:48:47:e9:82:ba:75:4f:8c:8f:8c:6f:
23
- 6b:68:a1:23:99:2a:8b:dd:71:36:55:65:c2:d5:c2:
24
- 79:e4:5e:c3:db:0c:53:99:6d:6a:77:57:4b:f4:be:
25
- ac:98:c4:04:01:b0:b1:32:a4:4b:6d:d5:fc:ca:ac:
26
- bd:20:7a:f4:c2:b1:11:58:c6:c5:1b:8d:d6:89:99:
27
- be:04:eb:78:4a:02:bf:8f:92:b8:d7:4f:aa:fa:81:
28
- 1e:28:5a:31:5e:8e:82:26:3a:11:19:c6:6d:47:e9:
29
- c2:f0:05:62:bf:3c:ce:79:6f:b9:1d:57:da:4d:51:
30
- eb:57:4c:dc:f9:b9:38:ca:c7:4e:75:da:bb:01:0b:
31
- d1:99:2b:da:cc:ff:00:13:23:5a:3e:2a:c5:d2:c6:
32
- e0:e7
33
- Exponent: 65537 (0x10001)
34
- X509v3 extensions:
35
- X509v3 Subject Key Identifier:
36
- 00:AD:24:E9:F6:F5:82:D6:44:2E:DB:A3:16:75:E4:B9:56:5E:87:55
37
- X509v3 Authority Key Identifier:
38
- keyid:C8:B7:44:26:1E:FA:12:7F:5E:DE:C1:D0:A8:91:36:CE:43:A5:8A:41
39
-
40
- X509v3 Basic Constraints:
41
- CA:FALSE
42
- X509v3 Key Usage:
43
- Digital Signature, Non Repudiation, Key Encipherment
44
- Signature Algorithm: sha256WithRSAEncryption
45
- 99:1b:a2:a5:63:03:22:70:62:4a:ff:3d:c7:46:53:25:9d:4c:
46
- 9c:73:4f:b6:fa:cd:7a:57:cb:96:3b:8f:58:4e:26:b4:30:ea:
47
- 39:25:ad:8f:f9:ce:8c:87:ef:fc:5a:8e:94:3e:37:ac:35:e2:
48
- d1:4f:e2:1c:59:33:4c:19:08:33:53:6b:d3:da:d1:2b:7a:90:
49
- 2a:15:f6:49:4f:95:4a:34:46:a1:a6:43:15:2d:c5:bc:e8:1b:
50
- 9a:1c:bd:f3:01:b1:60:16:5d:7e:1b:52:9c:08:d6:b8:2e:68:
51
- 2c:68:11:65:52:8a:52:fa:86:ee:a7:9f:bc:a7:54:a0:4d:3e:
52
- 78:4a:f6:fb:a5:ed:83:51:68:93:e5:46:c4:c9:30:ff:76:ee:
53
- e3:e6:cd:c6:7f:1f:19:61:01:0d:5e:05:c3:38:fa:c2:dd:c3:
54
- ec:0a:18:5e:bf:66:6b:c1:09:9b:38:47:43:69:09:9f:91:ff:
55
- 4c:2c:71:d9:4a:63:0a:84:68:ef:ac:d3:29:f8:16:dc:d5:3f:
56
- 38:8b:14:a1:a6:00:c2:b4:5d:53:7f:14:ce:fc:74:f4:cc:c2:
57
- ee:9f:b6:9c:22:6c:af:1c:a5:ee:36:f7:ef:f2:02:80:18:69:
58
- eb:ec:bc:03:df:b6:e1:3f:6f:a2:26:57:a0:6b:23:2f:05:bd:
59
- 7a:36:db:41:7f:2e:30:b4:06:a6:47:9d:a7:8a:f3:3b:6e:b8:
60
- b1:86:14:a0:38:2c:64:14:cb:df:4e:b3:47:f4:a0:e1:50:02:
61
- cc:20:db:01:31:77:35:35:e9:ad:2b:f5:4f:f9:40:35:fb:1a:
62
- ad:33:fd:37:7d:e9:52:65:11:df:d6:6a:9e:dd:ed:54:c1:25:
63
- 71:33:08:5b:62:18:67:c8:4e:d6:82:64:f7:d7:3b:b8:9d:5d:
64
- 55:36:fc:6f:da:97:56:48:91:28:e8:fa:38:5f:a3:c6:60:b5:
65
- 35:f0:a9:bf:15:40:d0:fb:3a:42:df:e8:25:82:ff:19:93:a8:
66
- 57:dc:f2:2c:5f:de:1a:13:c6:c9:e3:5d:a8:f7:d9:6e:66:0d:
67
- 3e:fc:ea:59:25:89:2c:ff:91:0e:3e:08:83:25:2f:f2:de:3e:
68
- ec:be:27:64:3c:84:20:20:47:1b:2a:e6:1f:33:6c:15:af:86:
69
- 79:86:a5:0a:12:d3:89:0b:82:b4:98:cc:02:7b:ef:b6:4f:5a:
70
- ef:96:7a:d9:51:dc:b7:41:b4:a3:23:6a:ed:32:22:76:88:b6:
71
- ec:e5:be:cb:a6:98:b3:35:d5:74:7e:5f:1c:97:a3:ac:f6:75:
72
- e0:98:64:57:4c:22:ea:c4:93:37:cb:74:28:c6:a0:fe:eb:ec:
73
- 48:00:cc:06:97:de:82:7c
74
- -----BEGIN CERTIFICATE-----
75
- MIIEnjCCAoagAwIBAgIBAzANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJVUzEL
76
- MAkGA1UECAwCTUQxEjAQBgNVBAcMCUJhbHRpbW9yZTEQMA4GA1UEAwwHVGVzdCBD
77
- QTEfMB0GCSqGSIb3DQEJARYQdGVzdEBleGFtcGxlLmNvbTAeFw0xNDExMjkwMDM4
78
- MjNaFw0xNzA4MjUwMDM4MjNaMGgxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdBcml6
79
- b25hMQswCQYDVQQHDAJOQTESMBAGA1UECgwJTWFudGljb3JlMRIwEAYDVQQLDAlN
80
- YW50aWNvcmUxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQAD
81
- ggEPADCCAQoCggEBALgjUn0BW7K0K7IGWYNAP9mEnKAeEuEY3ZkE93aYGzQ5+c07
82
- Z6u33OjmNRpG8cAqFOzr+CaYx3ZTf1FOc3hyoe0RVvIOn/3vNji/vmsv2IguTyXX
83
- yolVJt2xsR1n1/K6P0ycs1j4nXTQVVKN80hH6YK6dU+Mj4xva2ihI5kqi91xNlVl
84
- wtXCeeRew9sMU5ltandXS/S+rJjEBAGwsTKkS23V/MqsvSB69MKxEVjGxRuN1omZ
85
- vgTreEoCv4+SuNdPqvqBHihaMV6OgiY6ERnGbUfpwvAFYr88znlvuR1X2k1R61dM
86
- 3Pm5OMrHTnXauwEL0Zkr2sz/ABMjWj4qxdLG4OcCAwEAAaNaMFgwHQYDVR0OBBYE
87
- FACtJOn29YLWRC7boxZ15LlWXodVMB8GA1UdIwQYMBaAFMi3RCYe+hJ/Xt7B0KiR
88
- Ns5DpYpBMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMA0GCSqGSIb3DQEBCwUAA4IC
89
- AQCZG6KlYwMicGJK/z3HRlMlnUycc0+2+s16V8uWO49YTia0MOo5Ja2P+c6Mh+/8
90
- Wo6UPjesNeLRT+IcWTNMGQgzU2vT2tErepAqFfZJT5VKNEahpkMVLcW86BuaHL3z
91
- AbFgFl1+G1KcCNa4LmgsaBFlUopS+obup5+8p1SgTT54Svb7pe2DUWiT5UbEyTD/
92
- du7j5s3Gfx8ZYQENXgXDOPrC3cPsChhev2ZrwQmbOEdDaQmfkf9MLHHZSmMKhGjv
93
- rNMp+Bbc1T84ixShpgDCtF1TfxTO/HT0zMLun7acImyvHKXuNvfv8gKAGGnr7LwD
94
- 37bhP2+iJlegayMvBb16NttBfy4wtAamR52nivM7brixhhSgOCxkFMvfTrNH9KDh
95
- UALMINsBMXc1NemtK/VP+UA1+xqtM/03felSZRHf1mqe3e1UwSVxMwhbYhhnyE7W
96
- gmT31zu4nV1VNvxv2pdWSJEo6Po4X6PGYLU18Km/FUDQ+zpC3+glgv8Zk6hX3PIs
97
- X94aE8bJ412o99luZg0+/OpZJYks/5EOPgiDJS/y3j7svidkPIQgIEcbKuYfM2wV
98
- r4Z5hqUKEtOJC4K0mMwCe++2T1rvlnrZUdy3QbSjI2rtMiJ2iLbs5b7LppizNdV0
99
- fl8cl6Os9nXgmGRXTCLqxJM3y3QoxqD+6+xIAMwGl96CfA==
100
- -----END CERTIFICATE-----
data/spec/ssl/readme.md DELETED
@@ -1,14 +0,0 @@
1
- test_truststore is a trust store which has trusted the cacert.pem certificate
2
-
3
- localhost.pem is a server certificate signed by our test CA
4
-
5
- We can test custom trust stores by:
6
-
7
- 1. Starting a server which uses localhost.pem/localhost.key to serve SSL
8
- 2. Trusting ca_cert.pem (via the test_truststore)
9
-
10
- And then verifying that SSL operations complete successfully.
11
-
12
- The test_truststore password is `test123`
13
-
14
- You should never use these certificates or keys for anything other than testing Manticore's SSL behavior.
Binary file