changed CHANGELOG.md
 
@@ -1,5 +1,19 @@
1
1
# Changes
2
2
3
+ ## v0.6.0
4
+
5
+ ### Enhancements
6
+
7
+ * [X509.PrivateKey] Allow encryption of PEM output
8
+ * [X509.Test.Suite] Include 'localhost' in all certifictes
9
+ * [X509.Test.Suite] Generate client certificate and associated key
10
+ * [X509.Test.Server] Add 'client-cert' endpoint for testing with client
11
+ certificate
12
+ * [`x509.gen.suite` Mix task] Add --force option
13
+ * [`x509.gen.suite` Mix task] Add --password option
14
+ * [`x509.gen.suite` Mix task] Generate 'ca_and_chain.pem' file
15
+ * [`x509.gen.selfsigned` Mix task] Add --force option
16
+
3
17
## v0.5.4
4
18
5
19
### Enhancements
changed hex_metadata.config
 
@@ -19,22 +19,10 @@
19
19
<<"lib/x509/certificate.ex">>,<<"lib/x509/signature_algorithm.ex">>,
20
20
<<"lib/x509/date_time.ex">>,<<"lib/x509/rdn_sequence.ex">>,
21
21
<<"lib/x509/public_key.ex">>,<<"lib/x509/asn1.ex">>,<<"lib/x509/csr.ex">>,
22
- <<"priv">>,<<"priv/cert">>,<<"priv/cert/all.pem">>,<<"priv/cert/key.pem">>,
23
- <<"priv/cert/cert.pem">>,<<"priv/cert/selfsigned_key.pem">>,
24
- <<"priv/cert/suite">>,<<"priv/cert/suite/chain.pem">>,
25
- <<"priv/cert/suite/expired_chain.pem">>,<<"priv/cert/suite/revoked.pem">>,
26
- <<"priv/cert/suite/alternate_chain.pem">>,<<"priv/cert/suite/root.crl">>,
27
- <<"priv/cert/suite/revoked_chain.pem">>,<<"priv/cert/suite/expired.pem">>,
28
- <<"priv/cert/suite/cross_signer_root_ca.crl">>,
29
- <<"priv/cert/suite/root_ca.crl">>,
30
- <<"priv/cert/suite/alternate_cacerts.pem">>,<<"priv/cert/suite/valid.pem">>,
31
- <<"priv/cert/suite/cacerts.pem">>,<<"priv/cert/suite/intermediate_ca.crl">>,
32
- <<"priv/cert/suite/wildcard.pem">>,<<"priv/cert/suite/selfsigned.pem">>,
33
- <<"priv/cert/suite/server_key.pem">>,<<"priv/cert/suite/other_key.pem">>,
34
- <<"priv/cert/selfsigned.pem">>,<<".formatter.exs">>,<<"mix.exs">>,
35
- <<"README.md">>,<<"LICENSE">>,<<"CHANGELOG.md">>]}.
22
+ <<"priv">>,<<".formatter.exs">>,<<"mix.exs">>,<<"README.md">>,<<"LICENSE">>,
23
+ <<"CHANGELOG.md">>]}.
36
24
{<<"licenses">>,[<<"BSD 3-Clause">>]}.
37
25
{<<"links">>,[{<<"GitHub">>,<<"https://github.com/voltone/x509">>}]}.
38
26
{<<"name">>,<<"x509">>}.
39
27
{<<"requirements">>,[]}.
40
- {<<"version">>,<<"0.5.4">>}.
28
+ {<<"version">>,<<"0.6.0">>}.
changed lib/mix/tasks/x509.gen.selfsigned.ex
 
