Skip to content

Commit

Permalink
Merge pull request #105 from optiopay/check_certificates
Browse files Browse the repository at this point in the history
check if certificates is empty strings
  • Loading branch information
2color committed Jun 26, 2018
2 parents 8640b95 + 2f3e9b6 commit b5e5fe6
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 96 deletions.
8 changes: 6 additions & 2 deletions broker.go
Expand Up @@ -181,6 +181,10 @@ type BrokerConf struct {
TLSKey []byte
}

func (conf *BrokerConf) useTLS() bool {
return (len(conf.TLSCa) > 0 && len(conf.TLSKey) > 0 && len(conf.TLSCert) > 0)
}

// NewBrokerConf returns the default broker configuration.
func NewBrokerConf(clientID string) BrokerConf {
return BrokerConf{
Expand Down Expand Up @@ -240,7 +244,7 @@ func Dial(nodeAddresses []string, conf BrokerConf) (*Broker, error) {

conf.Logger.Error("Got an error trying to fetch metadata", "error", err)
}
return nil, errors.New("cannot connect")
return nil, fmt.Errorf("cannot connect to: %s. TLS authentication: %t", nodeAddresses, conf.useTLS())
}

func (b *Broker) getInitialAddresses() []string {
Expand Down Expand Up @@ -622,7 +626,7 @@ func (b *Broker) muLeaderConnection(topic string, partition int32) (conn *connec
func (b *Broker) getConnection(addr string) (*connection, error) {
var c *connection
var err error
if b.conf.TLSCa != nil && b.conf.TLSKey != nil && b.conf.TLSCert != nil {
if b.conf.useTLS() {
c, err = newTLSConnection(addr, b.conf.TLSCa, b.conf.TLSCert, b.conf.TLSKey, b.conf.DialTimeout, b.conf.ReadTimeout)
} else {
c, err = newTCPConnection(addr, b.conf.DialTimeout, b.conf.ReadTimeout)
Expand Down
33 changes: 33 additions & 0 deletions broker_test.go
Expand Up @@ -245,6 +245,39 @@ func TestProducer(t *testing.T) {
broker.Close()
}

func TestBrokerWithEmptyCertificates(t *testing.T) {
srv := NewServer()
srv.Start()
defer srv.Close()

srv.Handle(proto.MetadataReqKind, NewMetadataHandler(srv, false).Handler())

brokerConf := newTestBrokerConf("tester")
brokerConf.TLSCa = []byte{}
brokerConf.TLSCert = []byte{}
brokerConf.TLSKey = []byte{}
broker, err := Dial([]string{srv.Address()}, brokerConf)
if err != nil {
t.Fatalf("cannot create broker: %s", err)
}

prodConf := NewProducerConf()
prodConf.RetryWait = time.Millisecond
producer := broker.Producer(prodConf)
messages := []*proto.Message{
{Value: []byte("first")},
{Value: []byte("second")},
}
_, err = producer.Produce("does-not-exist", 42142, messages...)

// error means that we successfully connected
if err != proto.ErrUnknownTopicOrPartition {
t.Fatalf("expected '%s', got %s", proto.ErrUnknownTopicOrPartition, err)
}

broker.Close()
}

func TestProducerWithNoAck(t *testing.T) {
srv := NewServer()
srv.Start()
Expand Down
34 changes: 17 additions & 17 deletions testkeys/ca.crt
@@ -1,21 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDhTCCAm2gAwIBAgIJAIBp9D1uwfZeMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNV
MIIDiDCCAnCgAwIBAgIJAOTZ9+jChnVhMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNV
BAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcMBkJlcmxpbjERMA8GA1UE
CgwIT3B0aW9wYXkxFTATBgNVBAMMDG9wdGlvcGF5LmNvbTAeFw0xODA0MDkxNzA2
MTBaFw0xODA1MDkxNzA2MTBaMFkxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJs
CgwIT3B0aW9wYXkxFTATBgNVBAMMDG9wdGlvcGF5LmNvbTAeFw0xODA2MjYxNTM4
NDhaFw0xODA3MjYxNTM4NDhaMFkxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJs
aW4xDzANBgNVBAcMBkJlcmxpbjERMA8GA1UECgwIT3B0aW9wYXkxFTATBgNVBAMM
DG9wdGlvcGF5LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPHE
nK0MNtw3n4Dmkq8OB3M1r47EbvUriy/fodG8Te66qZVizxK1MooSHkVvhKgbmMQp
vnXcXPiCmyqsT5mJLpffjvh1ylPPmVPKKdxq3NOUCFyn2knpN4jlC3wMTWCrlqzO
DcQ6rMaj3xWGePlOwPaohzPjaA7N7E5WQAomYBlWrbiIKmZbiyWnc5BIMM2+t0B8
uZ+gJO25HACIwJVrTBNFkY3U3haNoDBDb/6I7dAF6mGwyeydTN/dIW0U4mvuRHk+
ZSrEV/xOkJ0wztER9p0HNqBw16oNbvp5qcLcGGpKaKHwl5dPkYO0ytF/3HX7sLYV
U/vNyHjrdtbKWH9U74MCAwEAAaNQME4wHQYDVR0OBBYEFOml8+I2KaGVXp9BgtFJ
idMbL40RMB8GA1UdIwQYMBaAFOml8+I2KaGVXp9BgtFJidMbL40RMAwGA1UdEwQF
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHpwiQnL1CQaEAt1AW3TsGJAi7QDoIB2
qWxAkIqcL3EurND3eTWpjGqgbDhyYvpLBinXYzy+pK0J7JqD8zcIP80b1iUPJ7/6
popKinT9lD4AMgNhSWd4apJzQymKvs2VmeYsHtcCjce2/unvRSNsg8E0Tes060wF
cHpsLKJ9ukRyR9s5jI7IY6n539mIMm7/e090taPIkkzTTu7AK/78nJyCW09KmnZg
ByDpy5Xo2dO0WfDML9R9k5L8CaQpR3Kh/uJu2SoWgQqaY47gRtKkAWeXgisLiGW3
YU5DDGsPGoZq5I8d5heUShc+blq073nFGgr5ARJkkMTCooPbf4eIGJc=
DG9wdGlvcGF5LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMo0
YLYxXNlznZzLetCAbGjdT67bYDdB6AYhbs3jRmxVrljQPu22sXeNkWF4eUO5XyZu
PGWHHt7ufhu+fZQ0Z3Fq9FGRqrfjKOGd0ejeRb6S2wllNNmjCfw7HGXXNNwdGL/j
5lWiWLHtGtgdzBsL7vNTMgvdGn3U72CEnKVjR38FI9TuLoDQbyZayQjjJYAbJEyy
z/pFD+gZzWnpBOCgE/ztcQZQ5tk9qzlUrGaH3zwiGdn9pyKhv0cEMOhmtn2dcKBv
EAgeVNA6FR9x/+i0Q0d9P2brZXddKzW3ATFeDwDJ7GquqKiPwFCBYmc/ZDwrZXKc
zjhDSpaNIul0jOMsnlECAwEAAaNTMFEwHQYDVR0OBBYEFJn0FxlAlBm3cPKpYxCg
nTtKJl/8MB8GA1UdIwQYMBaAFJn0FxlAlBm3cPKpYxCgnTtKJl/8MA8GA1UdEwEB
/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAKtnBPj1nrPozBRmxN6gO8Lfc/aB
y793CoYvY2ZZxvN40OceukGcsJkH9147qCHygD14FZqSqdHtH5JgBIcVG8QS007g
vhzNemItZQxZKD3Nys8S2NfGsGK3KlrvIN8gRHvejzyq/ZeKpeJ9XZXp/I76a+9V
soN3x0G0Y0vxo8W1lVtTRxYmBEQzSUBCOXLc3xGEhc/+o2RzDGvzeUEzKE7QKWca
IDRpy0F8RjrgvvNAiH2Oeh2ii/Hf7vga766mBEGb6nL/tpV0CQ6jSKm+N63At2G3
O2LsjfJHXzsp8dMxvGGHNwBJxoczW9iKsmnxVzDd4t3HRX0PRB6rle1lDaU=
-----END CERTIFICATE-----
102 changes: 51 additions & 51 deletions testkeys/oats.crt
Expand Up @@ -5,73 +5,73 @@ Certificate:
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Berlin, L=Berlin, O=Optiopay, CN=optiopay.com
Validity
Not Before: Apr 9 17:06:15 2018 GMT
Not After : Apr 6 17:06:15 2028 GMT
Not Before: Jun 26 15:38:53 2018 GMT
Not After : Jun 23 15:38:53 2028 GMT
Subject: C=DE, ST=Berlin, O=Optiopay, CN=optiopay.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:d3:c0:9b:17:27:e8:89:2a:5e:10:19:73:f7:58:
bf:e7:13:dc:3a:ff:90:4f:58:42:25:70:df:86:63:
31:31:a7:f6:0e:06:97:8f:c3:0a:61:a4:46:50:c7:
de:23:24:7f:f1:cd:07:7b:2f:15:23:57:a9:7f:67:
b2:68:82:64:54:de:1e:36:26:7e:c3:fa:25:de:6a:
c0:b5:1f:03:fe:ce:40:3d:bc:c8:50:a0:85:6d:61:
57:27:4d:4c:ef:35:bf:bc:f5:1f:79:53:99:14:a2:
22:63:d9:8f:3f:e2:a5:90:5f:8e:27:44:b4:bd:db:
1f:6e:b1:8d:00:ee:d5:bd:72:6e:82:ac:39:3d:10:
57:2f:b9:c5:b2:a8:65:bd:35:ca:bb:db:79:a2:ec:
a7:51:31:a4:af:5c:a7:4f:ff:fa:87:c2:93:17:59:
b7:58:4f:48:d6:37:cb:e6:73:99:a2:11:b3:a0:90:
1b:77:87:57:12:6a:92:b3:c2:30:e9:26:84:88:75:
74:6f:82:e2:95:99:6d:ca:cb:a3:5e:99:c1:3e:4b:
c1:58:9f:fc:63:5a:9f:24:6b:fd:f3:87:9d:83:9d:
71:33:a3:27:61:57:29:77:7d:aa:f8:7c:9f:0d:49:
54:58:75:4c:01:e1:a2:7d:18:71:ce:f1:33:e8:12:
b2:f9
00:ac:62:62:c1:a7:ad:c6:cf:0a:1f:8e:24:dc:da:
77:14:e7:4c:47:8e:a8:8e:70:83:af:ae:2c:9b:bb:
01:a1:94:71:5f:2d:f1:0a:a6:0a:71:5e:1b:f3:7f:
9a:19:2b:97:5b:78:23:c7:d3:1f:c5:d0:65:3a:71:
e6:97:03:9c:8e:d4:f1:60:ed:7a:0e:1e:86:11:b3:
4a:b5:86:a6:78:5e:1d:01:be:0f:b1:0f:32:04:87:
94:ec:ca:9c:d2:c7:09:0d:c7:56:ca:23:ff:48:fd:
9f:59:b0:36:3e:4e:48:1f:e5:0f:76:3d:a9:e6:b9:
dd:84:43:ec:93:95:a3:a8:2c:1d:da:d8:12:67:f5:
71:06:b0:ae:3a:1a:da:2e:91:e6:6c:80:2b:45:f8:
f9:d5:d2:e2:01:9b:e8:89:90:9d:14:ce:3a:00:84:
2c:81:63:82:70:a5:4b:ec:98:ff:cc:67:67:21:44:
39:78:e4:f8:be:bc:93:d8:e9:12:59:38:7b:2a:0c:
1b:9e:d6:e4:b4:c9:f3:94:37:e0:2d:db:2c:04:f7:
89:ca:c4:47:a6:fe:cb:17:7a:a6:da:49:6b:36:f4:
f0:85:23:56:1d:a9:e5:3f:d0:cf:4e:3d:72:d5:ab:
90:d0:55:50:c7:53:10:22:e3:61:20:9c:1b:28:a7:
a7:d3
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Alternative Name:
DNS:localhost, DNS:0.0.0.0, IP Address:127.0.0.1
X509v3 Subject Key Identifier:
4C:C9:28:B2:E2:B1:26:5B:98:61:71:94:DD:ED:5F:3E:4E:47:26:41
0B:D0:BA:81:6B:C9:1A:C9:5C:75:17:CD:95:07:49:AA:70:8B:D9:08
Signature Algorithm: sha1WithRSAEncryption
90:89:b4:96:8d:8b:52:db:a1:c6:8e:63:a9:86:82:e8:1f:cb:
7b:f0:fe:6f:e4:28:3b:ea:dd:57:93:ee:0a:1b:e2:e6:e8:ed:
d5:fe:98:38:e6:f7:0e:d4:29:38:e1:eb:d1:39:9d:ff:0c:86:
3f:5b:a6:12:72:ee:a1:57:e6:2b:51:3d:57:de:99:7a:24:c4:
24:6e:d5:74:32:f3:9f:f4:85:7c:5b:18:8e:19:26:90:2a:21:
40:9a:ac:91:19:79:24:e0:6b:49:2e:af:16:c8:07:d2:61:8d:
d0:a1:d3:7e:4a:46:82:12:fb:4f:ca:b3:a1:da:9f:43:01:9e:
36:ab:a9:16:46:bf:78:c7:3b:9e:c1:87:6a:ca:e3:14:33:23:
05:a3:9c:90:4c:9f:68:4d:3b:fd:95:c2:e2:9b:c6:e2:7c:11:
c1:ae:e9:6d:2f:1f:5a:43:e5:b7:a3:e8:a4:c7:05:de:8f:f8:
32:71:9a:4a:4d:89:7f:e0:01:c3:03:94:3d:03:1d:83:a9:39:
7f:28:40:bc:b0:49:ae:5a:6b:a8:04:87:28:c0:e4:b1:26:3e:
7e:1b:60:e2:d3:94:95:38:dd:ba:dd:b7:c5:ca:37:bd:29:94:
13:86:83:23:42:58:cd:92:1e:01:23:3c:37:0c:a0:ff:22:74:
ab:da:d7:90
12:e8:a2:7f:e7:cf:f2:5f:22:8b:88:bf:6b:9e:cc:5a:3c:05:
bb:92:27:45:c7:8c:79:80:96:59:c1:c4:99:ee:25:78:cb:4d:
99:a0:6d:34:00:28:84:84:df:4f:7c:3f:00:c8:5d:98:42:e4:
fd:a9:ec:d8:98:0f:c8:00:0d:5c:6c:95:a7:7f:01:65:db:e8:
23:e4:eb:a1:2e:03:fa:3c:b9:b8:78:dd:78:74:8f:bb:06:d4:
2c:9b:da:e2:54:04:01:ef:c2:c7:23:ed:e3:2f:60:c0:1c:35:
02:e6:b9:55:b2:00:22:a2:bd:c5:1b:06:b6:17:df:2c:54:ea:
fb:01:f9:a6:fd:55:9e:44:7a:98:34:1d:85:25:cc:29:62:cf:
19:68:12:cc:cf:1c:ac:e5:3e:6f:a8:a7:f7:00:ae:0f:f4:04:
7f:9c:63:e7:5f:f5:c4:7f:7c:de:da:b4:7a:be:c9:fc:42:ed:
cb:ff:3a:44:d9:d6:5c:26:f2:48:8a:0f:ee:e7:ec:07:7f:d2:
25:e3:16:4b:c3:0e:8e:c2:cc:49:30:0d:af:17:ab:20:5a:42:
c5:1a:16:42:46:fe:50:82:ab:0a:f5:59:96:1a:dc:05:e7:07:
99:16:3c:77:a6:8a:44:34:18:52:6b:14:0a:6e:2f:28:09:eb:
cf:dd:24:1d
-----BEGIN CERTIFICATE-----
MIIDbTCCAlWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJERTEP
MA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xETAPBgNVBAoMCE9wdGlv
cGF5MRUwEwYDVQQDDAxvcHRpb3BheS5jb20wHhcNMTgwNDA5MTcwNjE1WhcNMjgw
NDA2MTcwNjE1WjBIMQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmVybGluMREwDwYD
cGF5MRUwEwYDVQQDDAxvcHRpb3BheS5jb20wHhcNMTgwNjI2MTUzODUzWhcNMjgw
NjIzMTUzODUzWjBIMQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmVybGluMREwDwYD
VQQKDAhPcHRpb3BheTEVMBMGA1UEAwwMb3B0aW9wYXkuY29tMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA08CbFyfoiSpeEBlz91i/5xPcOv+QT1hCJXDf
hmMxMaf2DgaXj8MKYaRGUMfeIyR/8c0Hey8VI1epf2eyaIJkVN4eNiZ+w/ol3mrA
tR8D/s5APbzIUKCFbWFXJ01M7zW/vPUfeVOZFKIiY9mPP+KlkF+OJ0S0vdsfbrGN
AO7VvXJugqw5PRBXL7nFsqhlvTXKu9t5ouynUTGkr1ynT//6h8KTF1m3WE9I1jfL
5nOZohGzoJAbd4dXEmqSs8Iw6SaEiHV0b4LilZltysujXpnBPkvBWJ/8Y1qfJGv9
84edg51xM6MnYVcpd32q+HyfDUlUWHVMAeGifRhxzvEz6BKy+QIDAQABo1EwTzAJ
9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGJiwaetxs8KH44k3Np3FOdMR46ojnCDr64s
m7sBoZRxXy3xCqYKcV4b83+aGSuXW3gjx9MfxdBlOnHmlwOcjtTxYO16Dh6GEbNK
tYameF4dAb4PsQ8yBIeU7Mqc0scJDcdWyiP/SP2fWbA2Pk5IH+UPdj2p5rndhEPs
k5WjqCwd2tgSZ/VxBrCuOhraLpHmbIArRfj51dLiAZvoiZCdFM46AIQsgWOCcKVL
7Jj/zGdnIUQ5eOT4vryT2OkSWTh7KgwbntbktMnzlDfgLdssBPeJysRHpv7LF3qm
2klrNvTwhSNWHanlP9DPTj1y1auQ0FVQx1MQIuNhIJwbKKen0wIDAQABo1EwTzAJ
BgNVHRMEAjAAMCMGA1UdEQQcMBqCCWxvY2FsaG9zdIIHMC4wLjAuMIcEfwAAATAd
BgNVHQ4EFgQUTMkosuKxJluYYXGU3e1fPk5HJkEwDQYJKoZIhvcNAQEFBQADggEB
AJCJtJaNi1LbocaOY6mGgugfy3vw/m/kKDvq3VeT7gob4ubo7dX+mDjm9w7UKTjh
69E5nf8Mhj9bphJy7qFX5itRPVfemXokxCRu1XQy85/0hXxbGI4ZJpAqIUCarJEZ
eSTga0kurxbIB9JhjdCh035KRoIS+0/Ks6Han0MBnjarqRZGv3jHO57Bh2rK4xQz
IwWjnJBMn2hNO/2VwuKbxuJ8EcGu6W0vH1pD5bej6KTHBd6P+DJxmkpNiX/gAcMD
lD0DHYOpOX8oQLywSa5aa6gEhyjA5LEmPn4bYOLTlJU43brdt8XKN70plBOGgyNC
WM2SHgEjPDcMoP8idKva15A=
BgNVHQ4EFgQUC9C6gWvJGslcdRfNlQdJqnCL2QgwDQYJKoZIhvcNAQEFBQADggEB
ABLoon/nz/JfIouIv2uezFo8BbuSJ0XHjHmAllnBxJnuJXjLTZmgbTQAKISE3098
PwDIXZhC5P2p7NiYD8gADVxslad/AWXb6CPk66EuA/o8ubh43Xh0j7sG1Cyb2uJU
BAHvwscj7eMvYMAcNQLmuVWyACKivcUbBrYX3yxU6vsB+ab9VZ5Eepg0HYUlzCli
zxloEszPHKzlPm+op/cArg/0BH+cY+df9cR/fN7atHq+yfxC7cv/OkTZ1lwm8kiK
D+7n7Ad/0iXjFkvDDo7CzEkwDa8XqyBaQsUaFkJG/lCCqwr1WZYa3AXnB5kWPHem
ikQ0GFJrFApuLygJ68/dJB0=
-----END CERTIFICATE-----
52 changes: 26 additions & 26 deletions testkeys/oats.key
@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDTwJsXJ+iJKl4Q
GXP3WL/nE9w6/5BPWEIlcN+GYzExp/YOBpePwwphpEZQx94jJH/xzQd7LxUjV6l/
Z7JogmRU3h42Jn7D+iXeasC1HwP+zkA9vMhQoIVtYVcnTUzvNb+89R95U5kUoiJj
2Y8/4qWQX44nRLS92x9usY0A7tW9cm6CrDk9EFcvucWyqGW9Ncq723mi7KdRMaSv
XKdP//qHwpMXWbdYT0jWN8vmc5miEbOgkBt3h1cSapKzwjDpJoSIdXRvguKVmW3K
y6NemcE+S8FYn/xjWp8ka/3zh52DnXEzoydhVyl3far4fJ8NSVRYdUwB4aJ9GHHO
8TPoErL5AgMBAAECggEAE4w6RP74JoF0wYO4AuN8g7Z/pCqnhcud/5rV57AMgIsC
2fSd1TWqJa1mmFp7FT9vWEEXKbYE+4hCK3LFM4SmAnemzlTraugSyt+L/qxoUAN2
RrzAuUC4UIql4wjtyz9o/eabCzY+cXsuNY2F/d3MbvGDS/i5vrUVx8A4RhfGP4C/
19ueW8Lo/fOMzxy5CmKnoMmSZtdBTUtI5j/zoj/tz2JysW0Naol8RaJSTiCg5ffJ
2kN8Gad5/nnKvUaxNck4zDNePmCQAfVv9Qd8saUUiKTlsxCnrqkRfBgQRdlVvAZI
zxgPOUUSkB6y/vqDw4h9DUgEtNbCG3ev1FfxGS8DyQKBgQDtq4oAn1wcV0HiGUrp
opwyR4z2Blh0zAl9yZlxks8+64DsdeR9sRQ+777xb4TvLdEa33myi1fZGwElhrej
0DHSsu5CThg5PnXaboXkeqeHtAi/5F6C03YZCvgHpH/Uyi4D5q+o0I1pRF50Mh+G
Dmj2RO9QrGt2VvctmX1w0yzMwwKBgQDkFVusqtoyLVPOKP+126ZKBxXuphJfLjgN
yFxOnHUxx76PBlhqgEN3nZUJf7GwsPx6ijEjDmSnRFkKtVEGmmsmON/eBV7hw+jY
562uQWKac2+svjSqFTwblo1rcA1NcsUetRdyqVFVApOdcT+dmxbX3aeUY8lSZCvK
Qif1eOx1kwKBgQDYnkRFlPmLCyyNOqhAkWjzmqsrgVUV/vGXqCsmjLw/iL4Uxs7e
kIr3YeQSgaYTqRqw94Yf6UjEJAzDeyndMGB4vYTTAgKqCfe4goueVvxifwCKhUZu
zvUQliLCNHgeJbgS7iqkHpEEpL/B//0jXfbknqfQS5YWYeUftonST2bBqQKBgDXV
BKogOReWsyz5aEEX8ouOWJLXB4cHdZtrKr4zF0YEiule6gdY9pOI0eBIDzxQyYZy
j15iy0bfTtTELreMQrXmvo+8XMSUZKStKcTzEb66eCUhT3TFRkaMphwxejJJYFT7
EOmzJMsXrJeAXy9np2CTpDXVx3J2yg8Wxi+dttGZAoGAWWXfUDWLrc6z7WhvPSwb
MLlcpvxEX0HG0WbvEvrPE18shEzXj9hBfZHk4bJ7rAtCfF6yEC/4bPmzLBmbpexm
XoQOxUgQ4yxXpIgy5Ti2Vq6h/R4bdBwrw1yge/cDuPAAG/0tXihLREWb+q7cjijd
i1HTdvKe7/HVxMF9Ws4ytVU=
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCsYmLBp63Gzwof
jiTc2ncU50xHjqiOcIOvriybuwGhlHFfLfEKpgpxXhvzf5oZK5dbeCPH0x/F0GU6
ceaXA5yO1PFg7XoOHoYRs0q1hqZ4Xh0Bvg+xDzIEh5TsypzSxwkNx1bKI/9I/Z9Z
sDY+Tkgf5Q92Panmud2EQ+yTlaOoLB3a2BJn9XEGsK46GtoukeZsgCtF+PnV0uIB
m+iJkJ0UzjoAhCyBY4JwpUvsmP/MZ2chRDl45Pi+vJPY6RJZOHsqDBue1uS0yfOU
N+At2ywE94nKxEem/ssXeqbaSWs29PCFI1YdqeU/0M9OPXLVq5DQVVDHUxAi42Eg
nBsop6fTAgMBAAECggEATuZJJTHGC/S/QWoh3SPw1RR4iVf2NhuxajtiF3Ukbfwv
V80DQkh1ByZ3zJ9evJ6DDE6UseUj6bpUWse/LudsRMOaJy8KamP2ISvayfLzRqxs
wltnezblQcV8mFS0KpUGw9O1GZgYRCQxRy+r5CCYSmDhDtFybjQr+1nLclFPMq0e
LGByViFeicAw80bacJVX+QYc5eZG9pZ3CFGLrV4CW1xm0JnmFFmwbCTutolJmrR7
sVi69GqRmySLSCQ/XqbBO+l/K2GQuS9FvAQSIV5gqPg9D7n9fgXYJrLceOzDINj5
uc/pObBkv/ZT07hblTaFiZGQM6Pc5NDr1QWtFl04oQKBgQDYEkwvlAvTOZpD3xrT
AtAkrzB1lEUjYGVwZ82zsQbYoN8B3pwgAHVwCA2yesarKZYKhlnhxjiKSJgR/cLZ
DLNwx+ZopTWd89hsbpC8UGetV3W3lbvVZx8OEEhrMZi6aocX1m3soIsUtk7ToAIH
qEGHpk1ceJa7vC1eld399YegRwKBgQDMPWDH57cNcIQ2xxUTkVph7aq9NFIyLghz
NzXZXZfeYs7NyMzrpM+UhsrrG2Js6Hm1lkTfqMtyEMTVC1JnBNicb8dzx0U0oxtj
44MsscjSfelGlWDRoXIaY/3N6FALumdFHV6kS2+ZINlPREz4sx1FNkKWjf4b3PL5
g1JkGo9uFQKBgEy/2x3/WV/zEw/OvOl9E1AkhnMNcq2JPR77UD7mv8bNBcnVN+HK
J+zef3cJU25S/D/Kzzx6O3UrKhEh8UdF0qtZ5kb/gBcWGacScwjhCqKw8Vh/sFOy
KH7HW+HvoQ9+bXQTL8KgmCaIR2G2cWIk6vnzIYGaN/iBdCAn3c2qnD1bAoGBAIFR
e64XsXf4/j4Q3+974VaQPcN/FWxgaUlKc/YlpLtSpM73jYjG2giZMHKc7D05FZc8
hm93WRnoNDkQ6iQAlYa33/oW+mLRw84DiFMMXrOotcPTYXJaXv0GwvVVWxmR9UF1
zy8H9KloezANdw8hmi7wpEjfrz3FMLN7yvdHOfnhAoGBAIdhvfznldnJ8wqe4k+3
sbcFKvhxvHeaLYHbEiP7EDrMkDQpvPaycmDdjPYMtlfBqeUJAyarwY6sJIlWQD+L
xesL09i9DDbwTJrrNtWIe6XuHJU2tZerTAl8iVP43E3x+pJgGdsrE75hO4fpXAq0
YSHjVkz/gPyz1FCCluFxIg14
-----END PRIVATE KEY-----

0 comments on commit b5e5fe6

Please sign in to comment.