r509-ocsp-responder 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/README.md +77 -0
  2. data/Rakefile +38 -0
  3. data/doc/R509.html +115 -0
  4. data/doc/R509/Ocsp.html +130 -0
  5. data/doc/R509/Ocsp/Helper.html +126 -0
  6. data/doc/R509/Ocsp/Helper/RequestChecker.html +739 -0
  7. data/doc/R509/Ocsp/Helper/ResponseSigner.html +583 -0
  8. data/doc/R509/Ocsp/Responder.html +129 -0
  9. data/doc/R509/Ocsp/Responder/OcspConfig.html +289 -0
  10. data/doc/R509/Ocsp/Responder/Server.html +128 -0
  11. data/doc/R509/Ocsp/Responder/StatusError.html +134 -0
  12. data/doc/R509/Ocsp/Signer.html +584 -0
  13. data/doc/_index.html +197 -0
  14. data/doc/class_list.html +53 -0
  15. data/doc/css/common.css +1 -0
  16. data/doc/css/full_list.css +57 -0
  17. data/doc/css/style.css +328 -0
  18. data/doc/file.README.html +156 -0
  19. data/doc/file_list.html +55 -0
  20. data/doc/frames.html +28 -0
  21. data/doc/index.html +156 -0
  22. data/doc/js/app.js +214 -0
  23. data/doc/js/full_list.js +173 -0
  24. data/doc/js/jquery.js +4 -0
  25. data/doc/method_list.html +164 -0
  26. data/doc/top-level-namespace.html +112 -0
  27. data/lib/r509/ocsp/responder/ocsp-config.rb +35 -0
  28. data/lib/r509/ocsp/responder/server.rb +169 -0
  29. data/lib/r509/ocsp/responder/version.rb +7 -0
  30. data/lib/r509/ocsp/signer.rb +244 -0
  31. data/spec/fixtures.rb +196 -0
  32. data/spec/fixtures/cert1.pem +24 -0
  33. data/spec/fixtures/config_test_various.yaml +46 -0
  34. data/spec/fixtures/ocsptest.r509.local.pem +27 -0
  35. data/spec/fixtures/second_ca.cer +26 -0
  36. data/spec/fixtures/second_ca.key +27 -0
  37. data/spec/fixtures/stca.pem +22 -0
  38. data/spec/fixtures/stca_ocsp_request.der +0 -0
  39. data/spec/fixtures/stca_ocsp_response.der +0 -0
  40. data/spec/fixtures/test_ca.cer +22 -0
  41. data/spec/fixtures/test_ca.key +28 -0
  42. data/spec/fixtures/test_ca_ocsp.cer +26 -0
  43. data/spec/fixtures/test_ca_ocsp.key +27 -0
  44. data/spec/fixtures/test_ca_ocsp_chain.txt +48 -0
  45. data/spec/fixtures/test_ca_request.der +0 -0
  46. data/spec/fixtures/test_ca_response.der +0 -0
  47. data/spec/fixtures/test_ca_subroot.cer +25 -0
  48. data/spec/fixtures/test_ca_subroot.key +27 -0
  49. data/spec/fixtures/test_ca_subroot_ocsp.cer +25 -0
  50. data/spec/fixtures/test_ca_subroot_ocsp.key +27 -0
  51. data/spec/fixtures/test_config.yaml +17 -0
  52. data/spec/server_spec.rb +400 -0
  53. data/spec/signer_spec.rb +275 -0
  54. data/spec/spec_helper.rb +18 -0
  55. metadata +259 -0