@@ -39,6 +39,8 @@ defmodule Mix.Tasks.X509.Gen.Selfsigned do
39
39
key (default: #{@default_path})
40
40
* `--name` (`-n`): the Common Name value in certificate's subject
41
41
(default: "#{@default_name}")
42
+ * `--force` (`-f`): overwite existing files without prompting for
43
+ confirmation
42
44
43
45
Requires OTP 20 or later.
44
46
"""
 
@@ -51,12 +53,13 @@ defmodule Mix.Tasks.X509.Gen.Selfsigned do
51
53
{opts, args} =
52
54
OptionParser.parse!(
53
55
all_args,
54
- aliases: [n: :name, o: :output],
55
- strict: [name: :string, output: :string]
56
+ aliases: [n: :name, o: :output, f: :force],
57
+ strict: [name: :string, output: :string, force: :boolean]
56
58
)
57
59
58
60
path = opts[:output] || @default_path
59
61
name = opts[:name] || @default_name
62
+ force = opts[:force] || false
60
63
61
64
hostnames =
62
65
case args do
 
@@ -69,8 +72,8 @@ defmodule Mix.Tasks.X509.Gen.Selfsigned do
69
72
keyfile = path <> "_key.pem"
70
73
certfile = path <> ".pem"
71
74
72
- create_file(keyfile, X509.PrivateKey.to_pem(private_key))
73
- create_file(certfile, X509.Certificate.to_pem(certificate))
75
+ create_file(keyfile, X509.PrivateKey.to_pem(private_key), force: force)
76
+ create_file(certfile, X509.Certificate.to_pem(certificate), force: force)
74
77
75
78
print_shell_instructions(keyfile, certfile)
76
79
end
changed lib/mix/tasks/x509.gen.suite.ex
 
@@ -29,10 +29,14 @@ defmodule Mix.Tasks.X509.Gen.Suite do
29
29
30
30
Other (optional) arguments:
31
31
32
+ * '--password' ('-p'): if set, an encrypted, password protected version of
33
+ each private key will be created
32
34
* `--crlserver` (`-c`): the base URL for the CRL server to be used for
33
35
CRL distribution points
34
36
* `--output` (`-o`): the path where the certificates and keys should be
35
37
stored (default: #{@default_path})
38
+ * `--force` (`-f`): overwite existing files without prompting for
39
+ confirmation
36
40
37
41
Requires OTP 20 or later.
38
42
"""
 
@@ -45,12 +49,14 @@ defmodule Mix.Tasks.X509.Gen.Suite do
45
49
{opts, args} =
46
50
OptionParser.parse!(
47
51
all_args,
48
- aliases: [c: :crlserver, o: :output],
49
- strict: [crlserver: :string, output: :string]
52
+ aliases: [p: :password, c: :crlserver, o: :output, f: :force],
53
+ strict: [password: :string, crlserver: :string, output: :string, force: :boolean]
50
54
)
51
55
52
56
path = opts[:output] || @default_path
57
+ password = opts[:password]
53
58
crl_opts = [crl_server: opts[:crlserver]]
59
+ force = opts[:force] || false
54
60
55
61
suite_opts =
56
62
case args do
 
@@ -60,65 +66,107 @@ defmodule Mix.Tasks.X509.Gen.Suite do
60
66
61
67
suite = X509.Test.Suite.new(suite_opts)
62
68
63
- create_file(Path.join(path, "server_key.pem"), X509.PrivateKey.to_pem(suite.server_key))
64
- create_file(Path.join(path, "other_key.pem"), X509.PrivateKey.to_pem(suite.other_key))
69
+ server_key_pem = X509.PrivateKey.to_pem(suite.server_key)
70
+ create_file(Path.join(path, "server_key.pem"), server_key_pem, force: force)
65
71
66
- create_file(
67
- Path.join(path, "cacerts.pem"),
72
+ if password do
73
+ server_key_enc_pem = X509.PrivateKey.to_pem(suite.server_key, password: password)
74
+ create_file(Path.join(path, "server_key_enc.pem"), server_key_enc_pem, force: force)
75
+ end
76
+
77
+ other_key_pem = X509.PrivateKey.to_pem(suite.other_key)
78
+ create_file(Path.join(path, "other_key.pem"), other_key_pem, force: force)
79
+
80
+ if password do
81
+ other_key_enc_pem = X509.PrivateKey.to_pem(suite.other_key, password: password)
82
+ create_file(Path.join(path, "other_key_enc.pem"), other_key_enc_pem, force: force)
83
+ end
84
+
85
+ client_key_pem = X509.PrivateKey.to_pem(suite.client_key)
86
+ create_file(Path.join(path, "client_key.pem"), client_key_pem, force: force)
87
+
88
+ if password do
89
+ client_key_enc_pem = X509.PrivateKey.to_pem(suite.client_key, password: password)
90
+ create_file(Path.join(path, "client_key_enc.pem"), client_key_enc_pem, force: force)
91
+ end
92
+
93
+ cacerts_pem =
68
94
suite.cacerts
69
95
|> Enum.map(&X509.Certificate.from_der!/1)
70
96
|> Enum.map(&X509.Certificate.to_pem/1)
71
97
|> Enum.join()
72
- )
73
98
74
- create_file(
75
- Path.join(path, "alternate_cacerts.pem"),
99
+ create_file(Path.join(path, "cacerts.pem"), cacerts_pem, force: force)
100
+
101
+ alternate_cacerts_pem =
76
102
suite.alternate_cacerts
77
103
|> Enum.map(&X509.Certificate.from_der!/1)
78
104
|> Enum.map(&X509.Certificate.to_pem/1)
79
105
|> Enum.join()
80
- )
81
106
82
- create_file(
83
- Path.join(path, "chain.pem"),
107
+ create_file(Path.join(path, "alternate_cacerts.pem"), alternate_cacerts_pem, force: force)
108
+
109
+ chain_pem =
84
110
suite.chain
85
111
|> Enum.map(&X509.Certificate.from_der!/1)
86
112
|> Enum.map(&X509.Certificate.to_pem/1)
87
113
|> Enum.join()
88
- )
89
114
90
- create_file(
91
- Path.join(path, "expired_chain.pem"),
115
+ create_file(Path.join(path, "chain.pem"), chain_pem, force: force)
116
+
117
+ ca_and_chain_pem =
118
+ (suite.cacerts ++ suite.chain)
119
+ |> Enum.map(&X509.Certificate.from_der!/1)
120
+ |> Enum.map(&X509.Certificate.to_pem/1)
121
+ |> Enum.join()
122
+
123
+ create_file(Path.join(path, "ca_and_chain.pem"), ca_and_chain_pem, force: force)
124
+
125
+ expired_chain_pem =
92
126
suite.expired_chain
93
127
|> Enum.map(&X509.Certificate.from_der!/1)
94
128
|> Enum.map(&X509.Certificate.to_pem/1)
95
129
|> Enum.join()
96
- )
97
130
98
- create_file(
99
- Path.join(path, "revoked_chain.pem"),
131
+ create_file(Path.join(path, "expired_chain.pem"), expired_chain_pem, force: force)
132
+
133
+ revoked_chain_pem =
100
134
suite.revoked_chain
101
135
|> Enum.map(&X509.Certificate.from_der!/1)
102
136
|> Enum.map(&X509.Certificate.to_pem/1)
103
137
|> Enum.join()
104
- )
105
138
106
- create_file(
107
- Path.join(path, "alternate_chain.pem"),
139
+ create_file(Path.join(path, "revoked_chain.pem"), revoked_chain_pem, force: force)
140
+
141
+ alternate_chain_pem =
108
142
suite.alternate_chain
109
143
|> Enum.map(&X509.Certificate.from_der!/1)
110
144
|> Enum.map(&X509.Certificate.to_pem/1)
111
145
|> Enum.join()
112
- )
113
146
114
- create_file(Path.join(path, "valid.pem"), X509.Certificate.to_pem(suite.valid))
115
- create_file(Path.join(path, "wildcard.pem"), X509.Certificate.to_pem(suite.wildcard))
116
- create_file(Path.join(path, "expired.pem"), X509.Certificate.to_pem(suite.expired))
117
- create_file(Path.join(path, "revoked.pem"), X509.Certificate.to_pem(suite.revoked))
118
- create_file(Path.join(path, "selfsigned.pem"), X509.Certificate.to_pem(suite.selfsigned))
147
+ create_file(Path.join(path, "alternate_chain.pem"), alternate_chain_pem, force: force)
148
+
149
+ valid_pem = X509.Certificate.to_pem(suite.valid)
150
+ create_file(Path.join(path, "valid.pem"), valid_pem, force: force)
151
+
152
+ wildcard_pem = X509.Certificate.to_pem(suite.wildcard)
153
+ create_file(Path.join(path, "wildcard.pem"), wildcard_pem, force: force)
154
+
155
+ expired_pem = X509.Certificate.to_pem(suite.expired)
156
+ create_file(Path.join(path, "expired.pem"), expired_pem, force: force)
157
+
158
+ revoked_pem = X509.Certificate.to_pem(suite.revoked)
159
+ create_file(Path.join(path, "revoked.pem"), revoked_pem, force: force)
160
+
161
+ selfsigned_pem = X509.Certificate.to_pem(suite.selfsigned)
162
+ create_file(Path.join(path, "selfsigned.pem"), selfsigned_pem, force: force)
163
+
164
+ client_pem = X509.Certificate.to_pem(suite.client)
165
+ create_file(Path.join(path, "client.pem"), client_pem, force: force)
119
166
120
167
for {name, crl} <- suite.crls do
121
- create_file(Path.join(path, name), X509.CRL.to_der(crl))
168
+ crl_der = X509.CRL.to_der(crl)
169
+ create_file(Path.join(path, name), crl_der, force: force)
122
170
end
123
171
124
172
print_shell_instructions(path)
changed lib/mix/tasks/x509.test_server.ex
 
@@ -43,6 +43,10 @@ defmodule Mix.Tasks.X509.TestServer do
43
43
alternate_cacertfile = write_cacerts!("alternate_cacerts.pem", suite.alternate_cacerts)
44
44
Mix.shell().info("Secondary CA certificate store: #{alternate_cacertfile}")
45
45
46
+ client_certfile = write_cert!("client.pem", suite.client)
47
+ write_key!("client_key.pem", suite.client_key)
48
+ Mix.shell().info("Client certificate and key: #{client_certfile} / [...]/client_key.pem")
49
+
46
50
# Update the CRL server with the generated CRLs
47
51
suite.crls
48
52
|> Enum.each(fn {path, crl} ->
 
@@ -78,6 +82,18 @@ defmodule Mix.Tasks.X509.TestServer do
78
82
path
79
83
end
80
84
85
+ defp write_cert!(filename, cert) do
86
+ path = Path.join(System.tmp_dir!(), filename)
87
+ File.write!(path, X509.Certificate.to_pem(cert))
88
+ path
89
+ end
90
+
91
+ defp write_key!(filename, key) do
92
+ path = Path.join(System.tmp_dir!(), filename)
93
+ File.write!(path, X509.PrivateKey.to_pem(key))
94
+ path
95
+ end
96
+
81
97
defp certificate_der_to_pem(der) do
82
98
der
83
99
|> X509.Certificate.from_der!()
changed lib/x509/private_key.ex
 
@@ -145,6 +145,8 @@ defmodule X509.PrivateKey do
145
145
146
146
* `:wrap` - Wrap the private key in a PKCS#8 PrivateKeyInfo container
147
147
(default: `false`)
148
+ * `:password` - If a password is specified, the private key is encrypted
149
+ using 3DES; to password will be required to decode the PEM entry
148
150
"""
149
151
@spec to_pem(t(), Keyword.t()) :: String.t()
150
152
def to_pem(private_key, opts \\ []) do
 
@@ -154,7 +156,7 @@ defmodule X509.PrivateKey do
154
156
else
155
157
private_key
156
158
end
157
- |> pem_entry_encode()
159
+ |> pem_entry_encode(Keyword.get(opts, :password))
158
160
|> List.wrap()
159
161
|> :public_key.pem_encode()
160
162
end
 
@@ -277,15 +279,35 @@ defmodule X509.PrivateKey do
277
279
:public_key.der_encode(:PrivateKeyInfo, private_key_info)
278
280
end
279
281
280
- defp pem_entry_encode(rsa_private_key() = rsa_private_key) do
282
+ defp pem_entry_encode(rsa_private_key() = rsa_private_key, nil) do
281
283
:public_key.pem_entry_encode(:RSAPrivateKey, rsa_private_key)
282
284
end
283
285
284
- defp pem_entry_encode(ec_private_key() = ec_private_key) do
286
+ defp pem_entry_encode(ec_private_key() = ec_private_key, nil) do
285
287
:public_key.pem_entry_encode(:ECPrivateKey, ec_private_key)
286
288
end
287
289
288
- defp pem_entry_encode(private_key_info() = private_key_info) do
290
+ defp pem_entry_encode(private_key_info() = private_key_info, nil) do
289
291
:public_key.pem_entry_encode(:PrivateKeyInfo, private_key_info)
290
292
end
293
+
294
+ defp pem_entry_encode(private_key, password) when is_binary(password) do
295
+ pem_entry_encode(private_key, to_charlist(password))
296
+ end
297
+
298
+ defp pem_entry_encode(rsa_private_key() = rsa_private_key, password) do
299
+ :public_key.pem_entry_encode(:RSAPrivateKey, rsa_private_key, {cipher_info(), password})
300
+ end
301
+
302
+ defp pem_entry_encode(ec_private_key() = ec_private_key, password) do
303
+ :public_key.pem_entry_encode(:ECPrivateKey, ec_private_key, {cipher_info(), password})
304
+ end
305
+
306
+ defp pem_entry_encode(private_key_info() = private_key_info, password) do
307
+ :public_key.pem_entry_encode(:PrivateKeyInfo, private_key_info, {cipher_info(), password})
308
+ end
309
+
310
+ defp cipher_info() do
311
+ {'DES-EDE3-CBC', :crypto.strong_rand_bytes(8)}
312
+ end
291
313
end
changed lib/x509/test/suite.ex
 
@@ -59,6 +59,8 @@ defmodule X509.Test.Suite do
59
59
* `selfsigned-wrong-host` - presenting a self-signed server certificate with
60
60
a SAN hostname that does not match; should be rejected unless peer
61
61
verification is disabled
62
+
63
+ * `client-cert` - requires that the client present a valid certificate
62
64
"""
63
65
64
66
require Logger
 
@@ -79,6 +81,8 @@ defmodule X509.Test.Suite do
79
81
:expired,
80
82
:revoked,
81
83
:selfsigned,
84
+ :client,
85
+ :client_key,
82
86
:crls
83
87
]
84
88
 
@@ -88,6 +92,7 @@ defmodule X509.Test.Suite do
88
92
{:rsa, non_neg_integer()} | {:ec, :crypto.ec_named_curve() | :public_key.oid()},
89
93
server_key: X509.PrivateKey.t(),
90
94
other_key: X509.PrivateKey.t(),
95
+ client_key: X509.PrivateKey.t(),
91
96
cacerts: [binary()],
92
97
alternate_cacerts: [binary()],
93
98
chain: [binary()],
 
@@ -99,6 +104,7 @@ defmodule X509.Test.Suite do
99
104
expired: X509.Certificate.t(),
100
105
revoked: X509.Certificate.t(),
101
106
selfsigned: X509.Certificate.t(),
107
+ client: X509.Certificate.t(),
102
108
crls: %{String.t() => X509.CRL.t()}
103
109
}
104
110
 
