r509-ocsp-responder 0.3.1

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 (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-----