@@ -0,0 +1,196 @@
1
+ require 'spec_helper'
2
+ require 'pathname'
3
+ require 'r509/io_helpers'
4
+
5
+ module TestFixtures
6
+ extend R509::IOHelpers
7
+
8
+ FIXTURES_PATH = Pathname.new(__FILE__).dirname + "fixtures"
9
+
10
+ def self.read_fixture(filename)
11
+ read_data((FIXTURES_PATH + filename).to_s)
12
+ end
13
+
14
+ #Trustwave cert for langui.sh
15
+ CERT = read_fixture('cert1.pem')
16
+
17
+ #Trustwave root cert
18
+ STCA_CERT = read_fixture('stca.pem')
19
+
20
+
21
+ TEST_CA_CERT = read_fixture('test_ca.cer')
22
+ TEST_CA_KEY = read_fixture('test_ca.key')
23
+
24
+ TEST_CA_OCSP_CERT = read_fixture('test_ca_ocsp.cer')
25
+ TEST_CA_OCSP_KEY = read_fixture('test_ca_ocsp.key')
26
+
27
+ TEST_CA_SUBROOT_CERT = read_fixture('test_ca_subroot.cer')
28
+ TEST_CA_SUBROOT_KEY = read_fixture('test_ca_subroot.key')
29
+
30
+ TEST_CA_SUBROOT_OCSP_CERT = read_fixture('test_ca_subroot_ocsp.cer')
31
+ TEST_CA_SUBROOT_OCSP_KEY = read_fixture('test_ca_subroot_ocsp.key')
32
+
33
+ SECOND_CA_CERT = read_fixture('second_ca.cer')
34
+ SECOND_CA_KEY = read_fixture('second_ca.key')
35
+
36
+ OCSP_TEST_CERT = read_fixture('ocsptest.r509.local.pem')
37
+
38
+ STCA_OCSP_REQUEST = read_fixture('stca_ocsp_request.der')
39
+ STCA_OCSP_RESPONSE = read_fixture('stca_ocsp_response.der')
40
+
41
+ def self.test_ca_cert
42
+ R509::Cert.new(:cert => TEST_CA_CERT, :key => TEST_CA_KEY)
43
+ end
44
+
45
+ def self.test_ca_subroot_cert
46
+ R509::Cert.new(:cert => TEST_CA_SUBROOT_CERT, :key => TEST_CA_SUBROOT_KEY)
47
+ end
48
+
49
+ def self.test_ca_server_profile
50
+ R509::Config::CaProfile.new(
51
+ :basic_constraints => "CA:FALSE",
52
+ :key_usage => ["digitalSignature","keyEncipherment"],
53
+ :extended_key_usage => ["serverAuth"],
54
+ :certificate_policies => [
55
+ [
56
+ "policyIdentifier=2.16.840.1.12345.1.2.3.4.1",
57
+ "CPS.1=http://example.com/cps"
58
+ ]
59
+ ]
60
+ )
61
+
62
+ end
63
+
64
+ def self.test_ca_server_profile_with_subject_item_policy
65
+ subject_item_policy = R509::Config::SubjectItemPolicy.new(
66
+ "CN" => "required",
67
+ "O" => "optional",
68
+ "ST" => "required",
69
+ "C" => "required",
70
+ "OU" => "optional"
71
+ )
72
+ R509::Config::CaProfile.new(
73
+ :basic_constraints => "CA:FALSE",
74
+ :key_usage => ["digitalSignature","keyEncipherment"],
75
+ :extended_key_usage => ["serverAuth"],
76
+ :certificate_policies => [
77
+ [
78
+ "policyIdentifier=2.16.840.1.12345.1.2.3.4.1",
79
+ "CPS.1=http://example.com/cps"
80
+ ]
81
+ ],
82
+ :subject_item_policy => subject_item_policy
83
+ )
84
+ end
85
+
86
+ def self.test_ca_subroot_profile
87
+ R509::Config::CaProfile.new(
88
+ :basic_constraints => "CA:TRUE,pathlen:0",
89
+ :key_usage => ["keyCertSign","cRLSign"],
90
+ :extended_key_usage => [],
91
+ :certificate_policies => nil)
92
+ end
93
+
94
+ def self.test_ca_ocspsigner_profile
95
+ R509::Config::CaProfile.new(
96
+ :basic_constraints => "CA:FALSE",
97
+ :key_usage => ["digitalSignature"],
98
+ :extended_key_usage => ["OCSPSigning"],
99
+ :certificate_policies => nil)
100
+ end
101
+
102
+ def self.second_ca_cert
103
+ R509::Cert.new(:cert => SECOND_CA_CERT, :key => SECOND_CA_KEY)
104
+ end
105
+
106
+ def self.second_ca_server_profile
107
+ R509::Config::CaProfile.new(
108
+ :basic_constraints => "CA:FALSE",
109
+ :key_usage => ["digitalSignature","keyEncipherment"],
110
+ :extended_key_usage => ["serverAuth"],
111
+ :certificate_policies => [
112
+ [
113
+ "policyIdentifier=2.16.840.1.12345.1.2.3.4.1",
114
+ "CPS.1=http://example.com/cps"
115
+ ]
116
+ ]
117
+ )
118
+
119
+ end
120
+
121
+ def self.second_ca_subroot_profile
122
+ R509::Config::CaProfile.new(
123
+ :basic_constraints => "CA:TRUE,pathlen:0",
124
+ :key_usage => ["keyCertSign","cRLSign"],
125
+ :extended_key_usage => [],
126
+ :certificate_policies => nil)
127
+ end
128
+
129
+
130
+ # @return [R509::Config::CaConfig]
131
+ def self.test_ca_config
132
+ crl_list_sio = StringIO.new
133
+ crl_list_sio.set_encoding("BINARY") if crl_list_sio.respond_to?(:set_encoding)
134
+ crl_number_sio = StringIO.new
135
+ crl_number_sio.set_encoding("BINARY") if crl_number_sio.respond_to?(:set_encoding)
136
+
137
+ opts = {
138
+ :ca_cert => test_ca_cert(),
139
+ :cdp_location => 'URI:http://crl.domain.com/test_ca.crl',
140
+ :ocsp_location => 'URI:http://ocsp.domain.com',
141
+ :ocsp_start_skew_seconds => 3600,
142
+ :ocsp_validity_hours => 48,
143
+ :crl_list_file => crl_list_sio,
144
+ :crl_number_file => crl_number_sio
145
+ }
146
+ ret = R509::Config::CaConfig.new(opts)
147
+
148
+ ret.set_profile("server", self.test_ca_server_profile)
149
+ ret.set_profile("subroot", self.test_ca_subroot_profile)
150
+ ret.set_profile("ocspsigner", self.test_ca_ocspsigner_profile)
151
+ ret.set_profile("server_with_subject_item_policy", self.test_ca_server_profile_with_subject_item_policy)
152
+
153
+ ret
154
+ end
155
+
156
+ # @return [R509::Config::CaConfig]
157
+ def self.test_ca_subroot_config
158
+ crl_list_sio = StringIO.new
159
+ crl_list_sio.set_encoding("BINARY") if crl_list_sio.respond_to?(:set_encoding)
160
+ crl_number_sio = StringIO.new
161
+ crl_number_sio.set_encoding("BINARY") if crl_number_sio.respond_to?(:set_encoding)
162
+
163
+ opts = {
164
+ :ca_cert => test_ca_subroot_cert(),
165
+ :cdp_location => 'URI:http://crl.domain.com/test_ca.crl',
166
+ :ocsp_location => 'URI:http://ocsp.domain.com',
167
+ :ocsp_start_skew_seconds => 3600,
168
+ :ocsp_validity_hours => 48,
169
+ :crl_list_file => crl_list_sio,
170
+ :crl_number_file => crl_number_sio
171
+ }
172
+ ret = R509::Config::CaConfig.new(opts)
173
+
174
+ ret.set_profile("server", self.test_ca_server_profile)
175
+ ret.set_profile("subroot", self.test_ca_subroot_profile)
176
+ ret.set_profile("ocspsigner", self.test_ca_ocspsigner_profile)
177
+ ret.set_profile("server_with_subject_item_policy", self.test_ca_server_profile_with_subject_item_policy)
178
+
179
+ ret
180
+ end
181
+
182
+ # @return [R509::Config::CaConfig] secondary config
183
+ def self.second_ca_config
184
+ opts = {
185
+ :ca_cert => second_ca_cert(),
186
+ :cdp_location => 'URI:http://crl.domain.com/test_ca.crl',
187
+ :ocsp_location => 'URI:http://ocsp.domain.com'
188
+ }
189
+ ret = R509::Config::CaConfig.new(opts)
190
+
191
+ ret.set_profile("server", self.second_ca_server_profile)
192
+ ret.set_profile("subroot", self.second_ca_subroot_profile)
193
+
194
+ ret
195
+ end
196
+ end
@@ -0,0 +1,24 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEEDCCAvigAwIBAgIFMUeG8mMwDQYJKoZIhvcNAQEFBQAwSDELMAkGA1UEBhMC
3
+ VVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5T
4
+ ZWN1cmVUcnVzdCBDQTAeFw0xMDA4MjQxNDEwMDJaFw0xMzA4MjMxNDEwMDJaMFwx
5
+ CzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4GA1UEBxMHQ2hpY2Fn
6
+ bzEUMBIGA1UEChMLUGF1bCBLZWhyZXIxEjAQBgNVBAMTCWxhbmd1aS5zaDCCASIw
7
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMMdaJzUD0I8PRwbK6c3y7Wl+PtP
8
+ IHN5eawaNFWZAVWd/wRZt9MNl4BzVtGYPldPzaC4sdcEDC7YyB+31nVDWVETa3Jw
9
+ LnFZ1lcCrfydeQh2IfXkoH7boRMmqqSYxlHNSijTb7HYYIMb5sekM742v3nQ4Muh
10
+ lDWrgmOrxQiNEp2w0rj0qeM9jeJP4S1TPN6CJZohR4KdFSZYLGTSGZNNtbzbUXHl
11
+ 30Ou6Tg+K9HpAWJ9KB+sYmL4wsxnW9ZC4AHppOY2dx3BVy91RuEE4nCI1ZfGh3Vn
12
+ R80hy0IBYjoupnm6efwVCdHlHnwM81tlLAD7BG+syVYyKJ5H+y10XtbXOssCAwEA
13
+ AaOB7DCB6TAJBgNVHRMEAjAAMB0GA1UdDgQWBBQAjd1USmQruNPPCOSePFXkZP4E
14
+ 4DAfBgNVHSMEGDAWgBRCMrYW+gT9/l1LesP990xAHVpDrzALBgNVHQ8EBAMCBaAw
15
+ EwYDVR0lBAwwCgYIKwYBBQUHAwEwNAYDVR0fBC0wKzApoCegJYYjaHR0cDovL2Ny
16
+ bC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwRAYDVR0gBD0wOzA5BgxghkgBhv1k
17
+ AQECAwEwKTAnBggrBgEFBQcCARYbaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL0NB
18
+ MA0GCSqGSIb3DQEBBQUAA4IBAQCp6++bP8QfrJ9W1usAmDcIZu+PVp/wux0OSXf5
19
+ 2I4m44NAwT20yevWxnqzF2JZ/R2mCi41sPbV6Uvk+/6YWezSdTFPGPNZ1mwuQ7Bu
20
+ BZB3DR71BJTP/YUOD6uWOFSh8didm3kHNbAvG4X/xWyj07n70Cof0PBDGtw8QKlt
21
+ CBydpPHBeew14n0PXXLB8jrDd6PtlKvKWrLVs9igASBuW584chaWNw039zxRKoqq
22
+ PsMwIw+1he4Bax4hH4fM4wQOFpnhk5Y34VmdZqo1JtF7Vn41ghGwsXVswvl6wPC1
23
+ g4+GUUwJtQ6cJyMmN4sIHDbCFTOWBlUijvMrvl3wxncqDmOp
24
+ -----END CERTIFICATE-----
@@ -0,0 +1,46 @@
1
+ ocsp_delegate_ca: {
2
+ ca_cert: {
3
+ cert: 'test_ca.cer'
4
+ },
5
+ ocsp_cert: {
6
+ cert: 'test_ca_ocsp.cer',
7
+ key: 'test_ca_ocsp.key'
8
+ }
9
+ }
10
+ ocsp_subroot_delegate_ca: {
11
+ ca_cert: {
12
+ cert: 'test_ca_subroot.cer'
13
+ },
14
+ ocsp_cert: {
15
+ cert: 'test_ca_subroot_ocsp.cer',
16
+ key: 'test_ca_subroot_ocsp.key'
17
+ }
18
+ }
19
+ ocsp_chain_ca: {
20
+ ca_cert: {
21
+ cert: 'test_ca.cer'
22
+ },
23
+ ocsp_cert: {
24
+ cert: 'test_ca_ocsp.cer',
25
+ key: 'test_ca_ocsp.key'
26
+ },
27
+ ocsp_chain: 'test_ca_ocsp_chain.txt'
28
+ }
29
+ ocsp_pkcs12_ca: {
30
+ ca_cert: {
31
+ cert: 'test_ca.cer'
32
+ },
33
+ ocsp_cert: {
34
+ pkcs12: 'test_ca_ocsp.p12',
35
+ password: 'r509'
36
+ }
37
+ }
38
+ ocsp_engine_ca: {
39
+ ca_cert: {
40
+ cert: 'test_ca.cer'
41
+ },
42
+ ocsp_cert: {
43
+ cert: 'test_ca_ocsp.cer',
44
+ engine: 'chil'
45
+ }
46
+ }
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEgTCCA2mgAwIBAgIVAJjZ5cC0w3NVLfd8XQ8etRKOSUX5MA0GCSqGSIb3DQEB
3
+ BQUAMF4xCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhJbGxpbm9pczEQMA4GA1UEBwwH
4
+ Q2hpY2FnbzEYMBYGA1UECgwPUnVieSBDQSBQcm9qZWN0MRAwDgYDVQQDDAdUZXN0
5
+ IENBMB4XDTExMTIwNjE0NDMwNVoXDTEyMTIwNTE0NDMwNVowHjEcMBoGA1UEAwwT
6
+ b2NzcHRlc3QucjUwOS5sb2NhbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
7
+ ggEBAJKYUzUFOARca6xgBdCzcCaBskoybxHO6MP55wqX0NzRJQY39EZVI8cEZb5J
8
+ DHCMiIQVF4LzaV2YeBYxQIcH3wwDchiM68ru4RetzM0lJjTj+Dh9KFQlGrO0Ggq3
9
+ Or1/dDZiYXGKNKisvVALCa8Witak4kN6gPxicbQqBjz5mqQ1fR3XmwLk4ZUoyyzC
10
+ YLtsBRq9BMPb/ACOnpSMPY+/JcNSZq7mfkdZkgIUiSVV3gSi7la039HnIQy47ou4
11
+ gAstE9phBbD3HzyVhHQrUqWH5ySgvWqey/GKw473YtqAkqXiMri/9l0wqoc/z8z/
12
+ 8AUsucNWY0fFw6W60DfddLHnLqMCAwEAAaOCAXQwggFwMAwGA1UdEwEB/wQCMAAw
13
+ HQYDVR0OBBYEFA+4ILvXZtq+sTFnuu7bBgNozYxEMAsGA1UdDwQEAwIFoDCBkAYD
14
+ VR0jBIGIMIGFgBR5dbuEOsss3noJvjEbQ7wcKk1TWKFipGAwXjELMAkGA1UEBhMC
15
+ VVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdDaGljYWdvMRgwFgYDVQQK
16
+ DA9SdWJ5IENBIFByb2plY3QxEDAOBgNVBAMMB1Rlc3QgQ0GCCQD/2ccLhzfRlDAT
17
+ BgNVHSUEDDAKBggrBgEFBQcDATA+BgNVHSAENzA1MDMGC2CGSAHgOQECAwQBMCQw
18
+ IgYIKwYBBQUHAgEWFmh0dHA6Ly9leGFtcGxlLmNvbS9jcHMwHwYDVR0fBBgwFjAU
19
+ oBKgEIYOaHR0cDovL2NybC5jb20wKwYIKwYBBQUHAQEEHzAdMBsGCCsGAQUFBzAB
20
+ hg9odHRwOi8vb2NzcC5jb20wDQYJKoZIhvcNAQEFBQADggEBAGoNhg81fX8piyRL
21
+ l7mxSCn+Ts1xa7cr1c2Hrm/WrdONtoXLrqPKQAYY6gB2LhkBCbAXB3LIWLgvhrUE
22
+ sfcWy7vwZNDtjuuynmwgoRcpjxYV7r9aHsgzUDtaPMRpVn4dMD8fkGtgpDgf49xG
23
+ yGD9f48DXlLIbOYzfucrVDQT6QUeMwCtxvtJcYCplL/jvt87a08e8coDMkiE8wVE
24
+ 0sSpJnYuK9WBvcoGaaMrhrMG744pwYaCEXF+gghozNFZ2e3zjMYGRt/XpGkPT9PD
25
+ MWS/UUznolj5htW+8zsITxahjt7D/BKQiKoPpOoLoajyBZWIhy+F8BC0sT+1hafO
26
+ alTAjPE=
27
+ -----END CERTIFICATE-----
@@ -0,0 +1,26 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEHjCCAwagAwIBAgIJAMmEWj3f4aUaMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNV
3
+ BAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4GA1UEBxMHQ2hpY2FnbzESMBAG
4
+ A1UEChMJUjUwOSwgTHRkMR8wHQYDVQQDExZSNTA5IFNlY29uZGFyeSBUZXN0IENB
5
+ MB4XDTExMTIwNjIxMTQ1MFoXDTMwMDcxOTIxMTQ1MFowZzELMAkGA1UEBhMCVVMx
6
+ ETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGljYWdvMRIwEAYDVQQKEwlS
7
+ NTA5LCBMdGQxHzAdBgNVBAMTFlI1MDkgU2Vjb25kYXJ5IFRlc3QgQ0EwggEiMA0G
8
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDSV/a39wauzUnEc0r/0+6R4D7m2ESk
9
+ JV8cIx7hQTzxmhPDwk4Vf4UIaC0bxzHQ0TAcZSA3MJEvWGK9TaSOA7mzFQOEbQyw
10
+ Uz4nWsuS+N1UaVkJf6BR98OtpO4jPV0ir0BlgN8vc79CbvsYRjQ8zM10/tIdA6oD
11
+ U9LCLBJfHKm9Lpx8JO8CKweBmoMM/gNSdzC2AZUk6rwvtlZOvUth9Kcoe38ZMvib
12
+ nSXSsIYUUkXWbfxHmPT2yHXi4t/Tuf/7VJqyXh7Mr3m0tg1OuiJXaPR8m63ZPnVB
13
+ yAokJXLaVCWpMm7mHpD2u3s09LTDDcahFLiir1oUofnGQxoIOi7Y4ifvAgMBAAGj
14
+ gcwwgckwHQYDVR0OBBYEFD/HsyH/MoTC4B53HEiiS0HYQ2lZMIGZBgNVHSMEgZEw
15
+ gY6AFD/HsyH/MoTC4B53HEiiS0HYQ2lZoWukaTBnMQswCQYDVQQGEwJVUzERMA8G
16
+ A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xEjAQBgNVBAoTCVI1MDks
17
+ IEx0ZDEfMB0GA1UEAxMWUjUwOSBTZWNvbmRhcnkgVGVzdCBDQYIJAMmEWj3f4aUa
18
+ MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAW7C4sjrYU3Xjj0BJJQ
19
+ lc/oT9mszr+UXpgbsk0Mh7Hd7N+gZ27gu5Y+D/Stbm8LLZQWCKl2n/6SLV7nJBFt
20
+ sBmxhDiesWY+J7y9WNGirrBmAF2h6vz1oGB01YvC5ctWuS+eO51BcHg9QaMgxoTA
21
+ mxaF597OmLCa9ICICJHUIBxfv2NeuO/Hy/meQHcI58YmxatdD31Gvy71PHa5Fc4+
22
+ nHe7yOrIj1BU/LaIRAx6iguE4DaRUgQU3orOnzc6mZIWY4sXZu34GX7nYVas0EF7
23
+ SUQFToihSaMBMltW6Jj9IYRXwYLgLg4RQNYfiQ1JrpGnN9CJ5DhnviBAidjEAMJx
24
+ XJo=
25
+ -----END CERTIFICATE-----
26
+
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEA0lf2t/cGrs1JxHNK/9PukeA+5thEpCVfHCMe4UE88ZoTw8JO
3
+ FX+FCGgtG8cx0NEwHGUgNzCRL1hivU2kjgO5sxUDhG0MsFM+J1rLkvjdVGlZCX+g
4
+ UffDraTuIz1dIq9AZYDfL3O/Qm77GEY0PMzNdP7SHQOqA1PSwiwSXxypvS6cfCTv
5
+ AisHgZqDDP4DUncwtgGVJOq8L7ZWTr1LYfSnKHt/GTL4m50l0rCGFFJF1m38R5j0
6
+ 9sh14uLf07n/+1Sasl4ezK95tLYNTroiV2j0fJut2T51QcgKJCVy2lQlqTJu5h6Q
7
+ 9rt7NPS0ww3GoRS4oq9aFKH5xkMaCDou2OIn7wIDAQABAoIBAF4ohEfbq8EqImBv
8
+ X95fZ4cjg+TgYPG9zPKSgitBgd+BImHaJAwZllqqD69Envcj/U5osmAiPIueHC0z
9
+ iXsNDd6thHKOQkTYLpV9Xm2/O4yiz/mhiQnISG79yqA5wuxY2RHW+5GJVc+OUJaQ
10
+ Lqgc4cgCndnhHwT4S/shsWOkOBN37q5GjiHq+Vfxi64HbGq3k+h7uH+b9O9pIt9m
11
+ rj63i1PSy4t6EUR98bN/HjH0O3uhUYbILOLn6CE30XMfbr6O6KIyDEOpsajb6exh
12
+ P7nGT/VMQOiJYBT2K+kVEJat+qUjte82MGa5Ytygdf5/3EjwrjEcEsYzxS0Z9M8G
13
+ PtFTqyECgYEA+vi1BJVOF3mbrlS3DvZfDgxPdCuWbif1tmpZVzJNQJE+oGyaVTnB
14
+ qPtiPn3s2fYDeM5cyBHY0iTgI18d7g0DXg2j++fjxFL4Mo/4GyMH0UnFlIc7x6VY
15
+ lMbIfHouBLBhpOGYP6S1MQSt72HE3gZ8lk4EYgMQjtmW0QyWOMz6jPECgYEA1o7d
16
+ zQx9esl27sMxVfyuqBXuDTlFU2/zfulFtAlZCgvhLADVXa5tgokPR3/ldy/caAUn
17
+ PETkGDWhMGaa61pBJyHspe25FYNpNCRvE32pXc6YyXXNg0t9NkfqFciJCYhJ0hTS
18
+ +MkK9kBWqinUyE9dvMKCvgmAE1CT8Jh8AVv/gt8CgYB8ffRlMp7LHEKyZklr/aBH
19
+ OqoLCTgUqnPDKdvpWgViGupC77xavEypQxGHyDU+JT+xpEP35op0K2CXiy4wkHn0
20
+ JLYMVgnwr+t4QVwkMetF0N9WfwKTVRysqDJ5NK4xG0FEZbd9Ennit9yD2y6pp/QT
21
+ Jt4btEN5aMvcJO87e8ppMQKBgQDB2C2X9fLgHmhvaraGI1aA0d9S3y09JuXtAUBS
22
+ Wiexpe333YDntJGH3+CIDor4Vath51X9Y5hYLwvEOM86Vz6J5mJxvwb64tEHpOsd
23
+ xuhfsinjyaS1PFyR0AMzTwxQKmvXe6znzGs09AfYkRaHKv1bbrjEjLzDtocSVhGj
24
+ AMUmLQKBgAw5O+Zaw8RI4xpsi2y+y44Tt1QGtdwcdlBMhi7lTRDGT21RxMvypKi4
25
+ lzMaPm+qQ8lLIep68RbttZZ3FCZ/l3mr6D/SHEcKotl4Z8aLsg5T3sd2WZAfOJvQ
26
+ XQEi9pUgRj4MKTWIKtc7V26+WpdnNlyk1VLfnb4zS7zjoIDM9cxh
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI
3
+ MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x
4
+ FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz
5
+ MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv
6
+ cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN
7
+ AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz
8
+ Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO
9
+ 0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao
10
+ wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj
11
+ 7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS
12
+ 8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT
13
+ BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
14
+ /zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg
15
+ JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC
16
+ NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3
17
+ 6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/
18
+ 3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm
19
+ D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS
20
+ CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
21
+ 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
22
+ -----END CERTIFICATE-----
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDjzCCAnegAwIBAgIJAP/ZxwuHN9GUMA0GCSqGSIb3DQEBBQUAMF4xCzAJBgNV
3
+ BAYTAlVTMREwDwYDVQQIDAhJbGxpbm9pczEQMA4GA1UEBwwHQ2hpY2FnbzEYMBYG
4
+ A1UECgwPUnVieSBDQSBQcm9qZWN0MRAwDgYDVQQDDAdUZXN0IENBMB4XDTExMDIy
5
+ MDIwNDkxMloXDTMwMDQyMTIwNDkxMlowXjELMAkGA1UEBhMCVVMxETAPBgNVBAgM
6
+ CElsbGlub2lzMRAwDgYDVQQHDAdDaGljYWdvMRgwFgYDVQQKDA9SdWJ5IENBIFBy
7
+ b2plY3QxEDAOBgNVBAMMB1Rlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
8
+ ggEKAoIBAQCot8/z3jxARkwyRk0csM84dlWs91W95wPpunx3P3otqUxCJaOAyQl/
9
+ uY8deg0xDmsime2JQ6aG6m76y3LfT4J1tlkhtmiGKhNJir1kgL8sL0wTXYXvwZEw
10
+ qEEYD5mKi7Na9eo4R0ydqd9KAquVIhKywXvV1+Y4RDTx+f1WXmMCBaYZ76/rXmIe
11
+ oE0avriRiihOtlgto+VNJw7VRnvq+cEd81BT62wRk1fG1lcpCqTEfEtKEI6PqqZh
12
+ E2f+6lNmhZZ3Tj7NeNgYQLd4q+L1y030Vj4onpAIJrwfQq3dxTmrLDqnN2WOFsbo
13
+ 0qGh3s4yqUaOYd2wIBgCp7fEf5X/yh53AgMBAAGjUDBOMB0GA1UdDgQWBBR5dbuE
14
+ Osss3noJvjEbQ7wcKk1TWDAfBgNVHSMEGDAWgBR5dbuEOsss3noJvjEbQ7wcKk1T
15
+ WDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAp/Fh+WWjN7x/SZzMm
16
+ H1INAS4loufHXzkqI+3bClAzlhzpBVbY7dHwD6H8oKh06EtppbN0Bw3iqXSRyoNd
17
+ +lDXccPij5dCuTFQ97DOrv7kGlhiM95XVkx4mvnd+i6jKwgOpllgDE/nKOwC42bq
18
+ lIikcp7XLQUPt7amyX9UeJ8lxQ/niSkT868ls2IZQkF3XEhCi+5VlefEoaiMQZmD
19
+ RyEd/vlsSnpXI5LLpkFq+NFGvgdI7+UADNIyDplyivD4VyQ6+zisX3r1ojroa6Y+
20
+ WyXxLx+AVJVnGjngr2fDKr4ggsYWlJEs8lJ0r90jliYrSPA6rIldTbs3k9AbUp8G
21
+ kS6X
22
+ -----END CERTIFICATE-----
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCot8/z3jxARkwy
3
+ Rk0csM84dlWs91W95wPpunx3P3otqUxCJaOAyQl/uY8deg0xDmsime2JQ6aG6m76
4
+ y3LfT4J1tlkhtmiGKhNJir1kgL8sL0wTXYXvwZEwqEEYD5mKi7Na9eo4R0ydqd9K
5
+ AquVIhKywXvV1+Y4RDTx+f1WXmMCBaYZ76/rXmIeoE0avriRiihOtlgto+VNJw7V
6
+ Rnvq+cEd81BT62wRk1fG1lcpCqTEfEtKEI6PqqZhE2f+6lNmhZZ3Tj7NeNgYQLd4
7
+ q+L1y030Vj4onpAIJrwfQq3dxTmrLDqnN2WOFsbo0qGh3s4yqUaOYd2wIBgCp7fE
8
+ f5X/yh53AgMBAAECggEAMlRS5m6fDpVp2X17N1nPFwrF2AkYPMQTOL/2rSP0cHaW
9
+ Vw0fTyWpfb5+4M4t7Tpd3z6Hy3Cw1oJMhOf35oGzayXwRMxDNfKLOl72zGpTnPym
10
+ 9wfpEnJtu1QVxvWwWdH+uN2u9wbd5hJsl4lgYeZ+KXDqXgo/lP1TxfNLDV6urkVA
11
+ wsR5URtG2ddOTOUjhUvizWPt1QCVE6Z5YVe9haTtQ4EtLjPywd8LB01AXRkvLIlL
12
+ 2XpL/EeuzF8GLd3GRMjEwgnT7WWBLHe7zIZqsRVx318Pu+WoWRFXUbKxrwH05tUV
13
+ kx9Gh//L01uNwGx7qHSyJxTmYibjJXQAyQqVpPY4oQKBgQDgTbRVX65AEj5x8J3A
14
+ 1UEBDZE6ZQL/AnM+yPZGFSTfM04ebLUKyeIDvoSUxrbWMSf8JJwU1OCA+zJiXSld
15
+ 0BNBwd/irr9aglEuOBx6ITJypaKtehR5TtZGWsrvJT9f7IZ5Tc29gC0wiKNOqQ09
16
+ O4J7/tvk2j4viAawGHSlRvJDnwKBgQDAj0X1kLwaH+QlVHU9QyRbK8qJsouot8Km
17
+ BEjkZQ4D+7BQ/3mfFszJ/AG6tMA6FgikskyEics7XrtNYPZOGZ1xxKpi1an6o8cm
18
+ GKUavZnkR5eHNwUEl2c9V5lNMbtAbCbIz30sCBFluicw37M2O8n38xTDSnXcRTbN
19
+ n3rqpu52KQKBgE3MRc8Sx7JrYYNNjLnUfZ5q4UNaw8ZFSEmvlFPMg6Ry/BZraAPc
20
+ 7+qSixO7NLFoDVFUNVq4V0IFXn1liLKEOBmnsArEx5QR/SxFxALMPt4q+ximbjGB
21
+ Gar/VMHLroaL2Dx8su6WZZYe3l2rHu9tE54EUKq407bSvFcZtGObDu5LAoGAfxmS
22
+ ueYQ4sWOF73JrOg2hR9AjucVHAY/KsnFO0wglix5Ut1ub73i6qe2lIBeKXkFt4Ag
23
+ 1ZMGXGfJBegsa5youcFwHdCeY9vaxaCayi2/+FfxAsUkQMWW1XyOqc9bo8g/SWj7
24
+ XCbvJNBcsfvWFMQeKdV/LPBnHz9oTw0nWt9YoxECgYAA9f2l6btaIV2JuDEzR8LK
25
+ 8MjXZMwmg9pEiUT0DsiiVIkJDsHdb2i54DhkfEKxi+ZDTO8AoFpqc4GTwobQHgPk
26
+ N6Qa+wvig8SAWTS0dbPq2usvmx8cOiuqbn88VVl9jmFT6WTRJzNVRgVMM8xwl3uS
27
+ odNmWsnOyWhM8h5LMVNb5w==
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,26 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEWjCCA0KgAwIBAgIVAL6KQp4q0lBnlTg3fdk1VWh02squMA0GCSqGSIb3DQEB
3
+ BQUAMF4xCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhJbGxpbm9pczEQMA4GA1UEBwwH
4
+ Q2hpY2FnbzEYMBYGA1UECgwPUnVieSBDQSBQcm9qZWN0MRAwDgYDVQQDDAdUZXN0
5
+ IENBMB4XDTEyMDEwNjEwMjYyNloXDTIyMDEwMzE2MjYyNlowYDELMAkGA1UEBhMC
6
+ VVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdDaGljYWdvMREwDwYDVQQK
7
+ DAhyNTA5IExMQzEZMBcGA1UEAwwQcjUwOSBPQ1NQIFNpZ25lcjCCASIwDQYJKoZI
8
+ hvcNAQEBBQADggEPADCCAQoCggEBAL1bj6l9fXWxFxdXIlzRewUKcMIjSvehpL5j
9
+ CJ/7AqejfsV6K1all9CgOoXF1j7fAT8IkcuwcIQaq3zAV1vXxYtHRiWlQfYeXSWq
10
+ zwQ8WzBAzIa6HRMZxtjbFzfrAPWEKRNyOlF/R98+VTD2MCRbbeVPLRkOtzHuiG0x
11
+ ap+vVbGG7bO+kt8cRthVdYm1gkIP4Ox7cSi+JAR9JsZL1kk+QhIgU9BKE4BS0ior
12
+ jC/FXHd6l3ub1DCoKPr5lw16MpmLwhjnn0myAy6Fr4eTAr69vDoA/KtoszFWO2Ea
13
+ QsW0rJcRjwKAfliBQu1bVzfhBEpo2fFwjH9ydxp7NWHIf+/y1yECAwEAAaOCAQsw
14
+ ggEHMAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwkwHQYDVR0OBBYE
15
+ FE7QZeVFxt67S7tR1FuFGA+DjTiMMIGQBgNVHSMEgYgwgYWAFHl1u4Q6yyzeegm+
16
+ MRtDvBwqTVNYoWKkYDBeMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMx
17
+ EDAOBgNVBAcMB0NoaWNhZ28xGDAWBgNVBAoMD1J1YnkgQ0EgUHJvamVjdDEQMA4G
18
+ A1UEAwwHVGVzdCBDQYIJAP/ZxwuHN9GUMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6
19
+ Ly9jcmwucjUwOS5vcmcvdGVzdF9jYS5jcmwwDQYJKoZIhvcNAQEFBQADggEBAAGM
20
+ Zg+p84GjC0gzeQZROqS6s4GDJgRn0/kEpnSQO8wDsjLjyyzbW8xIyX9w1EdVaSS8
21
+ mTe/oZ9SvMS8ONHlINyQtM0GuS6OOxtEQcx5/IJxdC+TDXQ27TvBgNg2KUIWxDgG
22
+ 9V18jdS/fV3pDFbUfulGciQkUrReCjchM52XUg0mb13VCCLjEUETPVYV6akOgglM
23
+ Lg22je3F6fiEctwHHMABv6fOSrKa3Qg0SCx1WA+uHLnrLjc5vYljAzvQYz8UywoS
24
+ RBnW6UInYvBs6KZmWv9acWGew3pQLOp0+FOrvgnxLWG7D4QuMulaYgKP1cpValmU
25
+ iCkw4FfJqeDBTxrenF4=
26
+ -----END CERTIFICATE-----