Skip to content

Commit

Permalink
implement e2e test (#151)
Browse files Browse the repository at this point in the history
Add end-2-end test action
  • Loading branch information
bakito committed May 27, 2023
1 parent 45e18c2 commit 44c04bb
Show file tree
Hide file tree
Showing 13 changed files with 244 additions and 46 deletions.
42 changes: 42 additions & 0 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: e2e tests

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
e2e:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Install kind with registry
uses: bakito/kind-with-registry-action@main

- name: Build image
run: ./testdata/e2e/buildImage.sh

- name: Install cert-manager
run: ./testdata/e2e/installCertManager.sh

- name: Install service certificate
run: ./testdata/e2e/installCertificate.sh

- name: Install helm chart
run: |
./testdata/e2e/installChart.sh
kubectl create ns e2e-test
- name: Setup Java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'

- name: Test generated cacerts
run: ./testdata/e2e/testConfigMaps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ metadata:
labels:
{{- include "java-truststore-injection-webhook.labels" . | nindent 4 }}
annotations:
service.beta.openshift.io/inject-cabundle: 'true'
{{- with .Values.webhook.annotations }}
{{ . | toYaml | nindent 6 }}
{{- end }}
webhooks:
- admissionReviewVersions:
- v1
- v1beta1
clientConfig:
caBundle: Cg==
service:
name: {{ include "java-truststore-injection-webhook.fullname" . }}
namespace: {{ .Release.Namespace }}
Expand Down
4 changes: 3 additions & 1 deletion charts/java-truststore-injection-webhook/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ resources: { }
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# cpu: 100m
# memory: 128Mi

# -- [Node selector]
Expand All @@ -53,3 +53,5 @@ nodeSelector: { }
webhook:
# -- Webhook failure policy
failurePolicy: Fail
# -- Webhook annotations
annotations: { }
75 changes: 32 additions & 43 deletions pkg/configmap/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,48 +81,37 @@ var _ = Describe("Configmap", func() {
})

const (
// openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/C=XX/ST=github/L=bakito/CN=java-truststore-injection-webhook"
cert = `-----BEGIN CERTIFICATE-----
MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE
AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw
CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ
BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND
VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb
qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY
HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo
G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA
lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr
IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/
0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH
k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47
4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO
m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa
cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl
uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI
KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls
ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG
AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT
VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG
CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA
cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA
QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA
7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA
cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA
QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA
czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu
aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt
aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud
DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF
BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp
D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU
JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m
AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD
vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms
tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH
7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA
h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF
d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H
pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7
-----END CERTIFICATE-----`
MIIFmTCCA4GgAwIBAgIUKvSUzRiN3GyPAJk+x7zywVJIjL8wDQYJKoZIhvcNAQEL
BQAwWzELMAkGA1UEBhMCWFgxDzANBgNVBAgMBmdpdGh1YjEPMA0GA1UEBwwGYmFr
aXRvMSowKAYDVQQDDCFqYXZhLXRydXN0c3RvcmUtaW5qZWN0aW9uLXdlYmhvb2sw
IBcNMjMwNTI3MTEyMDQ3WhgPMjEyMzA1MDMxMTIwNDdaMFsxCzAJBgNVBAYTAlhY
MQ8wDQYDVQQIDAZnaXRodWIxDzANBgNVBAcMBmJha2l0bzEqMCgGA1UEAwwhamF2
YS10cnVzdHN0b3JlLWluamVjdGlvbi13ZWJob29rMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEAq/7ZUh3aGkMTCzsoPbylqiBFsNNrPb/SBKpdljoKpejk
Kuc/OSjtjgIPSZODUxnW9p+vwJ5Sv8nbqOpwfgkFHUwItEC771NqOOfObheiZZGz
QxSqJUGActckTmGhgRC2TAWAFugzuusQK3EHAXOycBbDflTfC0IgEquUYExAQ2wB
fmAoImJPsUXpoKtqVL7BnTemPcl0eUp07jmsxWmwmTd5STF36UsRO5sydpr9JM1P
WltOfR+gNVoLU4A2mi8M5K+t0aBFgvZsvryzOVZG5m3RnUcd9guwDLTgg/hrXJdg
LPO5iubmq2haqNS++eDVmuGkZSM8V8y73BVPfwX1VwhrSyOk0qS6faM9jl3egDKx
layHjBpZEJzaAyGf8BiJqNCQa80qkRQ7Tkm2ZG8zHPSuvieHPncIQ45dcucJDHPe
E06V4Tk8vCbSOLyZeb0GtRCZej+TUc2u8OSaVaCHKDAuGYnBJwmdo8UWM2Ta19H3
Qp/7o+HTiiMi3TH68mb1M07hDuWmHpdhmE+4bG3/u0lFkis9PSyq9roiyuEjoZyB
5oZ+5LOQGbeXmwHG8F+9vHiR03PqxuS7mppOk399sTDN9Pr0RfjxLEH0lmOiGP2f
DJxA/dTU6xSK0CvFB+Ta9SwOHMX0bTBZMHJ0Ew4ATRAtBzkTahbOEk4h5p7eoyMC
AwEAAaNTMFEwHQYDVR0OBBYEFODsUAiQQz6fAD8+dgiloe7R6PocMB8GA1UdIwQY
MBaAFODsUAiQQz6fAD8+dgiloe7R6PocMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggIBAE5KRdTrbXMMJUFAFmO2JPhoqTXSjA/rAe3gTcGTDy9uk1yD
caXRs22IhCofAjZzPZJv/efg98dWwhA3FPiHYwOg+efdqRIAjdUDfN4GOz70SOmb
fT0da4A+MOMDbGAjo1jz7HmXLxxzwSP1xVfQVNTklFuu6S4ymS+za8AApmflakRH
eIPOC9da1gfvjsE85a3PanzDYmSXEoo2wwULGI03ghQMq2VoO0Q7Kr7dW/HeumPX
ISbzsycPJSk0PDyaJbutz/wJE0Uv+rM81g3uWyfUCSfHTfganup5IkPmQcM4eFcV
GkOGs3RKfQul5rK/kG8VVyKqDVllZ6KUhodLZXTxMJGZEOlhNw3GIy50dbNhXJE5
myuQUUs5JBqfBKxBocfTy2mKe4WaGVeDPpodFnSFMdDdQQNBBwRmLmWJIwEKDpcW
FSaj7mKUe5RnvFZTeHMLHDm/LgfaJHM0wrQo9YcYLaVQ4iYVNE94iPkI2zuhOgRq
TYrDFyVqUA/jrgaAbguGiwP4mddfUmaWUiafLzdLxm+37V2bYT5b+Vn+PmPNpVom
sFjsEiqNgPMsb+ARrzXdJzIO3gEW0TYLAx24ABgRttd0TXURZbuGkVwoEyDSQHer
9tcIzkwuz9wxWrxygcKc5u3AlOSE5A2CBXEWEshgbegYc/8jhuYbtDgONvkO
-----END CERTIFICATE----- `
)
1 change: 1 addition & 0 deletions testdata/e2e/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
kind-config.yaml
4 changes: 4 additions & 0 deletions testdata/e2e/buildImage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash
set -e
docker build -f Dockerfile -t localhost:5001/java-truststore-injection-webhook:e2e .
docker push localhost:5001/java-truststore-injection-webhook:e2e
16 changes: 16 additions & 0 deletions testdata/e2e/e2e-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
image:
repository: localhost:5001/java-truststore-injection-webhook
tag: e2e
pullPolicy: Always

securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
capabilities:
drop: [ "ALL" ]

webhook:
annotations:
cert-manager.io/inject-ca-from: java-truststore-injection-webhook/java-truststore-injection-webhook-certs
5 changes: 5 additions & 0 deletions testdata/e2e/installCertManager.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash
set -e

helm repo add jetstack https://charts.jetstack.io
helm upgrade --install cert-manager --create-namespace --namespace cert-manager jetstack/cert-manager --atomic --set installCRDs=true
5 changes: 5 additions & 0 deletions testdata/e2e/installCertificate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash
set -e

kubectl create ns java-truststore-injection-webhook || true
kubectl apply -n java-truststore-injection-webhook -f ./testdata/e2e/installCertificate.yaml
21 changes: 21 additions & 0 deletions testdata/e2e/installCertificate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-issuer
spec:
selfSigned: { }

---

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: java-truststore-injection-webhook-certs
spec:
secretName: java-truststore-injection-webhook-certs
dnsNames:
- "*.java-truststore-injection-webhook.svc.cluster.local"
- "*.java-truststore-injection-webhook.svc"
- "*.java-truststore-injection-webhook"
issuerRef:
name: selfsigned-issuer
9 changes: 9 additions & 0 deletions testdata/e2e/installChart.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash
set -e

helm upgrade --install java-truststore-injection-webhook charts/java-truststore-injection-webhook \
--namespace java-truststore-injection-webhook \
--create-namespace \
-f testdata/e2e/e2e-values.yaml \
--atomic
kubectl get pods -n java-truststore-injection-webhook
18 changes: 18 additions & 0 deletions testdata/e2e/testConfigMaps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash
set -e

kubectl apply -n java-truststore-injection-webhook -f testdata/e2e/testConfigMaps.yaml

textConfigMap () {
echo "Read ${2} from ${1}"
CACERTS=$(kubectl get cm -n java-truststore-injection-webhook ${1} -o json | jq -r ".binaryData.\"${2}\"")
echo "${CACERTS}" | base64 --decode > cacerts
keytool -list -keystore cacerts -storepass ${3} | grep "Your keystore contains 1 entry"

echo "Check last-injected-truststore-name"
kubectl get cm -n java-truststore-injection-webhook ${1} -o json | jq -r '.metadata.annotations."jti.bakito.ch/last-injected-truststore-name"' | grep "${2}"
}

textConfigMap java-certs-simple cacerts changeit

textConfigMap java-certs-extended my-certs my-precious
85 changes: 85 additions & 0 deletions testdata/e2e/testConfigMaps.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
apiVersion: v1
kind: ConfigMap
metadata:
labels:
jti.bakito.ch/inject-truststore: "true"
name: java-certs-simple
data:
my-cert.pem: |
-----BEGIN CERTIFICATE-----
MIIFmTCCA4GgAwIBAgIUKvSUzRiN3GyPAJk+x7zywVJIjL8wDQYJKoZIhvcNAQEL
BQAwWzELMAkGA1UEBhMCWFgxDzANBgNVBAgMBmdpdGh1YjEPMA0GA1UEBwwGYmFr
aXRvMSowKAYDVQQDDCFqYXZhLXRydXN0c3RvcmUtaW5qZWN0aW9uLXdlYmhvb2sw
IBcNMjMwNTI3MTEyMDQ3WhgPMjEyMzA1MDMxMTIwNDdaMFsxCzAJBgNVBAYTAlhY
MQ8wDQYDVQQIDAZnaXRodWIxDzANBgNVBAcMBmJha2l0bzEqMCgGA1UEAwwhamF2
YS10cnVzdHN0b3JlLWluamVjdGlvbi13ZWJob29rMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEAq/7ZUh3aGkMTCzsoPbylqiBFsNNrPb/SBKpdljoKpejk
Kuc/OSjtjgIPSZODUxnW9p+vwJ5Sv8nbqOpwfgkFHUwItEC771NqOOfObheiZZGz
QxSqJUGActckTmGhgRC2TAWAFugzuusQK3EHAXOycBbDflTfC0IgEquUYExAQ2wB
fmAoImJPsUXpoKtqVL7BnTemPcl0eUp07jmsxWmwmTd5STF36UsRO5sydpr9JM1P
WltOfR+gNVoLU4A2mi8M5K+t0aBFgvZsvryzOVZG5m3RnUcd9guwDLTgg/hrXJdg
LPO5iubmq2haqNS++eDVmuGkZSM8V8y73BVPfwX1VwhrSyOk0qS6faM9jl3egDKx
layHjBpZEJzaAyGf8BiJqNCQa80qkRQ7Tkm2ZG8zHPSuvieHPncIQ45dcucJDHPe
E06V4Tk8vCbSOLyZeb0GtRCZej+TUc2u8OSaVaCHKDAuGYnBJwmdo8UWM2Ta19H3
Qp/7o+HTiiMi3TH68mb1M07hDuWmHpdhmE+4bG3/u0lFkis9PSyq9roiyuEjoZyB
5oZ+5LOQGbeXmwHG8F+9vHiR03PqxuS7mppOk399sTDN9Pr0RfjxLEH0lmOiGP2f
DJxA/dTU6xSK0CvFB+Ta9SwOHMX0bTBZMHJ0Ew4ATRAtBzkTahbOEk4h5p7eoyMC
AwEAAaNTMFEwHQYDVR0OBBYEFODsUAiQQz6fAD8+dgiloe7R6PocMB8GA1UdIwQY
MBaAFODsUAiQQz6fAD8+dgiloe7R6PocMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggIBAE5KRdTrbXMMJUFAFmO2JPhoqTXSjA/rAe3gTcGTDy9uk1yD
caXRs22IhCofAjZzPZJv/efg98dWwhA3FPiHYwOg+efdqRIAjdUDfN4GOz70SOmb
fT0da4A+MOMDbGAjo1jz7HmXLxxzwSP1xVfQVNTklFuu6S4ymS+za8AApmflakRH
eIPOC9da1gfvjsE85a3PanzDYmSXEoo2wwULGI03ghQMq2VoO0Q7Kr7dW/HeumPX
ISbzsycPJSk0PDyaJbutz/wJE0Uv+rM81g3uWyfUCSfHTfganup5IkPmQcM4eFcV
GkOGs3RKfQul5rK/kG8VVyKqDVllZ6KUhodLZXTxMJGZEOlhNw3GIy50dbNhXJE5
myuQUUs5JBqfBKxBocfTy2mKe4WaGVeDPpodFnSFMdDdQQNBBwRmLmWJIwEKDpcW
FSaj7mKUe5RnvFZTeHMLHDm/LgfaJHM0wrQo9YcYLaVQ4iYVNE94iPkI2zuhOgRq
TYrDFyVqUA/jrgaAbguGiwP4mddfUmaWUiafLzdLxm+37V2bYT5b+Vn+PmPNpVom
sFjsEiqNgPMsb+ARrzXdJzIO3gEW0TYLAx24ABgRttd0TXURZbuGkVwoEyDSQHer
9tcIzkwuz9wxWrxygcKc5u3AlOSE5A2CBXEWEshgbegYc/8jhuYbtDgONvkO
-----END CERTIFICATE-----
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
jti.bakito.ch/inject-truststore: "true"
jti.bakito.ch/truststore-name: my-certs
annotations:
jti.bakito.ch/truststore-password: my-precious
name: java-certs-extended
data:
my-cert.pem: |
-----BEGIN CERTIFICATE-----
MIIFmTCCA4GgAwIBAgIUKvSUzRiN3GyPAJk+x7zywVJIjL8wDQYJKoZIhvcNAQEL
BQAwWzELMAkGA1UEBhMCWFgxDzANBgNVBAgMBmdpdGh1YjEPMA0GA1UEBwwGYmFr
aXRvMSowKAYDVQQDDCFqYXZhLXRydXN0c3RvcmUtaW5qZWN0aW9uLXdlYmhvb2sw
IBcNMjMwNTI3MTEyMDQ3WhgPMjEyMzA1MDMxMTIwNDdaMFsxCzAJBgNVBAYTAlhY
MQ8wDQYDVQQIDAZnaXRodWIxDzANBgNVBAcMBmJha2l0bzEqMCgGA1UEAwwhamF2
YS10cnVzdHN0b3JlLWluamVjdGlvbi13ZWJob29rMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEAq/7ZUh3aGkMTCzsoPbylqiBFsNNrPb/SBKpdljoKpejk
Kuc/OSjtjgIPSZODUxnW9p+vwJ5Sv8nbqOpwfgkFHUwItEC771NqOOfObheiZZGz
QxSqJUGActckTmGhgRC2TAWAFugzuusQK3EHAXOycBbDflTfC0IgEquUYExAQ2wB
fmAoImJPsUXpoKtqVL7BnTemPcl0eUp07jmsxWmwmTd5STF36UsRO5sydpr9JM1P
WltOfR+gNVoLU4A2mi8M5K+t0aBFgvZsvryzOVZG5m3RnUcd9guwDLTgg/hrXJdg
LPO5iubmq2haqNS++eDVmuGkZSM8V8y73BVPfwX1VwhrSyOk0qS6faM9jl3egDKx
layHjBpZEJzaAyGf8BiJqNCQa80qkRQ7Tkm2ZG8zHPSuvieHPncIQ45dcucJDHPe
E06V4Tk8vCbSOLyZeb0GtRCZej+TUc2u8OSaVaCHKDAuGYnBJwmdo8UWM2Ta19H3
Qp/7o+HTiiMi3TH68mb1M07hDuWmHpdhmE+4bG3/u0lFkis9PSyq9roiyuEjoZyB
5oZ+5LOQGbeXmwHG8F+9vHiR03PqxuS7mppOk399sTDN9Pr0RfjxLEH0lmOiGP2f
DJxA/dTU6xSK0CvFB+Ta9SwOHMX0bTBZMHJ0Ew4ATRAtBzkTahbOEk4h5p7eoyMC
AwEAAaNTMFEwHQYDVR0OBBYEFODsUAiQQz6fAD8+dgiloe7R6PocMB8GA1UdIwQY
MBaAFODsUAiQQz6fAD8+dgiloe7R6PocMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggIBAE5KRdTrbXMMJUFAFmO2JPhoqTXSjA/rAe3gTcGTDy9uk1yD
caXRs22IhCofAjZzPZJv/efg98dWwhA3FPiHYwOg+efdqRIAjdUDfN4GOz70SOmb
fT0da4A+MOMDbGAjo1jz7HmXLxxzwSP1xVfQVNTklFuu6S4ymS+za8AApmflakRH
eIPOC9da1gfvjsE85a3PanzDYmSXEoo2wwULGI03ghQMq2VoO0Q7Kr7dW/HeumPX
ISbzsycPJSk0PDyaJbutz/wJE0Uv+rM81g3uWyfUCSfHTfganup5IkPmQcM4eFcV
GkOGs3RKfQul5rK/kG8VVyKqDVllZ6KUhodLZXTxMJGZEOlhNw3GIy50dbNhXJE5
myuQUUs5JBqfBKxBocfTy2mKe4WaGVeDPpodFnSFMdDdQQNBBwRmLmWJIwEKDpcW
FSaj7mKUe5RnvFZTeHMLHDm/LgfaJHM0wrQo9YcYLaVQ4iYVNE94iPkI2zuhOgRq
TYrDFyVqUA/jrgaAbguGiwP4mddfUmaWUiafLzdLxm+37V2bYT5b+Vn+PmPNpVom
sFjsEiqNgPMsb+ARrzXdJzIO3gEW0TYLAx24ABgRttd0TXURZbuGkVwoEyDSQHer
9tcIzkwuz9wxWrxygcKc5u3AlOSE5A2CBXEWEshgbegYc/8jhuYbtDgONvkO
-----END CERTIFICATE-----

0 comments on commit 44c04bb

Please sign in to comment.