Skip to content

Commit 1c85910

Browse files
committed
implement gh actions workflow
1 parent 9e747ca commit 1c85910

File tree

12 files changed

+414
-212
lines changed

12 files changed

+414
-212
lines changed

.github/workflows/test.yml

Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
name: Test
2+
3+
on:
4+
pull_request:
5+
branches: [ master ]
6+
7+
jobs:
8+
test:
9+
runs-on: ubuntu-latest
10+
strategy:
11+
fail-fast: false
12+
matrix:
13+
postgres:
14+
- '13'
15+
- '12'
16+
- '11'
17+
- '10'
18+
- '9.6'
19+
go:
20+
- '1.17'
21+
- '1.16'
22+
- '1.15'
23+
- '1.14'
24+
steps:
25+
- name: setup postgres pre-reqs
26+
run: |
27+
mkdir init
28+
cat <<CONF > init/root.crt
29+
-----BEGIN CERTIFICATE-----
30+
MIIEBjCCAu6gAwIBAgIJAPizR+OD14YnMA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV
31+
BAYTAlVTMQ8wDQYDVQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgG
32+
A1UECgwRZ2l0aHViLmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBMB4XDTIxMDkw
33+
MjAxNTUwMloXDTMxMDkwMzAxNTUwMlowXjELMAkGA1UEBhMCVVMxDzANBgNVBAgM
34+
Bk5ldmFkYTESMBAGA1UEBwwJTGFzIFZlZ2FzMRowGAYDVQQKDBFnaXRodWIuY29t
35+
L2xpYi9wcTEOMAwGA1UEAwwFcHEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
36+
ggEKAoIBAQDb9d6sjdU6GdibGrXRMOHREH3MRUS8T4TFqGgPEGVDP/V5bAZlBSGP
37+
AN0o9DTyVLcbQpBt8zMTw9KeIzIIe5NIVkSmA16lw/YckGhOM+kZIkiDuE6qt5Ia
38+
OQCRMdXkZ8ejG/JUu+rHU8FJZL8DE+jyYherzdjkeVAQ7JfzxAwW2Dl7T/47g337
39+
Pwmf17AEb8ibSqmXyUN7R5NhJQs+hvaYdNagzdx91E1H+qlyBvmiNeasUQljLvZ+
40+
Y8wAuU79neA+d09O4PBiYwV17rSP6SZCeGE3oLZviL/0KM9Xig88oB+2FmvQ6Zxa
41+
L7SoBlqS+5pBZwpH7eee/wCIKAnJtMAJAgMBAAGjgcYwgcMwDwYDVR0TAQH/BAUw
42+
AwEB/zAdBgNVHQ4EFgQUfIXEczahbcM2cFrwclJF7GbdajkwgZAGA1UdIwSBiDCB
43+
hYAUfIXEczahbcM2cFrwclJF7GbdajmhYqRgMF4xCzAJBgNVBAYTAlVTMQ8wDQYD
44+
VQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgGA1UECgwRZ2l0aHVi
45+
LmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBggkA+LNH44PXhicwDQYJKoZIhvcN
46+
AQELBQADggEBABFyGgSz2mHVJqYgX1Y+7P+MfKt83cV2uYDGYvXrLG2OGiCilVul
47+
oTBG+8omIMSHOsQZvWMpA5H0tnnlQHrKpKpUyKkSL+Wv5GL0UtBmHX7mVRiaK2l4
48+
q2BjRaQUitp/FH4NSdXtVrMME5T1JBBZHsQkNL3cNRzRKwY/Vj5UGEDxDS7lILUC
49+
e01L4oaK0iKQn4beALU+TvKoAHdPvoxpPpnhkF5ss9HmdcvRktJrKZemDJZswZ7/
50+
+omx8ZPIYYUH5VJJYYE88S7guAt+ZaKIUlel/t6xPbo2ZySFSg9u1uB99n+jTo3L
51+
1rAxFnN3FCX2jBqgP29xMVmisaN5k04UmyI=
52+
-----END CERTIFICATE-----
53+
CONF
54+
cat <<CONF > init/server.crt
55+
-----BEGIN CERTIFICATE-----
56+
MIIDqzCCApOgAwIBAgIJAPiewLrOyYipMA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV
57+
BAYTAlVTMQ8wDQYDVQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgG
58+
A1UECgwRZ2l0aHViLmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBMB4XDTIxMDkw
59+
MjAxNTUwMloXDTMxMDkwMzAxNTUwMlowTjELMAkGA1UEBhMCVVMxDzANBgNVBAgM
60+
Bk5ldmFkYTESMBAGA1UEBwwJTGFzIFZlZ2FzMRowGAYDVQQKDBFnaXRodWIuY29t
61+
L2xpYi9wcTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKf6H4UzmANN
62+
QiQJe92Mf3ETMYmpZKNNO9DPEHyNLIkag+XwMrBTdcCK0mLvsNCYpXuBN6703KCd
63+
WAFOeMmj7gOsWtvjt5Xm6bRHLgegekXzcG/jDwq/wyzeDzr/YkITuIlG44Lf9lhY
64+
FLwiHlHOWHnwrZaEh6aU//02aQkzyX5INeXl/3TZm2G2eIH6AOxOKOU27MUsyVSQ
65+
5DE+SDKGcRP4bElueeQWvxAXNMZYb7sVSDdfHI3zr32K4k/tC8x0fZJ5XN/dvl4t
66+
4N4MrYlmDO5XOrb/gQH1H4iu6+5EMDfZYab4fkThnNFdfFqu4/8Scv7KZ8mWqpKM
67+
fGAjEPctQi0CAwEAAaN8MHowHQYDVR0OBBYEFENExPbmDyFB2AJUdbMvVyhlNPD5
68+
MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBMGA1UdEQQMMAqCCHBvc3RncmVzMCwG
69+
CWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTANBgkq
70+
hkiG9w0BAQsFAAOCAQEAMRVbV8RiEsmp9HAtnVCZmRXMIbgPGrqjeSwk586s4K8v
71+
BSqNCqxv6s5GfCRmDYiqSqeuCVDtUJS1HsTmbxVV7Ke71WMo+xHR1ICGKOa8WGCb
72+
TGsuicG5QZXWaxeMOg4s0qpKmKko0d1aErdVsanU5dkrVS7D6729Ffnzu4lwApk6
73+
invAB67p8u7sojwqRq5ce0vRaG+YFylTrWomF9kauEb8gKbQ9Xc7QfX+h+UH/mq9
74+
Nvdj8LOHp6/82bZdnsYUOtV4lS1IA/qzeXpqBphxqfWabD1yLtkyJyImZKq8uIPp
75+
0CG4jhObPdWcCkXD6bg3QK3mhwlC79OtFgxWmldCRQ==
76+
-----END CERTIFICATE-----
77+
CONF
78+
cat <<CONF > init/server.key
79+
-----BEGIN PRIVATE KEY-----
80+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCn+h+FM5gDTUIk
81+
CXvdjH9xEzGJqWSjTTvQzxB8jSyJGoPl8DKwU3XAitJi77DQmKV7gTeu9NygnVgB
82+
TnjJo+4DrFrb47eV5um0Ry4HoHpF83Bv4w8Kv8Ms3g86/2JCE7iJRuOC3/ZYWBS8
83+
Ih5Rzlh58K2WhIemlP/9NmkJM8l+SDXl5f902ZthtniB+gDsTijlNuzFLMlUkOQx
84+
PkgyhnET+GxJbnnkFr8QFzTGWG+7FUg3XxyN8699iuJP7QvMdH2SeVzf3b5eLeDe
85+
DK2JZgzuVzq2/4EB9R+IruvuRDA32WGm+H5E4ZzRXXxaruP/EnL+ymfJlqqSjHxg
86+
IxD3LUItAgMBAAECggEAOE2naQ9tIZYw2EFxikZApVcooJrtx6ropMnzHbx4NBB2
87+
K4mChAXFj184u77ZxmGT/jzGvFcI6LE0wWNbK0NOUV7hKZk/fPhkV3AQZrAMrAu4
88+
IVi7PwAd3JkmA8F8XuebUDA5rDGDsgL8GD9baFJA58abeLs9eMGyuF4XgOUh4bip
89+
hgHa76O2rcDWNY5HZqqRslw75FzlYkB0PCts/UJxSswj70kTTihyOhDlrm2TnyxI
90+
ne54UbGRrpfs9wiheSGLjDG81qZToBHQDwoAnjjZhu1VCaBISuGbgZrxyyRyqdnn
91+
xPW+KczMv04XyvF7v6Pz+bUEppalLXGiXnH5UtWvZQKBgQDTPCdMpNE/hwlq4nAw
92+
Kf42zIBWfbnMLVWYoeDiAOhtl9XAUAXn76xe6Rvo0qeAo67yejdbJfRq3HvGyw+q
93+
4PS8r9gXYmLYIPQxSoLL5+rFoBCN3qFippfjLB1j32mp7+15KjRj8FF2r6xIN8fu
94+
XatSRsaqmvCWYLDRv/rbHnxwkwKBgQDLkyfFLF7BtwtPWKdqrwOM7ip1UKh+oDBS
95+
vkCQ08aEFRBU7T3jChsx5GbaW6zmsSBwBwcrHclpSkz7n3aq19DDWObJR2p80Fma
96+
rsXeIcvtEpkvT3pVX268P5d+XGs1kxgFunqTysG9yChW+xzcs5MdKBzuMPPn7rL8
97+
MKAzdar6PwKBgEypkzW8x3h/4Moa3k6MnwdyVs2NGaZheaRIc95yJ+jGZzxBjrMr
98+
h+p2PbvU4BfO0AqOkpKRBtDVrlJqlggVVp04UHvEKE16QEW3Xhr0037f5cInX3j3
99+
Lz6yXwRFLAsR2aTUzWjL6jTh8uvO2s/GzQuyRh3a16Ar/WBShY+K0+zjAoGATnLT
100+
xZjWnyHRmu8X/PWakamJ9RFzDPDgDlLAgM8LVgTj+UY/LgnL9wsEU6s2UuP5ExKy
101+
QXxGDGwUhHar/SQTj+Pnc7Mwpw6HKSOmnnY5po8fNusSwml3O9XppEkrC0c236Y/
102+
7EobJO5IFVTJh4cv7vFxTJzSsRL8KFD4uzvh+nMCgYEAqY8NBYtIgNJA2B6C6hHF
103+
+bG7v46434ZHFfGTmMQwzE4taVg7YRnzYESAlvK4bAP5ZXR90n7GRGFhrXzoMZ38
104+
r0bw/q9rV+ReGda7/Bjf7ciCKiq0RODcHtf4IaskjPXCoQRGJtgCPLhWPfld6g9v
105+
/HTvO96xv9e3eG/PKSPog94=
106+
-----END PRIVATE KEY-----
107+
CONF
108+
cat <<CONF > init/hba.sh
109+
cat <<EOF > /var/lib/postgresql/data/pg_hba.conf
110+
local all all trust
111+
host all postgres all trust
112+
hostnossl all pqgossltest all reject
113+
hostnossl all pqgosslcert all reject
114+
hostssl all pqgossltest all trust
115+
hostssl all pqgosslcert all cert
116+
host all all all trust
117+
EOF
118+
CONF
119+
sudo chown 999:999 ./init/*
120+
sudo chmod 600 ./init/*
121+
122+
- name: start postgres
123+
run: |
124+
docker run -d \
125+
--name pg \
126+
-p 5432:5432 \
127+
-v $(pwd)/init:/init \
128+
-e POSTGRES_PASSWORD=unused \
129+
-e POSTGRES_USER=postgres \
130+
postgres:${{ matrix.postgres }} \
131+
-c ssl=on \
132+
-c ssl_ca_file=/init/root.crt \
133+
-c ssl_cert_file=/init/server.crt \
134+
-c ssl_key_file=/init/server.key
135+
136+
- name: configure postgres
137+
run: |
138+
n=0
139+
until [ "$n" -ge 10 ]
140+
do
141+
docker exec pg pg_isready -h localhost && break
142+
n=$((n+1))
143+
echo waiting for postgres to be ready...
144+
sleep 1
145+
done
146+
docker exec pg bash /init/hba.sh
147+
n=0
148+
until [ "$n" -ge 10 ]
149+
do
150+
docker exec pg su postgres -c '/usr/lib/postgresql/${{ matrix.postgres }}/bin/pg_ctl reload' && break
151+
n=$((n+1))
152+
echo waiting for postgres to reload...
153+
sleep 1
154+
done
155+
156+
- name: setup hosts
157+
run: echo '127.0.0.1 postgres' | sudo tee -a /etc/hosts
158+
159+
- name: create db/roles
160+
run: |
161+
n=0
162+
until [ "$n" -ge 10 ]
163+
do
164+
docker exec pg pg_isready -h localhost && break
165+
n=$((n+1))
166+
echo waiting for postgres to be ready...
167+
sleep 1
168+
done
169+
docker exec pg createdb -h localhost -U postgres pqgotest
170+
docker exec pg createuser -h localhost -U postgres -DRS pqgossltest
171+
docker exec pg createuser -h localhost -U postgres -DRS pqgosslcert
172+
173+
- name: check out code into the Go module directory
174+
uses: actions/checkout@v2
175+
176+
- name: set up go
177+
uses: actions/setup-go@v2
178+
with:
179+
go-version: ${{ matrix.go }}
180+
id: go
181+
182+
- name: set key perms
183+
run: sudo chmod 600 certs/postgresql.key
184+
185+
- name: run tests
186+
env:
187+
PGUSER: postgres
188+
PGHOST: localhost
189+
PGPORT: 5432
190+
PQGOSSLTESTS: 1
191+
PQSSLCERTTEST_PATH: certs
192+
run: |
193+
PQTEST_BINARY_PARAMETERS=no go test -race -v ./...
194+
PQTEST_BINARY_PARAMETERS=yes go test -race -v ./...
195+
196+
- name: install goimports
197+
run: go get golang.org/x/tools/cmd/goimports
198+
199+
- name: install staticcheck
200+
run: |
201+
wget https://github.com/dominikh/go-tools/releases/latest/download/staticcheck_linux_amd64.tar.gz -O - | tar -xz staticcheck
202+
203+
- name: run goimports
204+
run: |
205+
goimports -d -e . | awk '{ print } END { exit NR == 0 ? 0 : 1 }'
206+
207+
- name: run staticcheck
208+
run: ./staticcheck/staticcheck -go 1.13 ./...
209+
210+
- name: build
211+
run: go build -v .

Makefile

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
.PHONY: all root-ssl server-ssl client-ssl
2+
3+
all: root-ssl server-ssl client-ssl
4+
rm -f .srl
5+
6+
root-ssl:
7+
openssl req -new -sha256 -nodes -newkey rsa:2048 \
8+
-config ./certs/root.cnf \
9+
-keyout /tmp/root.key \
10+
-out /tmp/root.csr
11+
openssl x509 -req -days 3653 -sha256 \
12+
-in /tmp/root.csr \
13+
-extfile /etc/ssl/openssl.cnf -extensions v3_ca \
14+
-signkey /tmp/root.key \
15+
-out ./certs/root.crt
16+
17+
server-ssl:
18+
openssl req -new -sha256 -nodes -newkey rsa:2048 \
19+
-config ./certs/server.cnf \
20+
-keyout ./certs/server.key \
21+
-out /tmp/server.csr
22+
openssl x509 -req -days 3653 -sha256 \
23+
-extfile ./certs/server.cnf -extensions req_ext \
24+
-CA ./certs/root.crt -CAkey /tmp/root.key -CAcreateserial \
25+
-in /tmp/server.csr \
26+
-out ./certs/server.crt
27+
28+
client-ssl:
29+
openssl req -new -sha256 -nodes -newkey rsa:2048 \
30+
-config ./certs/postgresql.cnf \
31+
-keyout ./certs/postgresql.key \
32+
-out /tmp/postgresql.csr
33+
openssl x509 -req -days 3653 -sha256 \
34+
-CA ./certs/root.crt -CAkey /tmp/root.key -CAcreateserial \
35+
-in /tmp/postgresql.csr \
36+
-out ./certs/postgresql.crt

auth/kerberos/krb_unix.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// +build !windows
1+
//+build !windows
22

33
package kerberos
44

auth/kerberos/krb_windows.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// +build windows
1+
//+build windows
22

33
package kerberos
44

certs/postgresql.cnf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[req]
2+
distinguished_name = req_distinguished_name
3+
prompt = no
4+
5+
[req_distinguished_name]
6+
C = US
7+
ST = Nevada
8+
L = Las Vegas
9+
O = github.com/lib/pq
10+
CN = pqgosslcert

certs/postgresql.crt

Lines changed: 18 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,20 @@
1-
Certificate:
2-
Data:
3-
Version: 3 (0x2)
4-
Serial Number: 2 (0x2)
5-
Signature Algorithm: sha256WithRSAEncryption
6-
Issuer: C=US, ST=Nevada, L=Las Vegas, O=github.com/lib/pq, CN=pq CA
7-
Validity
8-
Not Before: Oct 11 15:10:11 2014 GMT
9-
Not After : Oct 8 15:10:11 2024 GMT
10-
Subject: C=US, ST=Nevada, L=Las Vegas, O=github.com/lib/pq, CN=pqgosslcert
11-
Subject Public Key Info:
12-
Public Key Algorithm: rsaEncryption
13-
RSA Public Key: (1024 bit)
14-
Modulus (1024 bit):
15-
00:e3:8c:06:9a:70:54:51:d1:34:34:83:39:cd:a2:
16-
59:0f:05:ed:8d:d8:0e:34:d0:92:f4:09:4d:ee:8c:
17-
78:55:49:24:f8:3c:e0:34:58:02:b2:e7:94:58:c1:
18-
e8:e5:bb:d1:af:f6:54:c1:40:b1:90:70:79:0d:35:
19-
54:9c:8f:16:e9:c2:f0:92:e6:64:49:38:c1:76:f8:
20-
47:66:c4:5b:4a:b6:a9:43:ce:c8:be:6c:4d:2b:94:
21-
97:3c:55:bc:d1:d0:6e:b7:53:ae:89:5c:4b:6b:86:
22-
40:be:c1:ae:1e:64:ce:9c:ae:87:0a:69:e5:c8:21:
23-
12:be:ae:1d:f6:45:df:16:a7
24-
Exponent: 65537 (0x10001)
25-
X509v3 extensions:
26-
X509v3 Subject Key Identifier:
27-
9B:25:31:63:A2:D8:06:FF:CB:E3:E9:96:FF:0D:BA:DC:12:7D:04:CF
28-
X509v3 Authority Key Identifier:
29-
keyid:52:93:ED:1E:76:0A:9F:65:4F:DE:19:66:C1:D5:22:40:35:CB:A0:72
30-
31-
X509v3 Basic Constraints:
32-
CA:FALSE
33-
X509v3 Key Usage:
34-
Digital Signature, Non Repudiation, Key Encipherment
35-
Signature Algorithm: sha256WithRSAEncryption
36-
3e:f5:f8:0b:4e:11:bd:00:86:1f:ce:dc:97:02:98:91:11:f5:
37-
65:f6:f2:8a:b2:3e:47:92:05:69:28:c9:e9:b4:f7:cf:93:d1:
38-
2d:81:5d:00:3c:23:be:da:70:ea:59:e1:2c:d3:25:49:ae:a6:
39-
95:54:c1:10:df:23:e3:fe:d6:e4:76:c7:6b:73:ad:1b:34:7c:
40-
e2:56:cc:c0:37:ae:c5:7a:11:20:6c:3d:05:0e:99:cd:22:6c:
41-
cf:59:a1:da:28:d4:65:ba:7d:2f:2b:3d:69:6d:a6:c1:ae:57:
42-
bf:56:64:13:79:f8:48:46:65:eb:81:67:28:0b:7b:de:47:10:
43-
b3:80:3c:31:d1:58:94:01:51:4a:c7:c8:1a:01:a8:af:c4:cd:
44-
bb:84:a5:d9:8b:b4:b9:a1:64:3e:95:d9:90:1d:d5:3f:67:cc:
45-
3b:ba:f5:b4:d1:33:77:ee:c2:d2:3e:7e:c5:66:6e:b7:35:4c:
46-
60:57:b0:b8:be:36:c8:f3:d3:95:8c:28:4a:c9:f7:27:a4:0d:
47-
e5:96:99:eb:f5:c8:bd:f3:84:6d:ef:02:f9:8a:36:7d:6b:5f:
48-
36:68:37:41:d9:74:ae:c6:78:2e:44:86:a1:ad:43:ca:fb:b5:
49-
3e:ba:10:23:09:02:ac:62:d1:d0:83:c8:95:b9:e3:5e:30:ff:
50-
5b:2b:38:fa
511
-----BEGIN CERTIFICATE-----
52-
MIIDEzCCAfugAwIBAgIBAjANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJVUzEP
53-
MA0GA1UECBMGTmV2YWRhMRIwEAYDVQQHEwlMYXMgVmVnYXMxGjAYBgNVBAoTEWdp
54-
dGh1Yi5jb20vbGliL3BxMQ4wDAYDVQQDEwVwcSBDQTAeFw0xNDEwMTExNTEwMTFa
55-
Fw0yNDEwMDgxNTEwMTFaMGQxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZOZXZhZGEx
56-
EjAQBgNVBAcTCUxhcyBWZWdhczEaMBgGA1UEChMRZ2l0aHViLmNvbS9saWIvcHEx
57-
FDASBgNVBAMTC3BxZ29zc2xjZXJ0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
58-
gQDjjAaacFRR0TQ0gznNolkPBe2N2A400JL0CU3ujHhVSST4POA0WAKy55RYwejl
59-
u9Gv9lTBQLGQcHkNNVScjxbpwvCS5mRJOMF2+EdmxFtKtqlDzsi+bE0rlJc8VbzR
60-
0G63U66JXEtrhkC+wa4eZM6crocKaeXIIRK+rh32Rd8WpwIDAQABo1owWDAdBgNV
61-
HQ4EFgQUmyUxY6LYBv/L4+mW/w263BJ9BM8wHwYDVR0jBBgwFoAUUpPtHnYKn2VP
62-
3hlmwdUiQDXLoHIwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQEL
63-
BQADggEBAD71+AtOEb0Ahh/O3JcCmJER9WX28oqyPkeSBWkoyem098+T0S2BXQA8
64-
I77acOpZ4SzTJUmuppVUwRDfI+P+1uR2x2tzrRs0fOJWzMA3rsV6ESBsPQUOmc0i
65-
bM9Zodoo1GW6fS8rPWltpsGuV79WZBN5+EhGZeuBZygLe95HELOAPDHRWJQBUUrH
66-
yBoBqK/EzbuEpdmLtLmhZD6V2ZAd1T9nzDu69bTRM3fuwtI+fsVmbrc1TGBXsLi+
67-
Nsjz05WMKErJ9yekDeWWmev1yL3zhG3vAvmKNn1rXzZoN0HZdK7GeC5EhqGtQ8r7
68-
tT66ECMJAqxi0dCDyJW5414w/1srOPo=
2+
MIIDPjCCAiYCCQD4nsC6zsmIqjANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJV
3+
UzEPMA0GA1UECAwGTmV2YWRhMRIwEAYDVQQHDAlMYXMgVmVnYXMxGjAYBgNVBAoM
4+
EWdpdGh1Yi5jb20vbGliL3BxMQ4wDAYDVQQDDAVwcSBDQTAeFw0yMTA5MDIwMTU1
5+
MDJaFw0zMTA5MDMwMTU1MDJaMGQxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIDAZOZXZh
6+
ZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgGA1UECgwRZ2l0aHViLmNvbS9saWIv
7+
cHExFDASBgNVBAMMC3BxZ29zc2xjZXJ0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
8+
MIIBCgKCAQEAx0ucPVUNCrVmbyithwWrmmZ1dGudBwhSyDB6af4z5Cr+S6dx2SRU
9+
UGUw3Lv+z+tUqQ7hJj0oNddIQeYKl/Tt6JPpZsQfERP/cUGedtyt7HnCKobBL+0B
10+
NvHnDIUiIL4LgfiZK4DWJkGmm7nTHo/7qKAw60vCMLUW98DC0Xhlk9MHYG+e9Zai
11+
3G0vY2X6DUYcSmzBI3JakFEgMZTQg3ofUQMz8TYeK3/DYadLXkl08d18LL3Dnefx
12+
0xRuBPNTa2tLfVnFkfFi6Z9xVB/WhG6+X4OLnO85v5xUOGTV+g154iR7FOkrrl5F
13+
lEUBj+yaIoTRi+MyZ/oYqWwQUDYS3+Te9wIDAQABMA0GCSqGSIb3DQEBCwUAA4IB
14+
AQCCJpwUWCx7xfXv3vH3LQcffZycyRHYPgTCbiQw3x9aBb77jUAh5O6lEj/W0nx2
15+
SCTEsCsRSAiFwfUb+g/AFCW84dELRWmf38eoqACebLymqnvxyZA+O87yu07XyFZR
16+
TnmbDMzZgsyWWGwS3JoGFk+ibWY4AImYQnSJO8Pi0kZ37ngbAyJ3RtDhhEQJWw/Q
17+
D04p3uky/ea7Gyz0QTx5o40n4gq7nEzF1OS6IHozM840J5aZrxRiXEa56fsmJHmI
18+
IGyI07SGlWJ15r1wc8lB+8ilnAqH1QQlYzTIW0Q4NZE7n3uQg1EVuueGiGO2ex2/
19+
he9lDiJfOQuPuLbOxzctP9v9
6920
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)