rs-httpclient 3.0.0.beta1

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 (78) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +85 -0
  3. data/bin/httpclient +77 -0
  4. data/bin/jsonclient +85 -0
  5. data/lib/hexdump.rb +50 -0
  6. data/lib/http-access2/cookie.rb +1 -0
  7. data/lib/http-access2/http.rb +1 -0
  8. data/lib/http-access2.rb +55 -0
  9. data/lib/httpclient/auth.rb +924 -0
  10. data/lib/httpclient/cacert.pem +3252 -0
  11. data/lib/httpclient/cacert1024.pem +3866 -0
  12. data/lib/httpclient/connection.rb +88 -0
  13. data/lib/httpclient/cookie.rb +220 -0
  14. data/lib/httpclient/http.rb +1082 -0
  15. data/lib/httpclient/include_client.rb +85 -0
  16. data/lib/httpclient/jruby_ssl_socket.rb +594 -0
  17. data/lib/httpclient/session.rb +960 -0
  18. data/lib/httpclient/ssl_config.rb +452 -0
  19. data/lib/httpclient/ssl_socket.rb +150 -0
  20. data/lib/httpclient/timeout.rb +140 -0
  21. data/lib/httpclient/util.rb +222 -0
  22. data/lib/httpclient/version.rb +3 -0
  23. data/lib/httpclient/webagent-cookie.rb +459 -0
  24. data/lib/httpclient.rb +1331 -0
  25. data/lib/jsonclient.rb +66 -0
  26. data/lib/oauthclient.rb +111 -0
  27. data/sample/async.rb +8 -0
  28. data/sample/auth.rb +11 -0
  29. data/sample/cookie.rb +18 -0
  30. data/sample/dav.rb +103 -0
  31. data/sample/generate_test_keys.rb +99 -0
  32. data/sample/howto.rb +49 -0
  33. data/sample/jsonclient.rb +67 -0
  34. data/sample/oauth_buzz.rb +57 -0
  35. data/sample/oauth_friendfeed.rb +59 -0
  36. data/sample/oauth_twitter.rb +61 -0
  37. data/sample/ssl/0cert.pem +22 -0
  38. data/sample/ssl/0key.pem +30 -0
  39. data/sample/ssl/1000cert.pem +19 -0
  40. data/sample/ssl/1000key.pem +18 -0
  41. data/sample/ssl/htdocs/index.html +10 -0
  42. data/sample/ssl/ssl_client.rb +22 -0
  43. data/sample/ssl/webrick_httpsd.rb +29 -0
  44. data/sample/stream.rb +21 -0
  45. data/sample/thread.rb +27 -0
  46. data/sample/wcat.rb +21 -0
  47. data/test/ca-chain.pem +40 -0
  48. data/test/ca.cert +20 -0
  49. data/test/ca.key +27 -0
  50. data/test/ca.srl +1 -0
  51. data/test/client-pass.key +30 -0
  52. data/test/client.cert +20 -0
  53. data/test/client.key +27 -0
  54. data/test/fixtures/verify.alt.cert +20 -0
  55. data/test/fixtures/verify.foo.cert +20 -0
  56. data/test/fixtures/verify.key +27 -0
  57. data/test/fixtures/verify.localhost.cert +20 -0
  58. data/test/helper.rb +129 -0
  59. data/test/htdigest +1 -0
  60. data/test/htpasswd +2 -0
  61. data/test/jruby_ssl_socket/test_pemutils.rb +32 -0
  62. data/test/runner.rb +2 -0
  63. data/test/server.cert +20 -0
  64. data/test/server.key +27 -0
  65. data/test/sslsvr.rb +65 -0
  66. data/test/subca.cert +20 -0
  67. data/test/subca.key +27 -0
  68. data/test/subca.srl +1 -0
  69. data/test/test_auth.rb +496 -0
  70. data/test/test_cookie.rb +309 -0
  71. data/test/test_hexdump.rb +13 -0
  72. data/test/test_http-access2.rb +516 -0
  73. data/test/test_httpclient.rb +2144 -0
  74. data/test/test_include_client.rb +52 -0
  75. data/test/test_jsonclient.rb +98 -0
  76. data/test/test_ssl.rb +522 -0
  77. data/test/test_webagent-cookie.rb +465 -0
  78. metadata +130 -0
