jruby-openssl 0.8.0.pre3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +5 -124
- data/Rakefile +3 -3
- data/lib/shared/jopenssl.jar +0 -0
- data/lib/shared/jopenssl/version.rb +1 -1
- metadata +10 -116
- data/test/1.8/ssl_server.rb +0 -99
- data/test/1.8/test_asn1.rb +0 -212
- data/test/1.8/test_cipher.rb +0 -193
- data/test/1.8/test_config.rb +0 -290
- data/test/1.8/test_digest.rb +0 -88
- data/test/1.8/test_ec.rb +0 -128
- data/test/1.8/test_hmac.rb +0 -46
- data/test/1.8/test_ns_spki.rb +0 -59
- data/test/1.8/test_pair.rb +0 -149
- data/test/1.8/test_pkcs7.rb +0 -489
- data/test/1.8/test_pkey_rsa.rb +0 -49
- data/test/1.8/test_ssl.rb +0 -1032
- data/test/1.8/test_x509cert.rb +0 -277
- data/test/1.8/test_x509crl.rb +0 -253
- data/test/1.8/test_x509ext.rb +0 -99
- data/test/1.8/test_x509name.rb +0 -290
- data/test/1.8/test_x509req.rb +0 -195
- data/test/1.8/test_x509store.rb +0 -246
- data/test/1.8/utils.rb +0 -144
- data/test/1.9/ssl_server.rb +0 -81
- data/test/1.9/test_asn1.rb +0 -589
- data/test/1.9/test_bn.rb +0 -23
- data/test/1.9/test_buffering.rb +0 -88
- data/test/1.9/test_cipher.rb +0 -107
- data/test/1.9/test_config.rb +0 -288
- data/test/1.9/test_digest.rb +0 -118
- data/test/1.9/test_engine.rb +0 -15
- data/test/1.9/test_hmac.rb +0 -32
- data/test/1.9/test_ns_spki.rb +0 -50
- data/test/1.9/test_ocsp.rb +0 -47
- data/test/1.9/test_pair.rb +0 -257
- data/test/1.9/test_pkcs12.rb +0 -209
- data/test/1.9/test_pkcs7.rb +0 -156
- data/test/1.9/test_pkey_dh.rb +0 -72
- data/test/1.9/test_pkey_dsa.rb +0 -224
- data/test/1.9/test_pkey_ec.rb +0 -182
- data/test/1.9/test_pkey_rsa.rb +0 -244
- data/test/1.9/test_ssl.rb +0 -499
- data/test/1.9/test_ssl_session.rb +0 -327
- data/test/1.9/test_x509cert.rb +0 -217
- data/test/1.9/test_x509crl.rb +0 -221
- data/test/1.9/test_x509ext.rb +0 -69
- data/test/1.9/test_x509name.rb +0 -366
- data/test/1.9/test_x509req.rb +0 -150
- data/test/1.9/test_x509store.rb +0 -229
- data/test/1.9/utils.rb +0 -304
- data/test/cert_with_ec_pk.cer +0 -27
- data/test/fixture/ca-bundle.crt +0 -2794
- data/test/fixture/ca_path/72fa7371.0 +0 -19
- data/test/fixture/ca_path/verisign.pem +0 -19
- data/test/fixture/cacert.pem +0 -23
- data/test/fixture/cert_localhost.pem +0 -19
- data/test/fixture/common.pem +0 -48
- data/test/fixture/ids_in_subject_rdn_set.pem +0 -31
- data/test/fixture/imaps/cacert.pem +0 -60
- data/test/fixture/imaps/server.crt +0 -61
- data/test/fixture/imaps/server.key +0 -15
- data/test/fixture/key_then_cert.pem +0 -34
- data/test/fixture/keypair.pem +0 -27
- data/test/fixture/localhost_keypair.pem +0 -18
- data/test/fixture/max.pem +0 -29
- data/test/fixture/purpose/b70a5bc1.0 +0 -24
- data/test/fixture/purpose/ca/PASSWD_OF_CA_KEY_IS_1234 +0 -0
- data/test/fixture/purpose/ca/ca_config.rb +0 -37
- data/test/fixture/purpose/ca/cacert.pem +0 -24
- data/test/fixture/purpose/ca/newcerts/2_cert.pem +0 -19
- data/test/fixture/purpose/ca/newcerts/3_cert.pem +0 -19
- data/test/fixture/purpose/ca/newcerts/4_cert.pem +0 -19
- data/test/fixture/purpose/ca/private/cakeypair.pem +0 -30
- data/test/fixture/purpose/ca/serial +0 -1
- data/test/fixture/purpose/cacert.pem +0 -24
- data/test/fixture/purpose/scripts/gen_cert.rb +0 -127
- data/test/fixture/purpose/scripts/gen_csr.rb +0 -50
- data/test/fixture/purpose/scripts/init_ca.rb +0 -66
- data/test/fixture/purpose/sslclient.pem +0 -19
- data/test/fixture/purpose/sslclient/csr.pem +0 -10
- data/test/fixture/purpose/sslclient/keypair.pem +0 -15
- data/test/fixture/purpose/sslclient/sslclient.pem +0 -19
- data/test/fixture/purpose/sslserver.pem +0 -19
- data/test/fixture/purpose/sslserver/csr.pem +0 -10
- data/test/fixture/purpose/sslserver/keypair.pem +0 -15
- data/test/fixture/purpose/sslserver/sslserver.pem +0 -19
- data/test/fixture/purpose/sslserver_no_dsig_in_keyUsage.pem +0 -19
- data/test/fixture/selfcert.pem +0 -23
- data/test/fixture/verisign.pem +0 -19
- data/test/fixture/verisign_c3.pem +0 -14
- data/test/ref/a.out +0 -0
- data/test/ref/compile.rb +0 -8
- data/test/ref/pkcs1 +0 -0
- data/test/ref/pkcs1.c +0 -21
- data/test/ruby/envutil.rb +0 -208
- data/test/ruby/ut_eof.rb +0 -128
- data/test/test_all.rb +0 -1
- data/test/test_certificate.rb +0 -132
- data/test/test_cipher.rb +0 -197
- data/test/test_imaps.rb +0 -107
- data/test/test_integration.rb +0 -144
- data/test/test_openssl.rb +0 -4
- data/test/test_parse_certificate.rb +0 -27
- data/test/test_pkcs7.rb +0 -56
- data/test/test_pkey_dsa.rb +0 -180
- data/test/test_pkey_rsa.rb +0 -329
- data/test/test_ssl.rb +0 -97
- data/test/test_x509store.rb +0 -168
data/test/test_ssl.rb
DELETED
@@ -1,97 +0,0 @@
|
|
1
|
-
require 'openssl'
|
2
|
-
require 'test/unit'
|
3
|
-
require 'webrick/https'
|
4
|
-
require 'net/https'
|
5
|
-
require 'logger'
|
6
|
-
require File.join(File.dirname(__FILE__), (RUBY_VERSION >= '1.9.0' ? '1.9' : '1.8'), "utils.rb")
|
7
|
-
|
8
|
-
|
9
|
-
class TestSSL < Test::Unit::TestCase
|
10
|
-
PORT = 17171
|
11
|
-
DIR = File.dirname(File.expand_path(__FILE__))
|
12
|
-
|
13
|
-
def setup
|
14
|
-
@server = @server_thread = nil
|
15
|
-
@verbose, $VERBOSE = $VERBOSE, nil
|
16
|
-
setup_server
|
17
|
-
end
|
18
|
-
|
19
|
-
def teardown
|
20
|
-
$VERBOSE = @verbose
|
21
|
-
teardown_server
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_jruby_4826
|
25
|
-
assert_nothing_raised do
|
26
|
-
100.times do
|
27
|
-
http = Net::HTTP.new('localhost', PORT)
|
28
|
-
http.use_ssl = true
|
29
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
30
|
-
req = Net::HTTP::Post.new('/post')
|
31
|
-
http.request(req).body
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def make_certificate(key, cn)
|
39
|
-
subject = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=#{cn}")
|
40
|
-
exts = [
|
41
|
-
["keyUsage", "keyEncipherment,digitalSignature", true],
|
42
|
-
]
|
43
|
-
OpenSSL::TestUtils.issue_cert(
|
44
|
-
subject, key, 1, Time.now, Time.now + 3600, exts,
|
45
|
-
nil, nil, OpenSSL::Digest::SHA1.new
|
46
|
-
)
|
47
|
-
end
|
48
|
-
|
49
|
-
def setup_server
|
50
|
-
key = OpenSSL::TestUtils::TEST_KEY_RSA1024
|
51
|
-
cert = make_certificate(key, "localhost")
|
52
|
-
logger = Logger.new(STDERR)
|
53
|
-
logger.level = Logger::Severity::FATAL # avoid logging SSLError (ERROR level)
|
54
|
-
@server = WEBrick::HTTPServer.new(
|
55
|
-
:Logger => logger,
|
56
|
-
:Port => PORT,
|
57
|
-
:AccessLog => [],
|
58
|
-
:SSLEnable => true,
|
59
|
-
:ServerName => "localhost",
|
60
|
-
:SSLCertificate => cert,
|
61
|
-
:SSLPrivateKey => key
|
62
|
-
)
|
63
|
-
@server.mount(
|
64
|
-
"/post",
|
65
|
-
WEBrick::HTTPServlet::ProcHandler.new(method("do_post").to_proc)
|
66
|
-
)
|
67
|
-
@server_thread = start_server_thread(@server)
|
68
|
-
end
|
69
|
-
|
70
|
-
def do_post(req, res)
|
71
|
-
res.chunked = true
|
72
|
-
res['content-type'] = 'text/plain'
|
73
|
-
piper, pipew = IO.pipe
|
74
|
-
res.body = piper
|
75
|
-
10.times { pipew << "A" * 10 }
|
76
|
-
pipew.close
|
77
|
-
end
|
78
|
-
|
79
|
-
def start_server_thread(server)
|
80
|
-
t = Thread.new {
|
81
|
-
Thread.current.abort_on_exception = true
|
82
|
-
server.start
|
83
|
-
}
|
84
|
-
while server.status != :Running
|
85
|
-
Thread.pass
|
86
|
-
unless t.alive?
|
87
|
-
t.join
|
88
|
-
raise
|
89
|
-
end
|
90
|
-
end
|
91
|
-
t
|
92
|
-
end
|
93
|
-
|
94
|
-
def teardown_server
|
95
|
-
@server.shutdown if @server
|
96
|
-
end
|
97
|
-
end
|
data/test/test_x509store.rb
DELETED
@@ -1,168 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require "openssl"
|
3
|
-
rescue LoadError
|
4
|
-
end
|
5
|
-
|
6
|
-
require "test/unit"
|
7
|
-
require "tempfile"
|
8
|
-
|
9
|
-
class TestX509Store < Test::Unit::TestCase
|
10
|
-
def setup
|
11
|
-
@store = OpenSSL::X509::Store.new
|
12
|
-
end
|
13
|
-
|
14
|
-
def path(file)
|
15
|
-
File.expand_path(file, File.dirname(__FILE__))
|
16
|
-
end
|
17
|
-
|
18
|
-
def teardown
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_ns_cert_type
|
22
|
-
f = Tempfile.new("globalsign-root.pem")
|
23
|
-
f << GLOBALSIGN_ROOT_CA
|
24
|
-
f.close
|
25
|
-
@store.add_file(f.path)
|
26
|
-
f.unlink
|
27
|
-
|
28
|
-
# CAUTION !
|
29
|
-
#
|
30
|
-
# sgc is an issuing CA certificate so we should not verify it for the
|
31
|
-
# purpose 'PURPOSE_SSL_SERVER'. It's not a SSL server certificate.
|
32
|
-
# We're just checking the code for 'PURPOSE_SSL_SERVER'.
|
33
|
-
# jruby-openssl/0.5.2 raises the following exception around ASN.1
|
34
|
-
# nsCertType handling.
|
35
|
-
# Purpose.java:344:in `call': java.lang.ClassCastException: org.bouncycastle.asn1.DEROctetString cannot be cast to org.bouncycastle.asn1.DERBitString
|
36
|
-
sgc = OpenSSL::X509::Certificate.new(GLOBALSIGN_ORGANIZATION_VALIDATION_CA)
|
37
|
-
|
38
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_SERVER
|
39
|
-
assert_nothing_raised do
|
40
|
-
@store.verify(sgc) # => should be false
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_purpose_ssl_client
|
45
|
-
@store.add_file(path("fixture/purpose/cacert.pem"))
|
46
|
-
cert = OpenSSL::X509::Certificate.new(File.read(path("fixture/purpose/sslclient.pem")))
|
47
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
|
48
|
-
assert_equal(true, @store.verify(cert))
|
49
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_SERVER
|
50
|
-
assert_equal(false, @store.verify(cert))
|
51
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
|
52
|
-
assert_equal(true, @store.verify(cert))
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_purpose_ssl_server
|
56
|
-
@store.add_file(path("fixture/purpose/cacert.pem"))
|
57
|
-
cert = OpenSSL::X509::Certificate.new(File.read(path("fixture/purpose/sslserver.pem")))
|
58
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_SERVER
|
59
|
-
assert_equal(true, @store.verify(cert))
|
60
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
|
61
|
-
assert_equal(false, @store.verify(cert))
|
62
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_SERVER
|
63
|
-
assert_equal(true, @store.verify(cert))
|
64
|
-
end
|
65
|
-
|
66
|
-
# keyUsage: no digitalSignature bit, keyEncipherment bit only.
|
67
|
-
def test_purpose_ssl_server_no_dsig_in_keyUsage
|
68
|
-
@store.add_file(path("fixture/purpose/cacert.pem"))
|
69
|
-
cert = OpenSSL::X509::Certificate.new(File.read(path("fixture/purpose/sslserver_no_dsig_in_keyUsage.pem")))
|
70
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_SERVER
|
71
|
-
assert_equal(true, @store.verify(cert))
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_add_file_multiple
|
75
|
-
f = Tempfile.new("globalsign-root.pem")
|
76
|
-
f << GLOBALSIGN_ROOT_CA
|
77
|
-
f << "junk junk\n"
|
78
|
-
f << "junk junk\n"
|
79
|
-
f << "junk junk\n"
|
80
|
-
f << File.read(path("fixture/purpose/cacert.pem"))
|
81
|
-
f.close
|
82
|
-
@store.add_file(f.path)
|
83
|
-
f.unlink
|
84
|
-
|
85
|
-
cert = OpenSSL::X509::Certificate.new(File.read(path("fixture/purpose/sslserver.pem")))
|
86
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_SERVER
|
87
|
-
assert_equal(true, @store.verify(cert))
|
88
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
|
89
|
-
assert_equal(false, @store.verify(cert))
|
90
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_SERVER
|
91
|
-
assert_equal(true, @store.verify(cert))
|
92
|
-
end
|
93
|
-
|
94
|
-
# jruby-openssl/0.6 raises "can't store certificate" because of duplicated
|
95
|
-
# subject. ruby-openssl just ignores the second certificate.
|
96
|
-
def test_add_file_JRUBY_4409
|
97
|
-
assert_nothing_raised do
|
98
|
-
@store.add_file(path("fixture/ca-bundle.crt"))
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_set_default_paths
|
103
|
-
@store.purpose = OpenSSL::X509::PURPOSE_SSL_SERVER
|
104
|
-
cert = OpenSSL::X509::Certificate.new(File.read(path("fixture/purpose/sslserver.pem")))
|
105
|
-
assert_equal(false, @store.verify(cert))
|
106
|
-
begin
|
107
|
-
backup = ENV['SSL_CERT_DIR']
|
108
|
-
ENV['SSL_CERT_DIR'] = path('fixture/purpose/')
|
109
|
-
@store.set_default_paths
|
110
|
-
assert_equal(true, @store.verify(cert))
|
111
|
-
ensure
|
112
|
-
ENV['SSL_CERT_DIR'] = backup if backup
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
GLOBALSIGN_ROOT_CA = <<__EOS__
|
117
|
-
-----BEGIN CERTIFICATE-----
|
118
|
-
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
|
119
|
-
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
|
120
|
-
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
|
121
|
-
MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
|
122
|
-
YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
|
123
|
-
aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
|
124
|
-
jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
|
125
|
-
xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
|
126
|
-
1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
|
127
|
-
snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
|
128
|
-
U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
|
129
|
-
9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
|
130
|
-
BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
|
131
|
-
AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
|
132
|
-
yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
|
133
|
-
38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
|
134
|
-
AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
|
135
|
-
DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
|
136
|
-
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
137
|
-
-----END CERTIFICATE-----
|
138
|
-
__EOS__
|
139
|
-
|
140
|
-
GLOBALSIGN_ORGANIZATION_VALIDATION_CA = <<__EOS__
|
141
|
-
-----BEGIN CERTIFICATE-----
|
142
|
-
MIIEZzCCA0+gAwIBAgILBAAAAAABHkSl9SowDQYJKoZIhvcNAQEFBQAwVzELMAkG
|
143
|
-
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
|
144
|
-
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0wNzA0MTExMjAw
|
145
|
-
MDBaFw0xNzA0MTExMjAwMDBaMGoxIzAhBgNVBAsTGk9yZ2FuaXphdGlvbiBWYWxp
|
146
|
-
ZGF0aW9uIENBMRMwEQYDVQQKEwpHbG9iYWxTaWduMS4wLAYDVQQDEyVHbG9iYWxT
|
147
|
-
aWduIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIENBMIIBIjANBgkqhkiG9w0BAQEF
|
148
|
-
AAOCAQ8AMIIBCgKCAQEAoS/EvM6HA+lnwYnI5ZP8fbStnvZjTmronCxziaIB9I8h
|
149
|
-
+P0lnVgWbYb27klXdX516iIRfj37x0JB3PzFDJFVgHvrZDMdm/nKOOmrxiVDUSVA
|
150
|
-
9OR+GFVqqY8QOkAe1leD738vNC8t0vZTwhkNt+3JgfVGLLQjQl6dEwN17Opq/Fd8
|
151
|
-
yTaXO5jcExPs7EH6XTTquZPnEBZlzJyS/fXFnT5KuQn85F8eaV9N9FZyRLEdIwPI
|
152
|
-
NvZliMi/ORZFjh4mbFEWxSoAOMWkE2mVfasBO6jEFLSA2qwaRCDV/qkGexQnr+Aw
|
153
|
-
Id2Q9KnVIxkuHgPmwd+VKeTBlEPdPpCqy0vJvorTOQIDAQABo4IBHzCCARswDgYD
|
154
|
-
VR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFH1tKuxm
|
155
|
-
q6dRNqsCafFwj8RZC5ofMEsGA1UdIAREMEIwQAYJKwYBBAGgMgEUMDMwMQYIKwYB
|
156
|
-
BQUHAgEWJWh0dHA6Ly93d3cuZ2xvYmFsc2lnbi5uZXQvcmVwb3NpdG9yeS8wMwYD
|
157
|
-
VR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nbG9iYWxzaWduLm5ldC9yb290LmNy
|
158
|
-
bDARBglghkgBhvhCAQEEBAMCAgQwIAYDVR0lBBkwFwYKKwYBBAGCNwoDAwYJYIZI
|
159
|
-
AYb4QgQBMB8GA1UdIwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA0GCSqGSIb3
|
160
|
-
DQEBBQUAA4IBAQB5R/wV10x53w96ns7UfEtjyYm1ez+ZEuicjJpJL+BOlUrtx7y+
|
161
|
-
8aLbjpMdunFUqkvZiSIkh8UEqKyCUqBS+LjhT6EnZmMhSjnnx8VOX7LWHRNtMOnO
|
162
|
-
16IcvCkKczxbI0n+1v/KsE/18meYwEcR+LdIppAJ1kK+6rG5U0LDnCDJ+6FbtVZt
|
163
|
-
h4HIYKzEuXInCo4eqLEuzTKieFewnPiVu0OOjDGGblMNxhIFukFuqDUwCRgdAmH/
|
164
|
-
/e413mrDO9BNS05QslY2DERd2hplKuaYVqljMy4E567o9I63stp9wMjirqYoL+PJ
|
165
|
-
c738B0E0t6pu7qfb0ZM87ZDsMpKI2cgjbHQh
|
166
|
-
-----END CERTIFICATE-----
|
167
|
-
__EOS__
|
168
|
-
end
|