@@ -139,6 +145,7 @@ defmodule X509.Test.Suite do
139
145
server_key = new_key(key_type)
140
146
other_key = new_key(key_type)
141
147
cross_signer_root_ca_key = new_key(key_type)
148
+ client_key = new_key(key_type)
142
149
143
150
# CA certificates
144
151
root_ca =
 
@@ -220,11 +227,13 @@ defmodule X509.Test.Suite do
220
227
[
221
228
subject_alt_name:
222
229
X509.Certificate.Extension.subject_alt_name([
230
+ "localhost",
223
231
"valid.#{domain}",
224
232
"valid-missing-chain.#{domain}",
225
233
"valid-revoked-chain.#{domain}",
226
234
"valid-wrong-key.#{domain}",
227
- "valid-cross-signed.#{domain}"
235
+ "valid-cross-signed.#{domain}",
236
+ "client-cert.#{domain}"
228
237
])
229
238
] ++ crl_extensions(crl_server, "intermediate_ca.crl")
230
239
)
 
@@ -240,6 +249,7 @@ defmodule X509.Test.Suite do
240
249
[
241
250
subject_alt_name:
242
251
X509.Certificate.Extension.subject_alt_name([
252
+ "*.localhost",
243
253
"*.wildcard.#{domain}"
244
254
])
245
255
] ++ crl_extensions(crl_server, "intermediate_ca.crl")
 
@@ -257,6 +267,7 @@ defmodule X509.Test.Suite do
257
267
[
258
268
subject_alt_name:
259
269
X509.Certificate.Extension.subject_alt_name([
270
+ "localhost",
260
271
"expired.#{domain}"
261
272
])
262
273
] ++ crl_extensions(crl_server, "intermediate_ca.crl")
 
@@ -273,6 +284,7 @@ defmodule X509.Test.Suite do
273
284
[
274
285
subject_alt_name:
275
286
X509.Certificate.Extension.subject_alt_name([
287
+ "localhost",
276
288
"revoked.#{domain}"
277
289
])
278
290
] ++ crl_extensions(crl_server, "intermediate_ca.crl")
 
@@ -287,12 +299,22 @@ defmodule X509.Test.Suite do
287
299
extensions: [
288
300
subject_alt_name:
289
301
X509.Certificate.Extension.subject_alt_name([
302
+ "localhost",
290
303
"selfsigned.#{domain}",
291
304
"selfsigned-wrong-key.#{domain}"
292
305
])
293
306
]
294
307
)
295
308
309
+ client =
310
+ client_key
311
+ |> X509.PublicKey.derive()
312
+ |> X509.Certificate.new(
313
+ "/O=#{__MODULE__}/CN=Client",
314
+ intermediate_ca,
315
+ intermediate_ca_key
316
+ )
317
+
296
318
# CRLs
297
319
298
320
crls =
 
@@ -336,6 +358,7 @@ defmodule X509.Test.Suite do
336
358
key_type: key_type,
337
359
server_key: server_key,
338
360
other_key: other_key,
361
+ client_key: client_key,
339
362
cacerts: [X509.Certificate.to_der(root_ca)],
340
363
alternate_cacerts: [X509.Certificate.to_der(cross_signer_root_ca)],
341
364
chain: [X509.Certificate.to_der(intermediate_ca)],
 
@@ -350,6 +373,7 @@ defmodule X509.Test.Suite do
350
373
expired: expired,
351
374
revoked: revoked,
352
375
selfsigned: selfsigned,
376
+ client: client,
353
377
crls: crls
354
378
}
355
379
end
 