data/test/helper.rb ADDED
@@ -0,0 +1,129 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'test/unit'
3
+
4
+ require 'httpclient'
5
+ require 'webrick'
6
+ require 'webrick/httpproxy.rb'
7
+ require 'logger'
8
+ require 'stringio'
9
+ require 'cgi'
10
+ require 'webrick/httputils'
11
+
12
+
13
+ module Helper
14
+ Port = 17171
15
+ ProxyPort = 17172
16
+
17
+ def serverport
18
+ @serverport
19
+ end
20
+
21
+ def proxyport
22
+ @proxyport
23
+ end
24
+
25
+ def serverurl
26
+ "http://localhost:#{serverport}/"
27
+ end
28
+
29
+ def proxyurl
30
+ "http://localhost:#{proxyport}/"
31
+ end
32
+
33
+ def setup
34
+ @logger = Logger.new(STDERR)
35
+ @logger.level = Logger::Severity::FATAL
36
+ @proxyio = StringIO.new
37
+ @proxylogger = Logger.new(@proxyio)
38
+ @proxylogger.level = Logger::Severity::DEBUG
39
+ @server = @proxyserver = @client = nil
40
+ @server_thread = @proxyserver_thread = nil
41
+ @serverport = Port
42
+ @proxyport = ProxyPort
43
+ end
44
+
45
+ def teardown
46
+ teardown_client if @client
47
+ teardown_proxyserver if @proxyserver
48
+ teardown_server if @server
49
+ end
50
+
51
+ def setup_client
52
+ @client = HTTPClient.new
53
+ # Set more reasonable timeouts to make debug easier
54
+ @client.connect_timeout = 3
55
+ @client.send_timeout = 3
56
+ @client.receive_timeout = 3
57
+ @client
58
+ end
59
+
60
+ def escape_noproxy
61
+ backup = HTTPClient::NO_PROXY_HOSTS.dup
62
+ HTTPClient::NO_PROXY_HOSTS.clear
63
+ yield
64
+ ensure
65
+ HTTPClient::NO_PROXY_HOSTS.replace(backup)
66
+ end
67
+
68
+ def setup_proxyserver
69
+ @proxyserver = WEBrick::HTTPProxyServer.new(
70
+ :BindAddress => "localhost",
71
+ :Logger => @proxylogger,
72
+ :Port => 0,
73
+ :AccessLog => []
74
+ )
75
+ @proxyport = @proxyserver.config[:Port]
76
+ @proxyserver_thread = start_server_thread(@proxyserver)
77
+ end
78
+
79
+ def teardown_client
80
+ @client.reset_all
81
+ end
82
+
83
+ def teardown_server
84
+ @server.shutdown
85
+ #@server_thread.kill
86
+ end
87
+
88
+ def teardown_proxyserver
89
+ @proxyserver.shutdown
90
+ #@proxyserver_thread.kill
91
+ end
92
+
93
+ def start_server_thread(server)
94
+ t = Thread.new {
95
+ Thread.current.abort_on_exception = true
96
+ server.start
97
+ }
98
+ while server.status != :Running
99
+ Thread.pass
100
+ unless t.alive?
101
+ t.join
102
+ raise
103
+ end
104
+ end
105
+ t
106
+ end
107
+
108
+ def params(str)
109
+ HTTP::Message.parse(str).inject({}) { |r, (k, v)| r[k] = v.first; r }
110
+ end
111
+
112
+ def silent
113
+ begin
114
+ back, $VERBOSE = $VERBOSE, nil
115
+ yield
116
+ ensure
117
+ $VERBOSE = back
118
+ end
119
+ end
120
+
121
+ def escape_env
122
+ env = {}
123
+ env.update(ENV)
124
+ yield
125
+ ensure
126
+ ENV.clear
127
+ ENV.update(env)
128
+ end
129
+ end
data/test/htdigest ADDED
@@ -0,0 +1 @@
1
+ admin:auth:4302fe65caa32f27721949149ccd3083
data/test/htpasswd ADDED
@@ -0,0 +1,2 @@
1
+ admin:Qg266hq/YYKe2
2
+ guest:gbPc4vPCH.h12
@@ -0,0 +1,32 @@
1
+ require File.expand_path('helper', File.join(File.dirname(__FILE__), ".."))
2
+
3
+
4
+ class PEMUtilsTest < Test::Unit::TestCase
5
+ include Helper
6
+
7
+ def setup
8
+ @raw_cert = "-----BEGIN CERTIFICATE-----\nMIIDOTCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBCMRMwEQYKCZImiZPyLGQB\nGRYDb3JnMRkwFwYKCZImiZPyLGQBGRYJcnVieS1sYW5nMRAwDgYDVQQDDAdSdWJ5\nIENBMB4XDTE2MDgxMDE3MjEzNFoXDTE3MDgxMDE3MjEzNFowSzETMBEGCgmSJomT\n8ixkARkWA29yZzEZMBcGCgmSJomT8ixkARkWCXJ1YnktbGFuZzEZMBcGA1UEAwwQ\nUnVieSBjZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAJCfsSXpSMpmZCVa+ZCM+QDgomnhDlvnrGDq6pasTaIspGTXgws+7r8Dt/cNe6EH\nHJpRH2cGRiO4yPcfcT9eS4X7k8OC4f33wHfACOmLu6LeoNE8ujmSk6L6WzLUI+sE\nnLZbFrXxoAo4XHsm8vEG9C+jEoXZ1p+47wrAGaDwDQTnzlMy4dT9pRQEJP2G/Rry\nUkuZn8SUWmh3/YS78iaSzsNF1cgE1ealHOrPPFDjiCGDaH/LHyUPYlbFSLZ/B7Qx\nLxi5sePLcywWq/EJrmWpgeVTDjtNijsdKv/A3qkY+fm/oD0pzt7XsfJaP9YKNyJO\nQFdxWZeiPcDF+Hwf+IwSr+kCAwEAAaMxMC8wDgYDVR0PAQH/BAQDAgeAMB0GA1Ud\nDgQWBBQNvzYzJyXemGhxbA8NMXLolDnPyjANBgkqhkiG9w0BAQsFAAOCAQEARIJV\noKejGlOTn71QutnNnu07UtTu0IHs6YqjYzzND+m4JXLN+wvYm72AFUG0b1L7dRg0\niK8XjQrlNQNVqP1Mc6tffchy20neOPOHeiO6qTdRU8P2S8D3Uwe+1qhgxjfE+cWc\nwZmWxYK4HA8c58PxWMqrkr2QqXDplG9KWLvOgrtPGiLLZcQSKhvvB63QzItHBDU6\nRayiJY3oPkK/HrIvFlySqFqzWmuyknkciOFywEHQMz/tcSFJ2QFpPj/tBz9VXohH\nZ8KscmfhZrTPBjo+ky1lz/WraWoz4LMiLnkC2ABczWLRSawu+v3Irx1NFJngt05e\npqwtqIUeg7j+JLiTaA==\n-----END CERTIFICATE-----"
9
+ end
10
+
11
+ def test_read_certificate
12
+ assert_nothing_raised do
13
+ binary = HTTPClient::JRubySSLSocket::PEMUtils.read_certificate(@raw_cert)
14
+ end
15
+ end
16
+
17
+ def test_read_certificate_works_with_random_ascii_text_outside_begin_end
18
+ raw_cert_with_ascii = "some text before begin\n" + @raw_cert + "\nsome text after end"
19
+ assert_nothing_raised do
20
+ binary = HTTPClient::JRubySSLSocket::PEMUtils.read_certificate(raw_cert_with_ascii)
21
+ end
22
+ end
23
+
24
+ def test_read_certificate_uses_all_content_if_missing_begin_end
25
+ cert = @raw_cert.sub(/-----BEGIN CERTIFICATE-----/, '').sub(/-----END CERTIFICATE-----/, '')
26
+ assert_nothing_raised do
27
+ binary = HTTPClient::JRubySSLSocket::PEMUtils.read_certificate(cert)
28
+ end
29
+ end
30
+
31
+
32
+ end
data/test/runner.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ exit Test::Unit::AutoRunner.run(true, File.dirname($0))
data/test/server.cert ADDED
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDQzCCAiugAwIBAgIBAjANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJKUDES
3
+ MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxDjAMBgNVBAMMBVN1YkNB
4
+ MB4XDTI1MDIxMjA4NDIzMVoXDTM0MDIxMDA4NDIzMVowQzELMAkGA1UEBhMCSlAx
5
+ EjAQBgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMRIwEAYDVQQDDAlsb2Nh
6
+ bGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4SI2h/EryUcj5
7
+ yaPn4pOgRSv7VRwSOJX+6bBVmIuGgeSaqZXd9MpnewBhY9g1doOE3PfIVnnZNrFB
8
+ FHyJBYD7h6p35g8xyNJQ0HDJNd+xOw+LISoyNmgclGnjbtWzdRlzqnBAOjI7BxOs
9
+ MbX0ehkKMcl9VgAJczdGRpQewtDN8JLh8FivHH10txsAch78g7TK4OSfWLSJQg4b
10
+ dYIFEGKATKGutBCXHsDpuM1c0CFXU0qiH0FwnjKLJyyUEZg0WgTSn9PftR1PhVZ3
11
+ xx07FO+Cgku2QLeClKrJH6/9YsFa3W+AZmujt6Hp77LkBSVWDyYoBHDc+HPcIm0Z
12
+ AKg/YuH3AgMBAAGjRjBEMB0GA1UdDgQWBBTZgo2CimpIxBjlzlRwEKfA/3I3GDAO
13
+ BgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEL
14
+ BQADggEBAJcQ7A7a3XuMbc+eeyAhcoqlWyMpq8ktbVlc4jG7k5dITnXfDYxtMtre
15
+ byTezZRc0EWNEVDxmUkTskDfBjl6r3NgZk7lNIONaoMh3KgcyUa4BIjb3t5ifeKj
16
+ v+PbXD3G6zOpEfV5TSjnAXL/FVtSbsuLsLfu4TQLpZxEW2yRIW0ftOAsVCa0Ewo5
17
+ B78aN2aDrnSgVaTSZ3O+yto/3aVkQFVinCj7uLzoUZVcIQ0maCXTnxYORbAEQlu6
18
+ nt0faBMid8RX++niVh41WxmCkpnx6CnLScGdHsgrCho8C4gnm2hxAiKoLBaM88L5
19
+ VWt9rVhXmSOX4xeYUgVFfH14y2QMOpc=
20
+ -----END CERTIFICATE-----
data/test/server.key ADDED
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEoAIBAAKCAQEAuEiNofxK8lHI+cmj5+KToEUr+1UcEjiV/umwVZiLhoHkmqmV
3
+ 3fTKZ3sAYWPYNXaDhNz3yFZ52TaxQRR8iQWA+4eqd+YPMcjSUNBwyTXfsTsPiyEq
4
+ MjZoHJRp427Vs3UZc6pwQDoyOwcTrDG19HoZCjHJfVYACXM3RkaUHsLQzfCS4fBY
5
+ rxx9dLcbAHIe/IO0yuDkn1i0iUIOG3WCBRBigEyhrrQQlx7A6bjNXNAhV1NKoh9B
6
+ cJ4yiycslBGYNFoE0p/T37UdT4VWd8cdOxTvgoJLtkC3gpSqyR+v/WLBWt1vgGZr
7
+ o7eh6e+y5AUlVg8mKARw3Phz3CJtGQCoP2Lh9wIDAQABAoIBAACUABdZNBL88Eur
8
+ g99SXD9m3o1A5kzYVWaIIFl9/p7cmw799GgB2jC0HhT87zMbvN99CGBeHq7wkPww
9
+ 4dy8LuKbH/Nh8WJCmWy14Rfm512Mkq8cQSAIzULQF5TzE0PA3LEtzU3zE/1DatH7
10
+ eSRCZ2aBlkdvLm8/jhWjJ9iadXU8u2i6Cyvy/9S6KXcelopsRgpsA4Gn2t/q6FbS
11
+ IX9U1WzZz2/nOinCz4E7/Q/3zPxy4m2VRcdqWAMWtje+hFL/gu+IikkjMNlpxv6z
12
+ csZn1wyU36+FEW5UW9/m/NfyVQ7Uz6jI/zTYWFI0PIKpIlUe+brFCGA4qzIXoZt1
13
+ nwOcaIECgYEA5DSXZ/6WycMRsIOjZFzN5u3XBYts1Kg1Vm8AxaRwA0IYuftBwgB7
14
+ GxVY1IpGCaKrzLsYd2YI+xXxbM6FhAPu0AEyljtucp0KXlNMl325eHPvO+/TkTxn
15
+ PXwn8WJ1W3Hfe5goxPOFB6oG2Rwdsci5Q38Vtk/KPt6xKu71v7QMQecCgYEAzrp6
16
+ 7zRLNIhRAUvuh49BrZ62yRO4aaATXtwunKxqot+HOD6SmQ/ywaosTYu8s8i8z/9O
17
+ TqnOtS0WPTYwWgXKas0ZS32U4LspxrzUU541yzOGxpGwsnq8HUlnYE5B0AqGTo7F
18
+ IeeKzN2YxT1juXXK3X+kFp/NUG53m/M4o0ZUfXECf1PK+80zripndhdaPqSbbv9c
19
+ VZezmkJ7gRo7qAzqVDbeDjY8C+kwRAOt0vA31X+0O2DxUgqFbMbFR+Cr9FqFFytJ
20
+ RUnkiKmNAEGiVH1LrM6Nw0o+xXCOvVnWPNRlUrJBHc5EELRAtpgZ1mnh6QVerqga
21
+ Ad7vbVOocWVSWOoLMnUCgYAcJLL7wajDXBN7E7VDazNLyaGkujSO3KYGcf8+gRJ7
22
+ Xebwt0QJ5mvsBZjGbdGgwCFER8OHXgKwE5VFfA0VFFi8NXPOHSiZd6F2VtqpD47P
23
+ PRKKEed2RNM7QXT7XWwEQIqMQ09/ECCLR1e28maTJwAZK3lRQywWWRObfX8mazqx
24
+ YQKBgELCw5RGDgff66mkq0nErDyQPn0aqjXcBSWH022HJgH0x2+nJcPeUWoottA0
25
+ FMPuY+Hf4WmQtuFW6d4h9ZgGfOl1R4b6coGvmndbAIow8e7Vnq7f/fBcGe4aCg8A
26
+ UjaMsQcAaDATYywB83203IzoeLU/W8Sk+zN3I+DWbE+iMyAh
27
+ -----END RSA PRIVATE KEY-----
data/test/sslsvr.rb ADDED
@@ -0,0 +1,65 @@
1
+ require 'webrick/https'
2
+ require 'logger'
3
+ require 'rbconfig'
4
+
5
+ PORT = 17171
6
+ DIR = File.dirname(File.expand_path(__FILE__))
7
+
8
+ def cert(filename)
9
+ OpenSSL::X509::Certificate.new(File.open(File.join(DIR, filename)) { |f|
10
+ f.read
11
+ })
12
+ end
13
+
14
+ def key(filename)
15
+ OpenSSL::PKey::RSA.new(File.open(File.join(DIR, filename)) { |f|
16
+ f.read
17
+ })
18
+ end
19
+
20
+ def do_hello(req, res)
21
+ res['content-type'] = 'text/html'
22
+ res.body = "hello"
23
+ end
24
+
25
+ logger = Logger.new(STDERR)
26
+ logger.level = Logger::Severity::FATAL # avoid logging SSLError (ERROR level)
27
+
28
+ server = WEBrick::HTTPServer.new(
29
+ :BindAddress => "localhost",
30
+ :Logger => logger,
31
+ :Port => PORT,
32
+ :AccessLog => [],
33
+ :DocumentRoot => DIR,
34
+ :SSLEnable => true,
35
+ :SSLCACertificateFile => File.join(DIR, 'ca.cert'),
36
+ :SSLCertificate => cert('server.cert'),
37
+ :SSLPrivateKey => key('server.key'),
38
+ :SSLVerifyClient => nil, #OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT|OpenSSL::SSL::VERIFY_PEER,
39
+ :SSLClientCA => cert('ca.cert'),
40
+ :SSLCertName => nil
41
+ )
42
+ trap(:INT) do
43
+ server.shutdown
44
+ end
45
+ [:hello].each do |sym|
46
+ server.mount(
47
+ "/#{sym}",
48
+ WEBrick::HTTPServlet::ProcHandler.new(method("do_#{sym}").to_proc)
49
+ )
50
+ end
51
+
52
+ t = Thread.new {
53
+ Thread.current.abort_on_exception = true
54
+ server.start
55
+ }
56
+ while server.status != :Running
57
+ sleep 0.1
58
+ unless t.alive?
59
+ t.join
60
+ raise
61
+ end
62
+ end
63
+ STDOUT.sync = true
64
+ puts $$
65
+ t.join
data/test/subca.cert ADDED
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDODCCAiCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADA8MQswCQYDVQQGEwJKUDES
3
+ MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxCzAJBgNVBAMMAkNBMB4X
4
+ DTI1MDIxMjA4NDIzMVoXDTM0MDIxMDA4NDIzMVowPzELMAkGA1UEBhMCSlAxEjAQ
5
+ BgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMQ4wDAYDVQQDDAVTdWJDQTCC
6
+ ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALmNNo+I5XkgbBTJbvKgJxq5
7
+ oiJMEInr64KiCJOsA5Z35oE25a8OIWeRqxKW+jufonF96V/swWNM11gaUcTjYT72
8
+ g66ux42vWNN8uFxhhqhYRyiMjfSVA3HUZFaqmU9WP7H3YQGINJZ83BPOYoinZXEP
9
+ TrQVa8wIKT9Xc5gOq7+SqUuqLvs4jIkgrB744Fo0soCh5WT3V3Op/5K8MA0+N3P4
10
+ VrFm/SP8k7deT3EtT/aOHgkaKLo3hQ8zkDegVFEKfmWyoA/MwTSciioX/ePm7jjb
11
+ z4ffl5/ifg3Hgmuk6m85ZaGULJHCkciEgP8scZUNHkRvDK6ZBluwrUpepv5ARUsC
12
+ AwEAAaNCMEAwHQYDVR0OBBYEFErc4GxPO8mVXXhTgje5yLxWLh0bMA4GA1UdDwEB
13
+ /wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCAcHOU
14
+ nvhuV6Vuh4gNZjeLJWapJBVYZdkAOd4EhiWtYpq0wWSqlgE+VzIXV9gccYaulVmf
15
+ NJoLuenzML764U8kOBk8mOWg+U5AYOXwRgsU+e56jgWG6/ijLSf7YfaVkVZNPe36
16
+ 59+0KLag6AkkeDOdXbkfageukg6LhTk4Zg1piRMP3JSYbXVzTlgdm8hLKgPOJitQ
17
+ FdjMytGYCU5oGHrRrwhlar0xlIvynzVL5wlkuJ19hKUw4UYjoNFy3ZJtbtdqSaF2
18
+ ZGX/8KNDYFoHAyvGZCYTr22T1ywWeMFQ+4beiYEv2lifVcYIoI0bEA8Pe9i3Egiv
19
+ 9u18A/unCSVLPua1
20
+ -----END CERTIFICATE-----
data/test/subca.key ADDED
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAuY02j4jleSBsFMlu8qAnGrmiIkwQievrgqIIk6wDlnfmgTbl
3
+ rw4hZ5GrEpb6O5+icX3pX+zBY0zXWBpRxONhPvaDrq7Hja9Y03y4XGGGqFhHKIyN
4
+ 9JUDcdRkVqqZT1Y/sfdhAYg0lnzcE85iiKdlcQ9OtBVrzAgpP1dzmA6rv5KpS6ou
5
+ +ziMiSCsHvjgWjSygKHlZPdXc6n/krwwDT43c/hWsWb9I/yTt15PcS1P9o4eCRoo
6
+ ujeFDzOQN6BUUQp+ZbKgD8zBNJyKKhf94+buONvPh9+Xn+J+DceCa6TqbzlloZQs
7
+ kcKRyISA/yxxlQ0eRG8MrpkGW7CtSl6m/kBFSwIDAQABAoIBAFXknjCkhOFk1lNr
8
+ CZ5r754p93lb774AxWUT39eIJaMGPuBqyrkV1/XLEz+IPy7Rj09tI1ah0MXIYNkq
9
+ WdbEERSl5cA7rSmT1ZEU53zwMncEYnBNXDsvrcgIMyiBUXXN7a9S3gdpBzrwcqoC
10
+ fE9Y+hbzqJGpZtysnHdzYpGtnOiRT92atZudOR6qXKQA28qeuidZ3kNoasKysatD
11
+ ohhIQ8qErEQ6umGAvdjG/hf19j9c5ZuwQDJpfsczlpTHF3fgKiNJoQAb5GExhGW0
12
+ E2QaQzH1z60Cb+4rP2M6B7cw/2qf6gZxWXerQoVrcrd69osB7OjmWw5Ue7JlNGEO
13
+ s0SeLl0CgYEA6f79uANVeEFSzNrZxuR7zRQfKNiZNa162rTiGpSXfTRaGJI9x2uF
14
+ spt62KkYaTKBq2jK6V83rjK28+pA+Q9D+YxPd+vShNCcd8AtOIElFSWwq8If1c03
15
+ 2LmJg7JO8PYPLJKT41ANC75nv/qoRap5idw/9z4QrVuO/y3hlFckDycCgYEAywAD
16
+ r7wj7jp7/M5M4SehACOh2ztzSjBcWG4INq1XguyIsEb5MLB3y9GV5jgwhulJO+kw
17
+ Yo8hVGf5g21NS9TxvHEXNXERQYZQ34HZPmHrp0t8gYDmMLlFDAdiyojpB5TObKoz
18
+ hUqhegAnv4Do0xkhpBHzHMZzu3+v8Nkv+ylrrz0CgYEA0A90SEdmmvvyhMZf9/K3
19
+ hf1LS4V0jX8IiyllFl9jZ+fB6LE4D3aytcJ78+Q/GWLYW7JdIi8REmpztORpC0wg
20
+ k+bHzoi4cnIPfoc5blGeyHPv6Hk+11uXObSX6qsEeEtB6M8YgnlucC/IjrJxJyjS
21
+ 0tstYUkliQ+tUYbZWo41OOcCgYA/duSwJ0iwbPZgZfrhFWufSISMrrxvgEkOmG/W
22
+ 8ECAvQRK4BV95F2/iemsTPrW4s4zfcbTuV25LrxyG1TkFVHyEQUpfwzfCGf2SHkr
23
+ qJ9s8QuezTaqGvH8Pb7kBQOdjCcxD9EFpfxv0OacV2fyv1OmILp5z41VHClcSfpX
24
+ Mm7pHQKBgAFdYkZJBSg5xUJY18Fl2E6qRS8+LbOf85CHDrVQ5SrbuMLfgcDtHxJS
25
+ 1Hcsek+VpQENeYnAtE2QObTWPjWiU1AWHtH24bFLNJgWfzd4uwz/sduOX+mGqUZh
26
+ zXTqd1n4UZgEmAuFECfY3R1aUG0bZx64k36g7QvW9WGRr+naKNqp
27
+ -----END RSA PRIVATE KEY-----
data/test/subca.srl ADDED
@@ -0,0 +1 @@
1
+ 1A196228872FBD912F1AED26DF7847E9BE54F0EA