get cert generation and tests passing

This commit is contained in:
Benjamin Fry 2017-04-06 22:53:09 -07:00
parent 9525de22e5
commit 3b0a00ea2b
13 changed files with 202 additions and 304 deletions

View File

@ -18,19 +18,15 @@ use std::sync::atomic;
use futures::Stream;
use native_tls;
use native_tls::{Certificate, TlsAcceptor};
#[cfg(target_os = "linux")]
use native_tls::backend::openssl::*;
use native_tls::TlsAcceptor;
#[cfg(target_os = "linux")]
use openssl;
#[cfg(target_os = "linux")]
use openssl::ssl::{SSL_VERIFY_PEER, SSL_VERIFY_NONE, SSL_VERIFY_FAIL_IF_NO_PEER_CERT};
#[cfg(target_os = "linux")]
use openssl::x509::store::X509StoreBuilder;
#[cfg(target_os = "linux")]
use openssl::x509::X509;
#[cfg(target_os = "macos")]
use security_framework::certificate::SecCertificate;
use tokio_core::reactor::Core;
use {TlsStream, TlsStreamBuilder};
@ -89,7 +85,7 @@ fn tls_client_stream_test(server_addr: IpAddr, mtls: bool) {
})
.unwrap();
let root_cert_der = read_file("../tests/ca.pem");
let root_cert_der = read_file("../tests/ca.der");
// Generate X509 certificate
let subject_name = "ns.example.com";
@ -173,12 +169,7 @@ fn tls_client_stream_test(server_addr: IpAddr, mtls: bool) {
// TODO: add timeout here, so that test never hangs...
// let timeout = Timeout::new(Duration::from_secs(5), &io_loop.handle());
#[cfg(target_os = "macos")]
let trust_chain = SecCertificate::from_der(&root_cert_der).unwrap();
#[cfg(target_os = "linux")]
let trust_chain = X509::from_der(&root_cert_der).unwrap();
let trust_chain = Certificate::from_der(&root_cert_der).unwrap();
// barrier.wait();
let mut builder = ::tls_stream::tls_builder();

View File

@ -18,12 +18,9 @@ use std::net::SocketAddr;
use std::io;
use futures::Future;
use native_tls::Certificate;
#[cfg(feature = "mtls")]
use native_tls::Pkcs12;
#[cfg(target_os = "linux")]
use openssl::x509::X509 as OpensslX509;
#[cfg(target_os = "macos")]
use security_framework::certificate::SecCertificate;
use tokio_core::reactor::Core;
use trust_dns::error::*;
@ -59,16 +56,7 @@ impl TlsClientConnectionBuilder {
/// Add a custom trusted peer certificate or certificate auhtority.
///
/// If this is the 'client' then the 'server' must have it associated as it's `identity`, or have had the `identity` signed by this certificate.
#[cfg(target_os = "macos")]
pub fn add_ca(&mut self, ca: SecCertificate) {
self.0.add_ca(ca);
}
/// Add a custom trusted peer certificate or certificate auhtority.
///
/// If this is the 'client' then the 'server' must have it associated as it's `identity`, or have had the `identity` signed by this certificate.
#[cfg(target_os = "linux")]
pub fn add_ca(&mut self, ca: OpensslX509) {
pub fn add_ca(&mut self, ca: Certificate) {
self.0.add_ca(ca);
}

View File

@ -9,12 +9,9 @@ use std::net::SocketAddr;
use std::io;
use futures::Future;
use native_tls::Certificate;
#[cfg(feature = "mtls")]
use native_tls::Pkcs12;
#[cfg(target_os = "linux")]
use openssl::x509::X509 as OpensslX509;
#[cfg(target_os = "macos")]
use security_framework::certificate::SecCertificate;
use tokio_core::net::TcpStream as TokioTcpStream;
use tokio_core::reactor::Handle;
use tokio_tls::TlsStream as TokioTlsStream;
@ -23,7 +20,7 @@ use trust_dns::BufClientStreamHandle;
use trust_dns::tcp::TcpClientStream;
use trust_dns::client::ClientStreamHandle;
use {TlsStream, TlsStreamBuilder};
use TlsStreamBuilder;
pub type TlsClientStream = TcpClientStream<TokioTlsStream<TokioTcpStream>>;
@ -37,16 +34,7 @@ impl TlsClientStreamBuilder {
/// Add a custom trusted peer certificate or certificate auhtority.
///
/// If this is the 'client' then the 'server' must have it associated as it's `identity`, or have had the `identity` signed by this certificate.
#[cfg(target_os = "macos")]
pub fn add_ca(&mut self, ca: SecCertificate) {
self.0.add_ca(ca);
}
/// Add a custom trusted peer certificate or certificate auhtority.
///
/// If this is the 'client' then the 'server' must have it associated as it's `identity`, or have had the `identity` signed by this certificate.
#[cfg(target_os = "linux")]
pub fn add_ca(&mut self, ca: OpensslX509) {
pub fn add_ca(&mut self, ca: Certificate) {
self.0.add_ca(ca);
}

View File

@ -10,19 +10,8 @@ use std::io;
use futures::{future, Future, IntoFuture};
use futures::sync::mpsc::unbounded;
use native_tls::TlsConnector;
use native_tls::Pkcs12;
#[cfg(target_os = "macos")]
use native_tls::backend::security_framework::TlsConnectorBuilderExt;
#[cfg(target_os = "macos")]
use security_framework::certificate::SecCertificate;
#[cfg(target_os = "linux")]
use native_tls::backend::openssl::TlsConnectorBuilderExt;
#[cfg(target_os = "linux")]
use openssl::x509::X509;
#[cfg(target_os = "linux")]
use openssl::x509::store::X509StoreBuilder;
use native_tls::Protocol::Tlsv12;
use native_tls::{Certificate, Pkcs12, TlsConnector};
use native_tls::Protocol::{Tlsv11, Tlsv12};
use tokio_core::net::TcpStream as TokioTcpStream;
use tokio_core::reactor::Handle;
use tokio_tls::{TlsConnectorExt, TlsStream as TokioTlsStream};
@ -41,73 +30,26 @@ pub fn tls_builder() -> TlsStreamBuilder {
}
}
#[cfg(target_os = "linux")]
fn tls_new(certs: Vec<X509>, pkcs12: Option<Pkcs12>) -> io::Result<TlsConnector> {
let mut tls = try!(TlsConnector::builder().map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
try!(tls.supported_protocols(&[Tlsv12])
.map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
{
// mutable reference block
let mut openssl_builder = tls.builder_mut();
let mut openssl_ctx_builder = openssl_builder.builder_mut();
let mut store = try!(X509StoreBuilder::new().map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
for cert in certs {
try!(store
.add_cert(cert)
.map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
}
try!(openssl_ctx_builder
.set_verify_cert_store(store.build())
.map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
}
// if there was a pkcs12 associated, we'll add it to the identity
if let Some(pkcs12) = pkcs12 {
try!(tls.identity(pkcs12)
.map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
}
tls.build()
.map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
})
}
#[cfg(target_os = "macos")]
fn tls_new(certs: Vec<SecCertificate>, pkcs12: Option<Pkcs12>) -> io::Result<TlsConnector> {
fn tls_new(certs: Vec<Certificate>, pkcs12: Option<Pkcs12>) -> io::Result<TlsConnector> {
let mut builder = try!(TlsConnector::builder().map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
try!(builder
.supported_protocols(&[Tlsv12])
.supported_protocols(&[Tlsv11, Tlsv12])
.map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
builder.anchor_certificates(&certs);
for cert in certs {
try!(builder
.add_root_certificate(cert)
.map_err(|e| {
io::Error::new(io::ErrorKind::ConnectionRefused,
format!("tls error: {}", e))
}));
}
if let Some(pkcs12) = pkcs12 {
try!(builder
@ -140,11 +82,7 @@ pub fn tls_from_stream(stream: TokioTlsStream<TokioTcpStream>,
//}
pub struct TlsStreamBuilder {
#[cfg(target_os = "macos")]
ca_chain: Vec<SecCertificate>,
#[cfg(target_os = "linux")]
ca_chain: Vec<X509>,
ca_chain: Vec<Certificate>,
identity: Option<Pkcs12>,
}
@ -152,16 +90,7 @@ impl TlsStreamBuilder {
/// Add a custom trusted peer certificate or certificate auhtority.
///
/// If this is the 'client' then the 'server' must have it associated as it's `identity`, or have had the `identity` signed by this certificate.
#[cfg(target_os = "macos")]
pub fn add_ca(&mut self, ca: SecCertificate) {
self.ca_chain.push(ca);
}
/// Add a custom trusted peer certificate or certificate auhtority.
///
/// If this is the 'client' then the 'server' must have it associated as it's `identity`, or have had the `identity` signed by this
#[cfg(target_os = "linux")]
pub fn add_ca(&mut self, ca: X509) {
pub fn add_ca(&mut self, ca: Certificate) {
self.ca_chain.push(ca);
}

View File

@ -29,7 +29,7 @@ O = TRust-DNS
CN = root.example.com
[req_ext]
#basicConstraints = CA:TRUE
basicConstraints = CA:TRUE
subjectAltName = @alt_names
[alt_names]
@ -39,10 +39,8 @@ EOF
# CA
echo "----> Generating CA <----"
${OPENSSL:?} genrsa -out ca.key 4096
${OPENSSL:?} req -x509 -new -nodes -key ca.key -days 365 -out ca.pem \
-verify \
-config /tmp/ca.conf
${OPENSSL:?} req -x509 -new -nodes -key ca.key -days 365 -out ca.pem -verify -config /tmp/ca.conf
${OPENSSL:?} x509 -in ca.pem -out ca.der -outform der
cat <<-EOF > /tmp/cert.conf
[req]
@ -78,7 +76,11 @@ ${OPENSSL:?} req -new -nodes -key cert.key -out cert.csr \
echo "----> Signing Cert <----"
${OPENSSL:?} x509 -req -days 365 -in cert.csr -CA ca.pem -CAkey ca.key -set_serial 0x8771f7bdee982fa6 -out cert.pem -extfile /tmp/cert.conf -extensions req_ext
echo "----> Verifying Cert <----"
${OPENSSL:?} verify -CAfile ca.pem cert.pem
echo "----> Createing PCKS12 <----"
${OPENSSL:?} pkcs12 -export -inkey cert.key -in cert.pem -out cert.p12 -passout pass:mypass -name ns.example.com -chain -CAfile ca.pem
popd

View File

@ -1,6 +1,6 @@
#!/bin/bash -e
MODULES=${MODULES:-"client server"}
MODULES=${MODULES:-"client native-tls server"}
CLIENT_OPTIONS=${CLIENT_OPTIONS} # add in all features
OPTIONS=${OPTIONS}

BIN
tests/ca.der Normal file

Binary file not shown.

View File

@ -1,51 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

View File

@ -1,31 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIFTjCCAzYCCQCvf4GmlxfptDANBgkqhkiG9w0BAQsFADBpMQswCQYDVQQGEwJV
MIIFTjCCAzYCCQCs+UFgiYmjWjANBgkqhkiG9w0BAQsFADBpMQswCQYDVQQGEwJV
UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzES
MBAGA1UECgwJVFJ1c3QtRE5TMRkwFwYDVQQDDBByb290LmV4YW1wbGUuY29tMB4X
DTE3MDQwNjA3MDUwMFoXDTE4MDQwNjA3MDUwMFowaTELMAkGA1UEBhMCVVMxEzAR
DTE3MDQwNzA1MzgxN1oXDTE4MDQwNzA1MzgxN1owaTELMAkGA1UEBhMCVVMxEzAR
BgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xEjAQBgNV
BAoMCVRSdXN0LUROUzEZMBcGA1UEAwwQcm9vdC5leGFtcGxlLmNvbTCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBALBOeDzkUDa3dV1KOZhN/4WVMRhabHHu
+0dTUvfIkKPzlADB1DGLueEYXoulc3kQsrxJb6VosKuW5VRzKHU1/fJ8yAfmKh1I
3vo9y55jEWPzm2Dvt6sXWCF++xrx6rkWAwdafXf2vo66fWezmmigVWqpaCxTR5em
XqhpZkuf4R5aB6d99E40JQiEMs3R8tHLfRWvhGV7XBGdFt0baqShzaBnSPxV4buH
FGjR3ZnbxInoHY7Mc36xxQArRhciG8KaJwyExKKCt9h2fbwK+evPXm0jCOmR05jE
/pZCcXS+cu7cxRgIj46kIHoGnY1mLmhyNe/GJ/B8ukryYi+EtPU3nDci/oTo77fj
hrsFjLHCmQnGLt8p+MqcrWni7UJ03bd/RATyuUP/ztuI5u9gBCP45rqgRNbS6MaX
v5gXjxMU+x7oIBsVlfbkvUvrzwo1mGf6z3Lt5ctgrUgGfUsHvg9ad9K2rOFdExdG
/zseX5WFXfCh6RxtzGAm+kBMd25KV2KvVekn7T3A09Ay7xIqGkou5lpxyIWs2RhT
E0yohNiGuUDxopBYtMv6c7KhNybFZWE0m58+S07HUsPDp2gA8yk/1/YkacyAewlL
GExYc0W3Vv3EVz6AasVTkDJW1BbwywzfMSW32JyT1EfeHW2XFYERa8FQkyYKRf3D
hpn/7/nEiZpNAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAIcAwR2KEyRCe1D4mb9I
svuBKU5H6h9Tu2OyVfp/WrPVv7ooAAdjC1czzniwCdg04LbmvySWzijPCi7dNFLp
huJIyvPdjPVRPXU7MqJR2djEgp7ppV4lIr8i3uPDhLLEZXbQmLWTacoZC+pFbUNq
r6NBIA9I6uC67ibhY2fK3IURrBuaM6SWtrxPlDDUs2UODWnW8laI1hA+S4+DSUAv
By7e5yJWBkf4xDAqiXaVIkj0GRPDOluNwNntkG9nUw6Lbb4ueioVCEu6+sIwctTc
uZxsmPbq7EJrGNB5euPpPKF14QDjh9uK8m0dxHqEF7pIek8Szgna97+p6xrOE2Ty
Xhmz7afHZmQ9bsrwReMCc7obuQgYcJimQfgXpFvYNRHfJX6OUhfocBFmxJNMSkM3
XY2Hpf8ej5MftIpnmG7/5l+LmDgedi/iXfG3Zlo1Myq3PAInASkhzXJufL6zAcxm
e8JL0Ogp0duPq1jn33vPsTN990z3ZU0AfC6qDSfyRfy2CQqZqkckgNYNVuIr8QMT
PBa35hihM3EiRhf9l6m8uGib6sqIlCPWYf+rmcVmQaUTjxzwl3MPYSKcY2hPoIV7
tJQITLS/Gzeef+cVHdpKxQQ10q2ud/wJWp+qSgzZSjnkoZkLk00GHUZleLnhRVdb
WBZ38W160BdgsHNX4f9lDRFz
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAKOdj9PvV0CRXYUVb9Du5VULr3bE60M8
LcrytzU1vyFL5/63jayVzRX4SPvMaAyV48k4tUCTv41d6YCDUJj5GZCdzzOAEuKs
OAsciiQqsvscTmeAMTM0sLiSSFxTAWpZvWOaW9XlQiaxc/ApB2heHGVMz+nv1VVe
HtFXP95ZyzgnVhZZqzufOk1JqDTmMwW78Kf88EtzS/6+sSdS+B+r+MDYxrLF5t0b
p4VuvIKGwbOlOUhOcpMnMb5MtODg9Ggc2f/u//ylfUmLQTcKAtyRdXm3vZLYO9Os
ffcPRPBcvNKiVBgfbmk0TA50lyYJcNZq3I9w7U/xk4Ll17v48sLCo+kZZVmRp+J3
qRuS8iZek8LfFJ0GSaxoAnfujwPts2KipmlUZemZq/J7QXz3PF9wdTh/cyEIkF8Z
NITCTccn95m7Ngvr3qKMVTlw1kM7jJJ2RNWdejRhx7+CJ7IAbhbtxj9x4K0SrjqR
5xHPUiALF45by5Fw6uG92oO6lSsnM10Nhm7uibZVGSSM41ZHpnZGVBrRBLtQ6zZf
kYuWoiBW2/ZsRL8BGUb/xWsjbVup1jBBYb/7O0oZEdrVs1BMTI8RhzXe8nPfMB+Q
pugQRhQ+O53+zFuL3gU/ySGMCF9oHUCLlGgIT3BqfNsKAETuNHucABZUCTg8+ekO
xyuYRanT5UpxAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAHQGJexjCPqIwSb9a7TW
oWsKpYUAk1bIFqNDz0LsNfFCw2R84F++6NQJNMg3LawOWb/nOSH6eanW4INBGyxe
/uaJ8So4w4nkOzDSaSPOsWl040dw0vZTAW2RV60O7iMFIa5N6iFAVHRRCj1Vf12D
+zlwRBT9NP6mrh+ra3kpL7S09RSMqMp1tUtKWKoA7UJDXY2lbeT5SiCz7Od4wJQs
SvBKrflAGlQ9gDZP8MYGT0LVOxEPpJf7ILHMrZtudETW0N727m3moc/GBUw13pQv
uF92UWzUuvlSBatghFQ12qLDXY38ZtCWa3RcHV6KVx8geg8kCuo4xFIr6MNpNA+z
u4oPbfZW+6dbcx8KcjjU/J4yvF5/HtNYZ8wD0lU39BXHg2A7bLPUfD371cmL7pr/
iwyeEUg2kCvT4CkDCnPkLtPKsw//w5W7r7x9k2luHx5kh72tRawIBQkN3Ji9VD/Q
2ajrxtqf0gjtSzbcX26gt1Ee4+MPkqDNByLcE83j0cp97Ty7/Yt0p02XaKHiujhj
xzU2dzD8+rj779mDDwAJVkkY/85KVxIroMT/yXXIETTpSv/flXQVS+z6lUENLNp1
Gx6njMllG2L64IdWf9FIuKRlEWeH+L8un1hl+WkyUoqlIZSU0WHR1LrqOT6rzXcb
tJqAJb5+SRxC0GYErPc+NKO+
-----END CERTIFICATE-----

View File

@ -2,28 +2,28 @@
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
rdHVdQw0bbMGpltYfXxprVbPl/0=
gg5ucy5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAgEAHdgw0hph4YDylOFb
x2zKCeBVoqppBwcLITd1kMJckbvIBwkAWzytCFXf79SSvA5psXgA5QMJnLPRxcyt
VOAsDzSjlQMWF3mPbnSwUrQzar+/IvZn+HfJhxHLYKGwC2xHtQnkRqGpHKNo9IJE
dUi/Ubg6gtICOICwadwM4AfY8zjdb3a+O7glWBS8+Sqh/9UWsuhBvwtimXb2mSC6
ReawOK5D/QIlHeAK3c4DGC3N3as9MNR+Udkp0wWjPoe9ZqgofQh1+EA4AwvRpLoz
bNBwD7ppMUtrO/UFl55sEPDsI7eVx7a6TX/c2ab5LnIiiV2kAKrQk/lYInajcqaO
qwKRp4EUDaDM+u1J174zSMZyl6eYUXpM57AY9X/X9NcvWSsgJRzLpo0sArhtu6pZ
OoNpOBlHhY7JVBMoFqrE5liSR98vsC9nhrTJ5k5kTqimBEyFFskgc5xeJ7cjjtFc
LORaHe8VUBuJjNFpamqlNiUG+ZT1FrTyGYq/oxkiZqvlQLAhj9drsuADhnvcuQSw
PH2bJkdvxirTcagz2+a0Z2H03TSM4qpqHjov6ChjUyn+hLhZINi3OyP2Dn3vUR38
xnPzXkzcmzFFw1qwXbLUZfRJ9pfSBB74Z/lgtVwXle0MtLLnazUPEymrOUPyXk7k
BerLjz+2doP0NbvV5Ndo5FBI+Eo=
-----END CERTIFICATE REQUEST-----

View File

@ -1,51 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

Binary file not shown.

View File

@ -2,31 +2,31 @@
MIIFiDCCA3CgAwIBAgIJAIdx973umC+mMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNp
c2NvMRIwEAYDVQQKDAlUUnVzdC1ETlMxGTAXBgNVBAMMEHJvb3QuZXhhbXBsZS5j
b20wHhcNMTcwNDA2MDcwNTAwWhcNMTgwNDA2MDcwNTAwWjBnMQswCQYDVQQGEwJV
b20wHhcNMTcwNDA3MDUzODE3WhcNMTgwNDA3MDUzODE3WjBnMQswCQYDVQQGEwJV
UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzES
MBAGA1UECgwJVFJ1c3QtRE5TMRcwFQYDVQQDDA5ucy5leGFtcGxlLmNvbTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALTNUgesiIaPmzEuiBP9Pjgm/bpn
rthPftBCclTxGfjMgEC6S2pFqHQxt2ZnFVKx385cmuJ/wGOQOujMzPSj9GYzpeCd
wlzsSTbCOtAklTWcDSPqPdMO2rFxa24nrCsgxLjuAO1pjfzIgWZ+6nKQpMgWVQk7
3EXtzZfqwxSlRq4B8DrfKatMvQJ4mQlLK61uhhDqBaeG0g9Y5IAD7ylbv/uGBJ7h
18tUwHea+PYpEE+eADWZjAxDMn1KMzG25DfvXrYbIRmm63ebOOnVvPLPemwqyAXx
X5sEbF+YZ6dFVgmZWOpqpicvHuRjdXt+eZB/WQC3JoLaciedOvcPwgC2j01OE0PX
0kRv+dDzPPo5QDQNt05hu+esKR01LA9Pg7PBeYLbW2Ia2wf7pEwcKPUr8I4996Ph
eZh+RqOj2ZxGpGJTvI8JoAL2M5MiwGPqWpXHl/5iBL7o7XdemPZlVdSJxahnkqMm
55SZxfS5LTLeRZGXw08gDC7Ihrw2LYHH2I7JgOF4gLdeu4LuxdaAGL1ah8S/CFgO
8StVdEBpTs23IJk3+6xK1BmKeRn+N5fObitUBIWzb+bsydXwyZHcEd4NhxPVGq/Q
BA269eG90PWmz16JdMLbuoTplnPYisDuaFqYz99zoM1vXDgNUEszYlUDTO2d4Z7L
MWglkfTc2W+77/QpAgMBAAGjNTAzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMBkG
A1UdEQQSMBCCDm5zLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4ICAQBMTEnd
Q1tsD7gsAzDkFdL8ALZ1Dt4acDgcm3lpaWYUPIMeGPHYpYwjBt9WsT9KX45vW16b
qv7DG4i1cRPaJF9HZuycA3axw12MzeNcqNe1bs5NgtJ2mXC+WibCCz8CrfYrKzlx
YOqCbco5PbnCmtcsosawtQo251X+kwuTueFVXLurvmD0FZsmCzTxiM9e0XgYZ5J5
jFvWV2z3M12fq2Zw6RIrWKijQOumQDBTYaOzONtmUtesBPgT9LK44muy+aXQErkz
7tdkqqUCXywh1trIt4M+WJGZNhZfSMqyF+KivY0jQr6jfAkwgl8ZoriCdzIqeLZY
PntpD88Zf5PfSpPJulTGe+GkLphBHS/g3vfmwc5tJHYd/f2X4AMXf/1Ofiq2yci5
ILJTKrCh1eJEae07UUP9HQFSzrIyiD801ujHInYdKhZxbsFCm49D5C+BPmKD/3iW
4yb+kxNhuulI54kKQr/K0bSLyNqr9Ks9UZqUxLnvUiaeWUMwIVQUXrw4XQUlBX5q
OtunQDRUTfQ+89kftrQb7comuSN/+NaY7KbCEsBrWqf9LhXUOwb5J9ZooYm0r2h6
jzekPplgCdy2qCAo1YcFBqD3rAHdFr5330NRDGrdBqm6Ee/JKxtIlyd8A+v7QoRk
prjSS8T1B6qwbHdC4rgBRf+4YLrnzBBk42w1AQ==
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJmHxGhbH++WbD63gbU6QqJQLf2C
qdngGBAhzSBRLvBZKxVBsFWhj0Rc60TSRorwOhUOISBWsLgAdb9Owg4iekEzV6ZA
Ta8yVwpFkIoOqJXCiPIm6CSKe8/iGtjQvXMDWWFwbyaXPQyiB76kux+bKVS4DNzd
OAE1R3MPixqhTqfVSVep88JNWlJ5jn+K4gtsfVCYaRusNg+vy2XlzKLatU7TOzEh
PfTwvgKUhlwalUZgPvwVZ20mTutzBmgpDdZJPV520+3fnOkPZ9ESJtDRDUn2l++e
xzPhTFN0TMhRpBUCkTf7eKitB0AwNpfIVNhvdqvZbtGxSl7ymWWcHpfQrSRzufot
bPDSElBxnjjyZu6QzAooF5gVUIJ3F2UxU6/ZKRieYu1hSx6JttUeLZaAohbLzspn
DGvycIaHxkkfC+A0GdKTeBSZmO0EpeB5khQ/htWTyFo0WtGw4YGpIciCS74CqaJx
Iy2WSG+cgLQw5kBFyCeQPD5MNUb9NOzcIg0Wuhgl4rhsE/vMAYQw/uimMtwB/roD
4FrjnX2bSvFNkRFQuggzXOkbRcgkAskVfjI4++PdzTC4OAWCKHnkxEo+LwnCtHol
guvk90FDw4vN+FSwEYp/tIBSlluCS29vHc51aBMJppblAS2cIzr4Tn40U1tQXQ8s
sth2V6GXGJswhPhHAgMBAAGjNTAzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMBkG
A1UdEQQSMBCCDm5zLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4ICAQBOYq8l
4ha1bvUPjp6S7+UMIF3KQRmtJa293GDjL0R/9hLOeoXCzZjRlLJZjgJungm7h/L1
1PVYntJzD03kPqNnTnKNmNRDx9RZ8jik8fSq2Ba0GNDWHOWgrIQ1GrJgy5LJX2nF
ybPyZk8ZIFdqibwtpoL8l2K0tvGMcRftccxJroURNK7EXaSYAt26aU0YdTpNUbeV
C/PaFI1W2vGL2Hglr6AT0oDPsNx3hq8NRUV3/E4xjGHf0GvPGo5+O6/4zH0U05wm
NSd/hBju9Txj1BHzuC+qSjjNHOg4oX+1zWTv61GpQGH8PYqsf4KHxB1SXyuf+OPW
c6Y8VwCyYBAr5M3ywz7mnt0ebVXOOkue3iKdSE1gb9Z6eh7uBiQG2j9P/CrD5tBe
HL1aLHKdwc1aNgWTAOU9uComnEYkYL439c3IgtkW6qLhayv1iNAUf7kQ9QU0rJJX
I8QxHCW7xWC35NpT7We7ptCZ8DhOrAjhZQ34ioge5KDnL7guGENb6gNT599twVfw
nMCyqeaCrf5SVLQ+SYVi2BOfnX4vMUPBXyEgAk+NyQGSetqVPZnLrdYjWqyXseWs
KrLVO8WEiMxioaEDRNg2h2KmtTcigKXS2IyVs6nOWqvAnmleZ224g9T3Xx0/FbT7
MdX3i2i1JzyyjHFxmulYMDQPbGJWv0QFZQqMfg==
-----END CERTIFICATE-----