@@ -541,6 +565,19 @@ defmodule X509.Test.Suite do
541
565
]
542
566
end
543
567
568
+ def sni_handler(
569
+ %__MODULE__{valid: valid, chain: chain, server_key: server_key, cacerts: cacerts},
570
+ "client-cert"
571
+ ) do
572
+ [
573
+ cert: X509.Certificate.to_der(valid),
574
+ cacerts: chain ++ cacerts,
575
+ key: {:PrivateKeyInfo, X509.PrivateKey.to_der(server_key, wrap: true)},
576
+ verify: :verify_peer,
577
+ fail_if_no_peer_cert: true
578
+ ]
579
+ end
580
+
544
581
def sni_handler(
545
582
%__MODULE__{valid: valid, chain: chain, server_key: server_key},
546
583
scenario
changed mix.exs
 
@@ -1,7 +1,7 @@
1
1
defmodule X509.MixProject do
2
2
use Mix.Project
3
3
4
- @version "0.5.4"
4
+ @version "0.6.0"
5
5
6
6
def project do
7
7
[
removed priv/cert/all.pem
 
@@ -1,6 +0,0 @@
1
- -----BEGIN EC PRIVATE KEY-----
2
- MHcCAQEEIDZGVJuln/isMeKwf2KrP8yINBTUeUiRleGimWq9oVz4oAoGCCqGSM49
3
- AwEHoUQDQgAE3wJtFWTxYWk7I87P4cZwLLCBwkrIpn1TLip5XIgjUeDtbqkXqdY+
4
- HARx0NwV/E2Ns256ZIu7m9psPzOkAfT+/Q==
5
- -----END EC PRIVATE KEY-----
6
-
removed priv/cert/cert.pem
 
@@ -1,12 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIBkTCCATegAwIBAgIJAP59IsUBfuKKMAoGCCqGSM49BAMCMA8xDTALBgNVBAMM
3
- BFRlc3QwHhcNMTgxMTI0MTMxODUzWhcNMTkxMjI0MTMyMzUzWjAPMQ0wCwYDVQQD
4
- DARUZXN0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3wJtFWTxYWk7I87P4cZw
5
- LLCBwkrIpn1TLip5XIgjUeDtbqkXqdY+HARx0NwV/E2Ns256ZIu7m9psPzOkAfT+
6
- /aN8MHowCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
7
- BQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBTh4mqsktWAK4nXGUri1rKt+xpdWTAf
8
- BgNVHSMEGDAWgBTh4mqsktWAK4nXGUri1rKt+xpdWTAKBggqhkjOPQQDAgNIADBF
9
- AiEAtxEXOaiflM5H+5h6GYzVrTCEnXV2/FgIaQHS2DAtkEwCIEZUqxesWa5Z5ZHS
10
- MIdtYS1pG5xnyn4Iu0zgfhyyBHbm
11
- -----END CERTIFICATE-----
12
-
removed priv/cert/key.pem
 
@@ -1,6 +0,0 @@
1
- -----BEGIN EC PRIVATE KEY-----
2
- MHcCAQEEIDZGVJuln/isMeKwf2KrP8yINBTUeUiRleGimWq9oVz4oAoGCCqGSM49
3
- AwEHoUQDQgAE3wJtFWTxYWk7I87P4cZwLLCBwkrIpn1TLip5XIgjUeDtbqkXqdY+
4
- HARx0NwV/E2Ns256ZIu7m9psPzOkAfT+/Q==
5
- -----END EC PRIVATE KEY-----
6
-
removed priv/cert/selfsigned.pem
 
@@ -1,22 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDcTCCAlmgAwIBAgIIXm8efHmXlIcwDQYJKoZIhvcNAQELBQAwJzElMCMGA1UE
3
- AwwcU2VsZi1zaWduZWQgdGVzdCBjZXJ0aWZpY2F0ZTAeFw0xOTAzMTcwNzU0MjBa
4
- Fw0yMDA0MTUwNzU5MjBaMCcxJTAjBgNVBAMMHFNlbGYtc2lnbmVkIHRlc3QgY2Vy
5
- dGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT+u/idxxc
6
- /RHY6Ynba3k70sBLuwWpmGwN1fCDgT8qCf5GFHessVFY1yl+MxtvysX6XxX3Ci4e
7
- s0wsidH5HXeE4oITzMDY0grbdKdknznfwRMeWQXH1ZYYwqwXn8tkHKr5bQdFPW3+
8
- ZXh9gExS6lg02BUH3gOG8RLPN5YEAZEsB0vnSq9MBcNBiwClO756wTonAzbTaoaa
9
- 05YcCzQ6gS6UauD5XGvZHrlqUXT7k1X8qbXArEVz3aLMT0KHisxAJV0G3pFuYZFR
10
- U67vjfeNccqdnoiUmDndxQ28R6DP5yxQNq1pnzziFwHoo2rgKBQXJy2crlaGHK/H
11
- 4+l5qU58nndDAgMBAAGjgaAwgZ0wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBaAw
12
- HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBSnjJr/iKDs
13
- K3IFIpE8wN04unSoljAfBgNVHSMEGDAWgBSnjJr/iKDsK3IFIpE8wN04unSoljAh
14
- BgNVHREEGjAYghZzZWxmc2lnbmVkLnZvbHRvbmUubmV0MA0GCSqGSIb3DQEBCwUA
15
- A4IBAQCRTrjyELVI7Egrg5i+usOSoy8rlPBqidZMCmiUgnbjygsIck0usbAtk7gQ
16
- bVZ7S8VIcGx98FKr8Rn8wMPmHRKV5QW7h7PJlm0gzZRWNe2vedf+ZQCz/erURX0O
17
- DP3wN7psxkVsO6hQXg3P2OLPR5Qe3hzVgox1YLjy4pNjciHgqOxBZbq91CYvCvRP
18
- 4up5Exwdm1JCTZQuG2DfaY41H2BFF9KPFQgze0pyJgxKmfYCXwoWrZaeybz6jseI
19
- bL8AMEzEKZvDLbfY2A23Q+y9UZV/9n1OCsMNWVBU+vJiRtjlmlPEEtghNH5etNRu
20
- K7Anj/eSc6s0mY9pP9VgJW2Nyiov
21
- -----END CERTIFICATE-----
22
-
removed priv/cert/selfsigned_key.pem
 
@@ -1,28 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpQIBAAKCAQEA0/rv4nccXP0R2OmJ22t5O9LAS7sFqZhsDdXwg4E/Kgn+RhR3
3
- rLFRWNcpfjMbb8rF+l8V9wouHrNMLInR+R13hOKCE8zA2NIK23SnZJ8538ETHlkF
4
- x9WWGMKsF5/LZByq+W0HRT1t/mV4fYBMUupYNNgVB94DhvESzzeWBAGRLAdL50qv
5
- TAXDQYsApTu+esE6JwM202qGmtOWHAs0OoEulGrg+Vxr2R65alF0+5NV/Km1wKxF
6
- c92izE9Ch4rMQCVdBt6RbmGRUVOu7433jXHKnZ6IlJg53cUNvEegz+csUDataZ88
7
- 4hcB6KNq4CgUFyctnK5Whhyvx+PpealOfJ53QwIDAQABAoIBAQCokrSzfo9Sr3nC
8
- 6q1TjZsiZM3BK6AsJ2c+dXTHzz+A2eOYrWwiK/yJzslTb6cQ9ssL+RPJmhHlHiak
9
- gJE3LyS9yzcwMbLmedpifNklXq4ybyMaDidXrFWpqR4bx1qCaX3ZzsdqW5ieJulz
10
- vFR116B/nZrT380kQY/4s7abxvdAb7Y+lv1oR3qmiB9boksnIlbz5WFGHyTmKMOg
11
- MlAE93bdhzctzMXZxahREIuWFeTgak2aQFeyqzFwhxY0vLFoJq1G3eb5TSuckGu0
12
- 0DecHIja5VSVyOvwQ7LpQ5vsZj0GfCmAjsuqIhodBw5RIssk7zBidbdGzB04iQnG
13
- 9UobGDNJAoGBAPGfbrQSsT/ScCvrxr9T4BM6htBT7MEtVgTIs/mfCjJmMKGywJHs
14
- Kqoi7d2KSH77tOJ/sN/cB50932g7kbDk8rsqJwaSDs+oJXbLTv3uX2Of2wcNFw1K
15
- d0rfJYhi66YhaFxgjeZ9+lG/Dw4qr2Cx3q1V/inBjmynxnMWupW3C6NPAoGBAOCX
16
- 9+a8DKukzyCbSgC2OEQxgM9/+bxiF2JGAUCxIR0nsHEWrXAjNsjA3TSH6i5kXXJD
17
- X9uavVQTlGZFTFIdwz6+ooUNukrmM9UZalTZzeO5oMpTMGRvHR3Vrdi09midIk1q
18
- qIsRZk2uO5woFAwN2jl8Wf/mGlkgzS8GSpiRD//NAoGAH+yTwOETYD5aqcLuMItR
19
- eNjrxQzBpEhsLBekh9+2hjAwTr0CaoVMocwZp4LEz1pMbPy4DuvQabsqEGiGeFvX
20
- olkQbPLRWCh8QrTcC/r5yXzugID/QbdMCa1wFRQU1I9nbYUoWoLclv5qa9HB+EGo
21
- DTjmavfy7HJCayRepLdZp0sCgYEAiYAgko+QhklJUeIgpVzqB73y6ZalE5NOU6ke
22
- PTf0WQAigqnqlxvH/5IsG2wWkD58A2eCOVV8EgxGr3I/ropwLWrS3vivlAlptE5y
23
- De6moYPVD+lsWCC6x7g5TdJEhXmmNZVWCIYnhuljr0/OLi8Q6l7aTtPWT7jIRcDp
24
- TIyLKgUCgYEAgUFz4sfOo5R0t9457hWvrl+0TzJLXkepbLVu2T/5asQYamcitzMs
25
- tui6VKAJonIxozxriZow9mmJszoDXUANGgCdr97c1YIfiKWSqx3g3KpIxr1mAgV2
26
- bInSxHJg4CJB6d6My3r9Ue/TTSXl17E88p/5KqDMtBKDPofaX+WJ3p4=
27
- -----END RSA PRIVATE KEY-----
28
-
removed priv/cert/suite/alternate_cacerts.pem
 
@@ -1,16 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICYjCCAcugAwIBAgIJAId0ydzr0h8EMA0GCSqGSIb3DQEBCwUAMD8xHzAdBgNV
3
- BAoMFkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxHDAaBgNVBAMME0FsdGVybmF0aXZl
4
- IFJvb3QgQ0EwHhcNMTgxMTA0MTkyMTAyWhcNNDMxMTA0MTkyNjAyWjA/MR8wHQYD
5
- VQQKDBZFbGl4aXIuWDUwOS5UZXN0LlN1aXRlMRwwGgYDVQQDDBNBbHRlcm5hdGl2
6
- ZSBSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCzy9CSIY2k8Qj4
7
- HdfXAONJ6m5OAT39FDRby1JNjsKejf33qZDYPv531+PatOel6kBvc6OUGNO5ltqs
8
- PgIeuKS8MLWvn+1sJjnAgTg2PrTWO4z0XndVwKnYT+ht3oa56z2A7JjGQE/FjdjE
9
- 2Jow7Zt7NES/NNncktSnRVUxDe2NJQIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAYYw
10
- HQYDVR0OBBYEFMyQsqkgzAOxVFTXOwTGEibqNj/oMB8GA1UdIwQYMBaAFMyQsqkg
11
- zAOxVFTXOwTGEibqNj/oMBIGA1UdEwEB/wQIMAYBAf8CAQIwDQYJKoZIhvcNAQEL
12
- BQADgYEACD9/eOYxGD+oDXwi3KLC5DmnqeVrFxqpqU/OD3wp1H7GgeXMfRlYX6xK
13
- YY66uhyw+TZGhbvhFFuJzTIgwUUKDJPE9MU7fFCwptmVwclosFJJTwddG0UIXQO/
14
- rMYWrG33L02BEmZ5ayXKMCugg2A4fZmLCYyZs+rKqhM/evmtANg=
15
- -----END CERTIFICATE-----
16
-
removed priv/cert/suite/alternate_chain.pem
 
@@ -1,34 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICcjCCAdugAwIBAgIIL6ZgSaorUAUwDQYJKoZIhvcNAQELBQAwMzEfMB0GA1UE
3
- CgwWRWxpeGlyLlg1MDkuVGVzdC5TdWl0ZTEQMA4GA1UEAwwHUm9vdCBDQTAeFw0x
4
- ODExMDQxOTIxMDJaFw0yODExMDMxOTI2MDJaMDsxHzAdBgNVBAoMFkVsaXhpci5Y
5
- NTA5LlRlc3QuU3VpdGUxGDAWBgNVBAMMD0ludGVybWVkaWF0ZSBDQTCBnzANBgkq
6
- hkiG9w0BAQEFAAOBjQAwgYkCgYEAud5hm1X9/ps3RFW6OD057iMhpCB5Eakf7/AR
7
- wQyiD9Y7z+w20BluX9VAf4bj83HOdyYZEZ4DFdYPB2KSfvj9rVcY3sV9qe3wu6C9
8
- v0SUbhx441vQSO5ZoRkzuQqNtNiwoF75b1MbMVxVHuQ0ky1dGf+Ppus4gjKg7/z9
9
- 8uFY/kECAwEAAaOBhjCBgzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE
10
- AwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFObY
11
- kf965xjT0W9nvyfYh3CeLSZQMB8GA1UdIwQYMBaAFAcjjanqE31rEFzTCtd8D1+V
12
- 2kRWMA0GCSqGSIb3DQEBCwUAA4GBABTwIJ9s9a3Rnu39b9P2iewXTWtE0ZRb0BdJ
13
- gY75Cng//cw5lSGT/zWTDU3xcKiDsDtacZiOZcBCg/A5B/j6sBCPbqbK1SNp1GIr
14
- X5TH/m/3dC/91Se6xJIBLOoDCHxqUzZ57CZPbgXSV/cFD19v6z1csMstX9+pfOwD
15
- J4LJSKCK
16
- -----END CERTIFICATE-----
17
-
18
- -----BEGIN CERTIFICATE-----
19
- MIICdzCCAeCgAwIBAgIJAKZB6xPkLCbnMA0GCSqGSIb3DQEBCwUAMD8xHzAdBgNV
20
- BAoMFkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxHDAaBgNVBAMME0FsdGVybmF0aXZl
21
- IFJvb3QgQ0EwHhcNMTgxMTA0MTkyMTAyWhcNMjgxMTAzMTkyNjAyWjAzMR8wHQYD
22
- VQQKDBZFbGl4aXIuWDUwOS5UZXN0LlN1aXRlMRAwDgYDVQQDDAdSb290IENBMIGf
23
- MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDn1Hk2SebSjuDrcfrQSEW2ykDz+Zmc
24
- W8lTGYjIF4FefVGBz2tV5vSnTrx7T+y07rfmSKteOkLaauB9Hq9zS4ZvJDyNdlzR
25
- vvG7tp4UzTgh5YwNRENeAEw/AKlLPCUqdSmV/NCSlSfcVsXGtP/EjBvVdqvNylaJ
26
- HY0o5BGsFfx0QQIDAQABo4GGMIGDMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAU
27
- BggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFAcjjanqE31rEFzTCtd8D1+V
28
- 2kRWMB8GA1UdIwQYMBaAFMyQsqkgzAOxVFTXOwTGEibqNj/oMBIGA1UdEwEB/wQI
29
- MAYBAf8CAQEwDQYJKoZIhvcNAQELBQADgYEAe09/h13Xb8gSR/wvKoep4K5xYxGv
30
- vXRLquEYNaokUvvyduRhUs+BAjV4EG9+eJi/1dPW40FvgVJDS3xuTBugjmG/prx6
31
- d8JbvgEGv/SU+O3l/Y0LYlj/HeCBKoDxQu26cm3gb/mYKcJT1AaCCJZ95ooYxwxQ
32
- ZbweXk2gapsnQ+c=
33
- -----END CERTIFICATE-----
34
-
removed priv/cert/suite/cacerts.pem
 
@@ -1,16 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICSTCCAbKgAwIBAgIIJlzKEu+hugowDQYJKoZIhvcNAQELBQAwMzEfMB0GA1UE
3
- CgwWRWxpeGlyLlg1MDkuVGVzdC5TdWl0ZTEQMA4GA1UEAwwHUm9vdCBDQTAeFw0x
4
- ODExMDQxOTIxMDJaFw00MzExMDQxOTI2MDJaMDMxHzAdBgNVBAoMFkVsaXhpci5Y
5
- NTA5LlRlc3QuU3VpdGUxEDAOBgNVBAMMB1Jvb3QgQ0EwgZ8wDQYJKoZIhvcNAQEB
6
- BQADgY0AMIGJAoGBAOfUeTZJ5tKO4Otx+tBIRbbKQPP5mZxbyVMZiMgXgV59UYHP
7
- a1Xm9KdOvHtP7LTut+ZIq146Qtpq4H0er3NLhm8kPI12XNG+8bu2nhTNOCHljA1E
8
- Q14ATD8AqUs8JSp1KZX80JKVJ9xWxca0/8SMG9V2q83KVokdjSjkEawV/HRBAgMB
9
- AAGjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgGGMB0GA1Ud
10
- DgQWBBQHI42p6hN9axBc0wrXfA9fldpEVjAfBgNVHSMEGDAWgBQHI42p6hN9axBc
11
- 0wrXfA9fldpEVjANBgkqhkiG9w0BAQsFAAOBgQDM0mi9WfHfQxKThf0ZnUJv2OVj
12
- bb6P5fcc+MIKXwhNSdcX68gYf/vgo9fWDnERINvR961ohmskK8tIt8p7CRqEwJHA
13
- GoEfebFGEAP2raRNXB7tMhV2LodP6DMDyxMdG2RITyGZSOob55T9OCFElfrc9ZBy
14
- aMkDuoNV7JBmy4dxLw==
15
- -----END CERTIFICATE-----
16
-
removed priv/cert/suite/chain.pem
 
@@ -1,17 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICcjCCAdugAwIBAgIIL6ZgSaorUAUwDQYJKoZIhvcNAQELBQAwMzEfMB0GA1UE
3
- CgwWRWxpeGlyLlg1MDkuVGVzdC5TdWl0ZTEQMA4GA1UEAwwHUm9vdCBDQTAeFw0x
4
- ODExMDQxOTIxMDJaFw0yODExMDMxOTI2MDJaMDsxHzAdBgNVBAoMFkVsaXhpci5Y
5
- NTA5LlRlc3QuU3VpdGUxGDAWBgNVBAMMD0ludGVybWVkaWF0ZSBDQTCBnzANBgkq
6
- hkiG9w0BAQEFAAOBjQAwgYkCgYEAud5hm1X9/ps3RFW6OD057iMhpCB5Eakf7/AR
7
- wQyiD9Y7z+w20BluX9VAf4bj83HOdyYZEZ4DFdYPB2KSfvj9rVcY3sV9qe3wu6C9
8
- v0SUbhx441vQSO5ZoRkzuQqNtNiwoF75b1MbMVxVHuQ0ky1dGf+Ppus4gjKg7/z9
9
- 8uFY/kECAwEAAaOBhjCBgzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE
10
- AwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFObY
11
- kf965xjT0W9nvyfYh3CeLSZQMB8GA1UdIwQYMBaAFAcjjanqE31rEFzTCtd8D1+V
12
- 2kRWMA0GCSqGSIb3DQEBCwUAA4GBABTwIJ9s9a3Rnu39b9P2iewXTWtE0ZRb0BdJ
13
- gY75Cng//cw5lSGT/zWTDU3xcKiDsDtacZiOZcBCg/A5B/j6sBCPbqbK1SNp1GIr
14
- X5TH/m/3dC/91Se6xJIBLOoDCHxqUzZ57CZPbgXSV/cFD19v6z1csMstX9+pfOwD
15
- J4LJSKCK
16
- -----END CERTIFICATE-----
17
-
removed priv/cert/suite/expired.pem
 
@@ -1,17 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICizCCAfSgAwIBAgIJAMs2jUtOhALQMA0GCSqGSIb3DQEBCwUAMDsxHzAdBgNV
3
- BAoMFkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxGDAWBgNVBAMMD0ludGVybWVkaWF0
4
- ZSBDQTAeFw0xODEyMDQxOTI2MDJaFw0xODExMDMxOTI2MDJaMDMxHzAdBgNVBAoM
5
- FkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxEDAOBgNVBAMMB0V4cGlyZWQwgZ8wDQYJ
6
- KoZIhvcNAQEBBQADgY0AMIGJAoGBAOKxTwkdVakTpK0UvZdtEQhjWys1JYKhyfs5
7
- tB0Zkpkv593qh5DTmqOgS0ZfsE2yz310/wfqyZI+JdlyoBh8rnq/vGUIuZGPFt52
8
- AAuUk0Rp/nnOngj/khCFaxZ9Y7RQL2gR7ydik24oGOApknQtuGtVja94fu12xDgi
9
- ey7qc4c9AgMBAAGjgZ4wgZswCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBaAwHQYD
10
- VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBSzaLjn9mOm7/Bg
11
- lT5Tz0jOgzf5eDAfBgNVHSMEGDAWgBTm2JH/eucY09FvZ78n2Idwni0mUDAfBgNV
12
- HREEGDAWghRleHBpcmVkLmxvY2FsdGVzdC5tZTANBgkqhkiG9w0BAQsFAAOBgQA5
13
- DapzjkqgnAyNt+Vtc8FDFH2eo4yncTvLR/Vp+Tr6zQ2ccUdHbNi9c2RnZFsk2gXH
14
- pL+Ra8zRDaT85Ph0xnK3MWXc12QPlZ1mG+p2/8zBqnD7MTG76CCb1rBLofPXFicl
15
- mH8Aq6CS/cONqOtcQOojnu8bI0KUDaDpNhPSXan7og==
16
- -----END CERTIFICATE-----
17
-
removed priv/cert/suite/expired_chain.pem
 
@@ -1,17 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICczCCAdygAwIBAgIJANafuMrnGmi3MA0GCSqGSIb3DQEBCwUAMDMxHzAdBgNV
3
- BAoMFkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxEDAOBgNVBAMMB1Jvb3QgQ0EwHhcN
4
- MTgxMjA0MTkyNjAyWhcNMTgxMTAzMTkyNjAyWjA7MR8wHQYDVQQKDBZFbGl4aXIu
5
- WDUwOS5UZXN0LlN1aXRlMRgwFgYDVQQDDA9JbnRlcm1lZGlhdGUgQ0EwgZ8wDQYJ
6
- KoZIhvcNAQEBBQADgY0AMIGJAoGBALneYZtV/f6bN0RVujg9Oe4jIaQgeRGpH+/w
7
- EcEMog/WO8/sNtAZbl/VQH+G4/NxzncmGRGeAxXWDwdikn74/a1XGN7Ffant8Lug
8
- vb9ElG4ceONb0EjuWaEZM7kKjbTYsKBe+W9TGzFcVR7kNJMtXRn/j6brOIIyoO/8
9
- /fLhWP5BAgMBAAGjgYYwgYMwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E
10
- BAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBTm
11
- 2JH/eucY09FvZ78n2Idwni0mUDAfBgNVHSMEGDAWgBQHI42p6hN9axBc0wrXfA9f
12
- ldpEVjANBgkqhkiG9w0BAQsFAAOBgQB4oxMPyRPK0D+Y9nKmT+2n9zUuS7GZG2lh
13
- RCB9I4ph/jdSyGjgtVKWk80iW7z1wJtCTfgrWmHS7l4YU5t0hDuiT/EuT/WI/sig
14
- D1y9fUL12Rr5GXTrUQIAKudvqLQLmlYzmFStD4UTVdHb88sLfwqgNYGAZv0ZaxOQ
15
- OsLUGjCO4A==
16
- -----END CERTIFICATE-----
17
-
removed priv/cert/suite/other_key.pem
 
@@ -1,16 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIICWwIBAAKBgQCoU01uDUUdrSooMroD9tsrSSRnmYycrlJGnxMtkjxTmb2uCXxg
3
- +I2qoR1dfxT50yyE8UiMlz+zApJHeJOXXP9Sb+feb3Z61K3NVtQHjSiPJIV7+nk0
4
- ub9kstAUQ023FE+ApBHttMgcjBJhKyRbKLRBQYHnsy6iohij5UrliXumXwIDAQAB
5
- AoGAB5RQrT7tuMteVZcLJziLX+SYPg389eUnkUSCcY/fJYiLsPV+Y0Nt5ZwBnX8m
6
- a6VloMrYkHQTCzV3br5wLuWiHXpxkxXQPjk4RrmBRo9DPceS+yO7YLvQiAK48sJw
7
- +R5ajGI/ZTuijXdtG12fjmhnvf/AzR5jIozSqlGZitoWeuECQQDbOll7BmGf/OYO
8
- oPCB8yYVzXXZttX+g5ugg519lDZn1mHW++MKpTFZjUFri0klj6SKljsfQIN/ovfa
9
- 0Av5fUJxAkEAxI8ymF4NG313IgeJKRFnxbImVlN2e/g43tv+anyOLaxTY7QlS1ZE
10
- HkHpHoJtBEH8RTVWEk2jmxxOloHALT49zwJALgdSQkJUvQKcSvX/iUlD9c/troh0
11
- 5bs8Mbdwma1EvwiEAl9gjBujAOpnkezsrrY6Fd71CtrAwUu2PnrwCLIEAQJAGpys
12
- o/Zv3d3xyDiu+FFz9E83Y46vRv+Ha5zraC1u7n4bWC9msTl/xXz0+/16lw38Ar7C
13
- 5X1/fhuqBDSS+U0o/wJAbFzse3lrMBwWjQMTZ0YR21KcH9MKMgZMnLfr+kWrOar9
14
- ZKKK5KBE1g5kUg9GOCxCsyGu9v16DXG5/Qx7PnvX0A==
15
- -----END RSA PRIVATE KEY-----
16
-
removed priv/cert/suite/revoked.pem
 
@@ -1,17 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICizCCAfSgAwIBAgIJAIeQzz22IvmzMA0GCSqGSIb3DQEBCwUAMDsxHzAdBgNV
3
- BAoMFkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxGDAWBgNVBAMMD0ludGVybWVkaWF0
4
- ZSBDQTAeFw0xODExMDQxOTIxMDJaFw0xOTEyMDQxOTI2MDJaMDMxHzAdBgNVBAoM
5
- FkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxEDAOBgNVBAMMB1Jldm9rZWQwgZ8wDQYJ
6
- KoZIhvcNAQEBBQADgY0AMIGJAoGBAOKxTwkdVakTpK0UvZdtEQhjWys1JYKhyfs5
7
- tB0Zkpkv593qh5DTmqOgS0ZfsE2yz310/wfqyZI+JdlyoBh8rnq/vGUIuZGPFt52
8
- AAuUk0Rp/nnOngj/khCFaxZ9Y7RQL2gR7ydik24oGOApknQtuGtVja94fu12xDgi
9
- ey7qc4c9AgMBAAGjgZ4wgZswCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBaAwHQYD
10
- VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBSzaLjn9mOm7/Bg
11
- lT5Tz0jOgzf5eDAfBgNVHSMEGDAWgBTm2JH/eucY09FvZ78n2Idwni0mUDAfBgNV
12
- HREEGDAWghRyZXZva2VkLmxvY2FsdGVzdC5tZTANBgkqhkiG9w0BAQsFAAOBgQBM
13
- CGeBdgY0cTKBlM6EfrsJyKV6qtKLjdZAlNqmvn1tOobaTFM6VCDdwrIpKM1xkcqm
14
- FwQlC/PnjIMoulWPmTHiQFkPCBzr8ehiflO1z8pjZXXxJl6GwZBFy3HdthNO4MAy
15
- 8leu7+SIpGBh/TIEGpQkDVo0y6hWn9Y4g6xw8tgHnw==
16
- -----END CERTIFICATE-----
17
-
removed priv/cert/suite/revoked_chain.pem
 
@@ -1,17 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICczCCAdygAwIBAgIJAKBvZwT5ZW4hMA0GCSqGSIb3DQEBCwUAMDMxHzAdBgNV
3
- BAoMFkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxEDAOBgNVBAMMB1Jvb3QgQ0EwHhcN
4
- MTgxMTA0MTkyMTAyWhcNMjgxMTAzMTkyNjAyWjA7MR8wHQYDVQQKDBZFbGl4aXIu
5
- WDUwOS5UZXN0LlN1aXRlMRgwFgYDVQQDDA9JbnRlcm1lZGlhdGUgQ0EwgZ8wDQYJ
6
- KoZIhvcNAQEBBQADgY0AMIGJAoGBALneYZtV/f6bN0RVujg9Oe4jIaQgeRGpH+/w
7
- EcEMog/WO8/sNtAZbl/VQH+G4/NxzncmGRGeAxXWDwdikn74/a1XGN7Ffant8Lug
8
- vb9ElG4ceONb0EjuWaEZM7kKjbTYsKBe+W9TGzFcVR7kNJMtXRn/j6brOIIyoO/8
9
- /fLhWP5BAgMBAAGjgYYwgYMwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E
10
- BAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBTm
11
- 2JH/eucY09FvZ78n2Idwni0mUDAfBgNVHSMEGDAWgBQHI42p6hN9axBc0wrXfA9f
12
- ldpEVjANBgkqhkiG9w0BAQsFAAOBgQBdKVqpMEyHEYHJ2FXcHlV2Fq1dF2vhfNKh
13
- guBmFzpmPdy6xDh3xSfoEJ+K/crENLwOyyC8wGZ8+BEkHPFG21jTiylDe727r2A6
14
- iv3ZAWXhKI2MMLyflig6oaU3gxVIzGXtmZQAulHVTmMbQCBKg+jFXqkvnSrXRXBu
15
- 9+VW75tKoA==
16
- -----END CERTIFICATE-----
17
-
removed priv/cert/suite/selfsigned.pem
 
@@ -1,18 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICsDCCAhmgAwIBAgIIB5CjoKvjWJ4wDQYJKoZIhvcNAQELBQAwNzEfMB0GA1UE
3
- CgwWRWxpeGlyLlg1MDkuVGVzdC5TdWl0ZTEUMBIGA1UEAwwLU2VsZi1zaWduZWQw
4
- HhcNMTgxMTA0MTkyMTAyWhcNMTkxMjA0MTkyNjAyWjA3MR8wHQYDVQQKDBZFbGl4
5
- aXIuWDUwOS5UZXN0LlN1aXRlMRQwEgYDVQQDDAtTZWxmLXNpZ25lZDCBnzANBgkq
6
- hkiG9w0BAQEFAAOBjQAwgYkCgYEA4rFPCR1VqROkrRS9l20RCGNbKzUlgqHJ+zm0
7
- HRmSmS/n3eqHkNOao6BLRl+wTbLPfXT/B+rJkj4l2XKgGHyuer+8ZQi5kY8W3nYA
8
- C5STRGn+ec6eCP+SEIVrFn1jtFAvaBHvJ2KTbigY4CmSdC24a1WNr3h+7XbEOCJ7
9
- Lupzhz0CAwEAAaOBxDCBwTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIFoDAdBgNV
10
- HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFLNouOf2Y6bv8GCV
11
- PlPPSM6DN/l4MB8GA1UdIwQYMBaAFLNouOf2Y6bv8GCVPlPPSM6DN/l4MEUGA1Ud
12
- EQQ+MDyCF3NlbGZzaWduZWQubG9jYWx0ZXN0Lm1lgiFzZWxmc2lnbmVkLXdyb25n
13
- LWtleS5sb2NhbHRlc3QubWUwDQYJKoZIhvcNAQELBQADgYEAIUieY+TwWvi6uUFK
14
- fKsJhlE8wQSG98YqnHPJTDBCUmTFX6QO0YSJ9mtV9lQ/ayH/bccRwZAB0/5+HqSj
15
- OESHfyv0AtpLdgDJyoxv5c8FkYO87TJicW4g86gtI5zzMymPZutGme2fvwX2XRRx
16
- TANwNqHxJXLwuxSscxaUJ/5PSsg=
17
- -----END CERTIFICATE-----
18
-
removed priv/cert/suite/server_key.pem
 
@@ -1,16 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIICXQIBAAKBgQDisU8JHVWpE6StFL2XbREIY1srNSWCocn7ObQdGZKZL+fd6oeQ
3
- 05qjoEtGX7BNss99dP8H6smSPiXZcqAYfK56v7xlCLmRjxbedgALlJNEaf55zp4I
4
- /5IQhWsWfWO0UC9oEe8nYpNuKBjgKZJ0LbhrVY2veH7tdsQ4Insu6nOHPQIDAQAB
5
- AoGBAKubpkU0G8Ceyi7sYIndWuOKs12GIhs99vVjvWG6Fiw5A8IO5QlR5uKvWcyw
6
- a3qmPkSu6NFJf8Zhna17BI8E898zVwkBHJ9X2tHbdRPMjofDHHcxRnxjNrKkEV2x
7
- mTcKheEa+wIWTPVB5B3a93NoxcrOnpvrV0Hy8Xks70J2GwyBAkEA/MLgv5XhjcQF
8
- v/APE6BoW0flKXpkOwFsbYUYNqOk9XpZ4jF3ppHXvuIL0+e/m3QhmwoXsCylw0Fc
9
- IpTchFmcmQJBAOWY60I8uMEPQwRV4LavA4NUN+ZafyHNJf0BFbAKlpxWllhhgIDA
10
- 0iuTVwhssKYIqSVcYlXF0SyMT9xwCUOAIkUCQBB27Ubtj3S5mRpIm+LOZx3TEBVk
11
- mJTTYem8arhcboli/+nhCQc7ps8TUGvsQ6nvpaTAwoxCTEXswwCpq7efUrkCQG5E
12
- YgB+zzCRVttXL0Qti59gLDSqk9I1B6CaC8NvYmQVRcGOmju733RkH/GA2dnz4OB7
13
- nRKandoqTRSOjjRn7o0CQQDYoMn0awnnTpFSHy2CyBMnzzgogc6YNH7DkGrZehKb
14
- nlZhxRRqgpNe8Jp8iOiIx+ya0OzLzNKvp6a0NkauIt9B
15
- -----END RSA PRIVATE KEY-----
16
-
removed priv/cert/suite/valid.pem
 
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDEDCCAnmgAwIBAgIJAIT6hjbLrocmMA0GCSqGSIb3DQEBCwUAMDsxHzAdBgNV
3
- BAoMFkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxGDAWBgNVBAMMD0ludGVybWVkaWF0
4
- ZSBDQTAeFw0xODExMDQxOTIxMDJaFw0xOTEyMDQxOTI2MDJaMDIxHzAdBgNVBAoM
5
- FkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxDzANBgNVBAMMBlNlcnZlcjCBnzANBgkq
6
- hkiG9w0BAQEFAAOBjQAwgYkCgYEA4rFPCR1VqROkrRS9l20RCGNbKzUlgqHJ+zm0
7
- HRmSmS/n3eqHkNOao6BLRl+wTbLPfXT/B+rJkj4l2XKgGHyuer+8ZQi5kY8W3nYA
8
- C5STRGn+ec6eCP+SEIVrFn1jtFAvaBHvJ2KTbigY4CmSdC24a1WNr3h+7XbEOCJ7
9
- Lupzhz0CAwEAAaOCASMwggEfMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0G
10
- A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUs2i45/Zjpu/w
11
- YJU+U89IzoM3+XgwHwYDVR0jBBgwFoAU5tiR/3rnGNPRb2e/J9iHcJ4tJlAwgaIG
12
- A1UdEQSBmjCBl4ISdmFsaWQubG9jYWx0ZXN0Lm1lgiB2YWxpZC1taXNzaW5nLWNo
13
- YWluLmxvY2FsdGVzdC5tZYIgdmFsaWQtcmV2b2tlZC1jaGFpbi5sb2NhbHRlc3Qu
14
- bWWCHHZhbGlkLXdyb25nLWtleS5sb2NhbHRlc3QubWWCH3ZhbGlkLWNyb3NzLXNp
15
- Z25lZC5sb2NhbHRlc3QubWUwDQYJKoZIhvcNAQELBQADgYEAnbLTyNijhJnWVu2j
16
- PDo+ZTEXNihsReeZQYvZSzQijY1EBXJ0sCUIc/9xnTXS9NJgIlp4vL90IhIcRJlv
17
- q1d9bA8aOJdgOqUoB4+8VRoz9voI1ASNuFl6VPKLk2135wBrPYIUMIuPSJalOOvO
18
- AgZHesmORyMRG476YZm7oUAgTBc=
19
- -----END CERTIFICATE-----
20
-
removed priv/cert/suite/wildcard.pem
 
@@ -1,17 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICjzCCAfigAwIBAgIJALmBmxIdtBPUMA0GCSqGSIb3DQEBCwUAMDsxHzAdBgNV
3
- BAoMFkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxGDAWBgNVBAMMD0ludGVybWVkaWF0
4
- ZSBDQTAeFw0xODExMDQxOTIxMDJaFw0xOTEyMDQxOTI2MDJaMDQxHzAdBgNVBAoM
5
- FkVsaXhpci5YNTA5LlRlc3QuU3VpdGUxETAPBgNVBAMMCFdpbGRjYXJkMIGfMA0G
6
- CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDisU8JHVWpE6StFL2XbREIY1srNSWCocn7
7
- ObQdGZKZL+fd6oeQ05qjoEtGX7BNss99dP8H6smSPiXZcqAYfK56v7xlCLmRjxbe
8
- dgALlJNEaf55zp4I/5IQhWsWfWO0UC9oEe8nYpNuKBjgKZJ0LbhrVY2veH7tdsQ4
9
- Insu6nOHPQIDAQABo4GhMIGeMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0G
10
- A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUs2i45/Zjpu/w
11
- YJU+U89IzoM3+XgwHwYDVR0jBBgwFoAU5tiR/3rnGNPRb2e/J9iHcJ4tJlAwIgYD
12
- VR0RBBswGYIXKi53aWxkY2FyZC5sb2NhbHRlc3QubWUwDQYJKoZIhvcNAQELBQAD
13
- gYEAWjZAbmrp9u/IbWNCDO25BTYdx8DF15jS6eukdr3e5DMQ4N0j5skPqhUpGWcO
14
- AcSPCpFDl6fdL+b/FyqcIGsFJ+GcQvMUx+jH5ne1ymzZO+x4Oa0Wis9Y2+Vg5ffz
15
- h1IUgtCk1FdamJ4qGUeb5auiGpQ+FfJCtdBtDWVvOO/FDpo=
16
- -----END CERTIFICATE-----
17
-