Skip to content

Commit 2590d18

Browse files
Merge remote-tracking branch 'origin/w/8.1/improvement/ARSN-498-test-kmip' into w/8.2/improvement/ARSN-498-test-kmip
When fixing conflicts I removed on kmip highlevel tests the tls host and family config Host is by default 127.0.0.1 and family is not configurable on our KMIP client
2 parents fc9057e + a74047a commit 2590d18

22 files changed

+1277
-52
lines changed

.github/docker-compose.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
services:
2+
pykmip:
3+
network_mode: "host"
4+
profiles: ['pykmip']
5+
build:
6+
context: ./pykmip
7+
volumes:
8+
- /tmp/artifacts/:/artifacts
9+
# Allow override certs or config without rebuild
10+
- ./pykmip/certs:/ssl
11+
- ./pykmip/policy.json:/etc/pykmip/policies/policy.json
12+
- ./pykmip/server.conf:/etc/pykmip/server.conf

.github/pykmip/Dockerfile

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
FROM python:3.10-alpine
2+
3+
# Build from github repo sources as there is no recent release since 0.10.0
4+
# but the repo has fixes for some crashes that slowed down kmip
5+
6+
RUN apk add --no-cache \
7+
libressl && \
8+
apk add --no-cache --virtual .build-deps \
9+
python3-dev \
10+
libffi-dev \
11+
libressl-dev \
12+
sqlite-dev \
13+
build-base \
14+
curl \
15+
git && \
16+
git clone https://github.com/openkmip/pykmip.git && \
17+
cd pykmip && \
18+
python3 setup.py install && \
19+
apk del .build-deps && \
20+
rm -rf /pykmip && \
21+
mkdir /pykmip
22+
23+
ADD ./bin /usr/local/bin
24+
ADD ./certs /ssl
25+
ADD policy.json /etc/pykmip/policies/policy.json
26+
ADD server.conf /etc/pykmip/server.conf
27+
ADD --chmod=+x docker-entrypoint.sh /
28+
29+
ENTRYPOINT ["/docker-entrypoint.sh"]
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
#!/usr/bin/env python
2+
3+
from cryptography import x509
4+
from cryptography.hazmat import backends
5+
from cryptography.hazmat.primitives import hashes
6+
from cryptography.hazmat.primitives import serialization
7+
from cryptography.hazmat.primitives.asymmetric import rsa
8+
9+
import datetime
10+
import argparse
11+
import sys
12+
import ipaddress
13+
14+
15+
def get_args():
16+
parser = argparse.ArgumentParser(
17+
prog=sys.argv[0],
18+
description='Tool to generate a x509 CA root, server and client certs')
19+
parser.add_argument('-c', '--common-name', action='store',
20+
default='pykmip.local',
21+
help='Set the common name for the server-side cert')
22+
return parser.parse_args()
23+
24+
25+
def create_rsa_private_key(key_size=2048, public_exponent=65537):
26+
private_key = rsa.generate_private_key(
27+
public_exponent=public_exponent,
28+
key_size=key_size,
29+
backend=backends.default_backend()
30+
)
31+
return private_key
32+
33+
34+
def create_self_signed_certificate(subject_name,
35+
private_key,
36+
days_valid=36500):
37+
subject = x509.Name([
38+
x509.NameAttribute(x509.NameOID.ORGANIZATION_NAME, u"Scality"),
39+
x509.NameAttribute(x509.NameOID.COMMON_NAME, subject_name)
40+
])
41+
certificate = x509.CertificateBuilder().subject_name(
42+
subject
43+
).issuer_name(
44+
subject
45+
).public_key(
46+
private_key.public_key()
47+
).serial_number(
48+
x509.random_serial_number()
49+
).not_valid_before(
50+
datetime.datetime.utcnow()
51+
).not_valid_after(
52+
datetime.datetime.utcnow() + datetime.timedelta(days=days_valid)
53+
).add_extension(
54+
x509.BasicConstraints(True, None),
55+
critical=True
56+
).sign(private_key, hashes.SHA256(), backends.default_backend())
57+
58+
return certificate
59+
60+
61+
def create_certificate(subject_name,
62+
private_key,
63+
signing_certificate,
64+
signing_key,
65+
days_valid=36500,
66+
client_auth=False,
67+
alt_names=[]):
68+
subject = x509.Name([
69+
x509.NameAttribute(x509.NameOID.ORGANIZATION_NAME, u"Scality"),
70+
x509.NameAttribute(x509.NameOID.COMMON_NAME, subject_name)
71+
])
72+
builder = x509.CertificateBuilder().subject_name(
73+
subject
74+
).issuer_name(
75+
signing_certificate.subject
76+
).public_key(
77+
private_key.public_key()
78+
).serial_number(
79+
x509.random_serial_number()
80+
).not_valid_before(
81+
datetime.datetime.utcnow()
82+
).not_valid_after(
83+
datetime.datetime.utcnow() + datetime.timedelta(days=days_valid)
84+
)
85+
86+
if client_auth:
87+
builder = builder.add_extension(
88+
x509.ExtendedKeyUsage([x509.ExtendedKeyUsageOID.CLIENT_AUTH]),
89+
critical=True
90+
)
91+
92+
if alt_names:
93+
builder = builder.add_extension(
94+
x509.SubjectAlternativeName(alt_names),
95+
critical=False
96+
)
97+
98+
certificate = builder.sign(
99+
signing_key,
100+
hashes.SHA256(),
101+
backends.default_backend()
102+
)
103+
return certificate
104+
105+
106+
def main(common_name):
107+
root_key = create_rsa_private_key()
108+
root_certificate = create_self_signed_certificate(
109+
u"Root CA",
110+
root_key
111+
)
112+
113+
server_key = create_rsa_private_key()
114+
server_certificate = create_certificate(
115+
common_name,
116+
server_key,
117+
root_certificate,
118+
root_key,
119+
alt_names=[
120+
x509.DNSName(common_name),
121+
x509.DNSName('*.' + common_name),
122+
x509.DNSName('localhost'),
123+
]
124+
+ [x509.IPAddress(ipaddress.ip_address('127.0.0.' + str(ip))) for ip in range(1, 51)]
125+
)
126+
127+
john_doe_client_key = create_rsa_private_key()
128+
john_doe_client_certificate = create_certificate(
129+
u"John Doe",
130+
john_doe_client_key,
131+
root_certificate,
132+
root_key,
133+
client_auth=True
134+
)
135+
136+
with open("certs/kmip-ca.pem", "wb") as f:
137+
f.write(
138+
root_certificate.public_bytes(
139+
serialization.Encoding.PEM
140+
)
141+
)
142+
with open("certs/kmip-key.pem", "wb") as f:
143+
f.write(server_key.private_bytes(
144+
encoding=serialization.Encoding.PEM,
145+
format=serialization.PrivateFormat.PKCS8,
146+
encryption_algorithm=serialization.NoEncryption()
147+
))
148+
with open("certs/kmip-cert.pem", "wb") as f:
149+
f.write(
150+
server_certificate.public_bytes(
151+
serialization.Encoding.PEM
152+
)
153+
)
154+
with open("certs/kmip-client-key.pem", "wb") as f:
155+
f.write(john_doe_client_key.private_bytes(
156+
encoding=serialization.Encoding.PEM,
157+
format=serialization.PrivateFormat.PKCS8,
158+
encryption_algorithm=serialization.NoEncryption()
159+
))
160+
with open("certs/kmip-client-cert.pem", "wb") as f:
161+
f.write(
162+
john_doe_client_certificate.public_bytes(
163+
serialization.Encoding.PEM
164+
)
165+
)
166+
167+
168+
if __name__ == '__main__':
169+
args = get_args()
170+
main(args.common_name)

.github/pykmip/bin/run_server.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env python
2+
3+
# Copyright (c) 2016 The Johns Hopkins University/Applied Physics Laboratory
4+
# All Rights Reserved.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
7+
# not use this file except in compliance with the License. You may obtain
8+
# a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15+
# License for the specific language governing permissions and limitations
16+
# under the License.
17+
18+
import logging # noqa: E402
19+
20+
logging.basicConfig(level=logging.DEBUG)
21+
22+
from kmip.services.server import server # noqa: E402
23+
24+
if __name__ == '__main__':
25+
print('Starting PyKMIP server on 0.0.0.0:5696')
26+
server.main()

.github/pykmip/certs/kmip-ca.pem

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIC6zCCAdOgAwIBAgIUBXCfCIR3ZQZszsr85RJE6D7MF8IwDQYJKoZIhvcNAQEL
3+
BQAwJDEQMA4GA1UECgwHU2NhbGl0eTEQMA4GA1UEAwwHUm9vdCBDQTAgFw0yNTA1
4+
MjgxNDQxMTFaGA8yMTI1MDUwNDE0NDExMVowJDEQMA4GA1UECgwHU2NhbGl0eTEQ
5+
MA4GA1UEAwwHUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
6+
AKYJak+XBPSMShCoccB4tuOQMn2XWq2f0AXCCe5JvGkrVO9txqJUj7RyCZsaegqF
7+
kGcS9UYrL3aTp/K7f3woJo0amPlrUhkaP4c2N78ziH7MtTB3K+J+g1l8AWY+Jp/X
8+
UPNab4PgX0sNt7BC2AEUcgtBN9g4nglPMvxHnXJwzECAanb9cTGTCS96gq8wm2Fc
9+
dbdE+YNFgN8EdHUDk2s/22b5FxXY989hAXL9eNjuhJTndkKJMcSPImg9ovPZY3fQ
10+
RehVw71X88/8bEd2eypH2/3171Ji5s2iBgWsSBM4caNFX7wxfv6P6o2QHWr3DgZz
11+
6iywmvdAIpq8LAbHCtOb2zMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
12+
hkiG9w0BAQsFAAOCAQEAIPdRNQ1aCufaT64wHAUwnxTRPje01GYwF+4iNTfHRp8Q
13+
HGxsinWxdcX0zaw9NgrznnoesK27uYiT+3+KiALEe4z2puf88fAsROz74MF71X7Q
14+
/HWlqg9CHlQURxP8V2mxp9OhGDgI8RsVWnwscZYtbJuFVv04BSOfIwFLF1+r6iGH
15+
EGUubQnrKjOz/e2VbTaBv4MYlNVvbZjgtr36qpmPS/azckdTr6Neid/AaMpCtPRT
16+
zbMvE6pNhEViu6Xf4D+rnNYQLuFyZy8JmG9yulmDiVbGWeEdoT7lM6p0GsHbl7j8
17+
Q3OPklpUQpafS0OcHhDYegaFiXhmmav1PbA2FOXQRw==
18+
-----END CERTIFICATE-----

.github/pykmip/certs/kmip-cert.pem

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIESTCCAzGgAwIBAgIUbZqVh1wmFUyE+6F9QChzNnYhNHswDQYJKoZIhvcNAQEL
3+
BQAwJDEQMA4GA1UECgwHU2NhbGl0eTEQMA4GA1UEAwwHUm9vdCBDQTAgFw0yNTA1
4+
MjgxNDQxMTFaGA8yMTI1MDUwNDE0NDExMVowKTEQMA4GA1UECgwHU2NhbGl0eTEV
5+
MBMGA1UEAwwMcHlrbWlwLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
6+
CgKCAQEAtmmp1XupHjdXEkDxAPWDN+69DBF+OMj1z1cHhSODFgR4h0nHkXLFyB50
7+
yhfvOUWXpK1yHcYCesrjAr7hQshUUNVZUXmlwd8ppYDRmimvkuykDtJ9KOZTy3QG
8+
XvIlE/99UTI7WMtQAy+yrH2/pB8oLKE4ArB7obAdtCPvZBllLT5FOl8U5luZWSIS
9+
yDpVcRXMFdck2aEA6ArqKNQfOGNQPz9LcLvTrB6rrEPe30+pJCKxSn96biEA9vmT
10+
JzzmbKszRmUt2rErqz2+XvBk6kc3bxDIp0eo/gJvPqo4PcJdq+QWEUw7Ry5K1OVv
11+
93ST6unv2l6ffymMR56gbK69nbAgRwIDAQABo4IBajCCAWYwggFiBgNVHREEggFZ
12+
MIIBVYIMcHlrbWlwLmxvY2Fsgg4qLnB5a21pcC5sb2NhbIIJbG9jYWxob3N0hwR/
13+
AAABhwR/AAAChwR/AAADhwR/AAAEhwR/AAAFhwR/AAAGhwR/AAAHhwR/AAAIhwR/
14+
AAAJhwR/AAAKhwR/AAALhwR/AAAMhwR/AAANhwR/AAAOhwR/AAAPhwR/AAAQhwR/
15+
AAARhwR/AAAShwR/AAAThwR/AAAUhwR/AAAVhwR/AAAWhwR/AAAXhwR/AAAYhwR/
16+
AAAZhwR/AAAahwR/AAAbhwR/AAAchwR/AAAdhwR/AAAehwR/AAAfhwR/AAAghwR/
17+
AAAhhwR/AAAihwR/AAAjhwR/AAAkhwR/AAAlhwR/AAAmhwR/AAAnhwR/AAAohwR/
18+
AAAphwR/AAAqhwR/AAArhwR/AAAshwR/AAAthwR/AAAuhwR/AAAvhwR/AAAwhwR/
19+
AAAxhwR/AAAyMA0GCSqGSIb3DQEBCwUAA4IBAQB8xnxbXUrQvEIzu5Sj8U6Nakam
20+
M0idHuKltPpewnvHbn8aWjYVpl/P+Mt9iM/4NHiRDxiwwNKipw0U2p52DlLFbuch
21+
oMWJfutAJDYZ/dg5G9b/aQfMiKSTomkICsiP0PAGCr1dBAYdoHi9Il5M4rI0EzEE
22+
Rby1rD6C4FQnfHfikzjyBBQSNvWZ72KoslZ8rPsEtdx47Qieu4DMiUaBN3qC4ceM
23+
Zj2fwm+rFQefE7WKeewHlZtrIFM4amjtdeYfzMC7nJNAbfU9LOjUo9MOp3SLNiqf
24+
vGbKJJKXLrljdfXqdumjjikH9eV/5Vs7j2hZ5M8r+Cdn0sI6XkW3fsoEqAlj
25+
-----END CERTIFICATE-----
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIC8zCCAdugAwIBAgIUVQh6LrZh/qbHKZtjKPwWxeJlTQ4wDQYJKoZIhvcNAQEL
3+
BQAwJDEQMA4GA1UECgwHU2NhbGl0eTEQMA4GA1UEAwwHUm9vdCBDQTAgFw0yNTA1
4+
MjgxNDQxMTFaGA8yMTI1MDUwNDE0NDExMVowJTEQMA4GA1UECgwHU2NhbGl0eTER
5+
MA8GA1UEAwwISm9obiBEb2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
6+
AQDLbscztVN/7Jl0z99PHTEbKgG7PPoja+jCebH+/L+tQlgc6+ipfRJ/MaVrOShP
7+
8UMGMfFHaxv40BZMEKaWx8SXpBxgtt86IHDM3TOZCnZ8mQoNg1UkksI1AAzRv4FW
8+
vuXYo1J5jLmSRNFSUr8jJAS2JUyYHLsx+bCkdD942s78et/Bvtzg2/luOLBymQyG
9+
OA69gcw+JWV7jMfoMMkLKTWpl86jijuqv7eMS8lpQdWCCgy+/+gRa9YtIuPB3eJp
10+
9J++yyurWSLZ1zDVxL5mWNzPDiNHgzDSOjjuKps+kkmkhZIoJme30Oxdgaf3UaAn
11+
YRX6dEyyw7qW5VPx+S4qGRCNAgMBAAGjGjAYMBYGA1UdJQEB/wQMMAoGCCsGAQUF
12+
BwMCMA0GCSqGSIb3DQEBCwUAA4IBAQA30nyOS/yX9wo5OYN0NWtQ0u+z2DqwpN1K
13+
GxKi34kCwf246cWrKQA8qQ7X23eCk9PqlVelcQIDxbliq3l9WMW0zvo2qE+oXTYP
14+
FYiqVFYvN+R9NjnpI2YP61RuQVmnZCwzRDCf6deXHUFeLPiUBeH0ZyzV1KuP99aE
15+
N4ONlQaPbpbt7wFnM/ZL1vQ/j8MtAmlO9qr5i2r0lxXR60q4MM1ysh57Iro3/owS
16+
lHknSGVXLf7/XD9iJZjivxwBpa63cVMZgvkYG/SvxvwOcO/VIlgK+3xlykAzCYdl
17+
NWPgY8gzRmBPGJ67VC1Vx/4PEq3f3MSZh6o+WE8CT5KXremyb38t
18+
-----END CERTIFICATE-----
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDLbscztVN/7Jl0
3+
z99PHTEbKgG7PPoja+jCebH+/L+tQlgc6+ipfRJ/MaVrOShP8UMGMfFHaxv40BZM
4+
EKaWx8SXpBxgtt86IHDM3TOZCnZ8mQoNg1UkksI1AAzRv4FWvuXYo1J5jLmSRNFS
5+
Ur8jJAS2JUyYHLsx+bCkdD942s78et/Bvtzg2/luOLBymQyGOA69gcw+JWV7jMfo
6+
MMkLKTWpl86jijuqv7eMS8lpQdWCCgy+/+gRa9YtIuPB3eJp9J++yyurWSLZ1zDV
7+
xL5mWNzPDiNHgzDSOjjuKps+kkmkhZIoJme30Oxdgaf3UaAnYRX6dEyyw7qW5VPx
8+
+S4qGRCNAgMBAAECggEAEYJdeXLD/V2XKanFZFEa/sw84OlswbhSDM1q1HHbN4wS
9+
lGhGzeVN2Ce+pcqbtyG8IJNGdPZGYcIObgnJPm7ZDPcBjRHZ7brvRBq0pbMnI2Gl
10+
4iephnluALmaR0Ibdwr8/z2AMqXTlQzNei+IDWJWWEamkuyqI5eEX7gBSVaGSTTm
11+
brQGFlmOvqHM/ijuSVlWQVBTu4VjIaNA5PqybaFkefifRLbaJGWTiaUigNDxGB2f
12+
KXqCDVRa1qGJBlThR3yJPLCI+u8LTCLYKMGFJ9qgoraHo1RG7bwJ0tpb7CtPkBOh
13+
0xjFXnMoAO4+XSyUud7VpsEk0Xsr43k0rh0eOJbaWwKBgQDV7dyGpC+nVokNEcJq
14+
AgwXUdi4+PtP5N9BwfrMEEQNkGtJ7lEBifVvmTXgNblaGMXPUkXMfd1Q3krdapQ1
15+
07mnkxekwdggtfGiycbLyGt+cwymUopSG9Z8LG5nlUNyYj8AOcWoIzOB1oDoWgpx
16+
LlF7cmdFa4BEBYFyfo2t2cTvswKBgQDzcHsHWK/Y6E/OzcvamnIDPIG/X/aHntIL
17+
HXc4CsiF9aR6C6Jz7plCf3cna8ol+heVKXInYjuLuwOp9mMjjflmxXuxICefTrOP
18+
QQnK43dNK6QkxIqu2Xkn+S6fIo0NaYPpXhU1IBIxQLbCLFm37oUaW3KBNiwWRhMv
19+
SMbbx//evwKBgQC3i6ZqqtHsC/X4jaU1WN5Q37tHMPBGYwMeIzVwAgCxdphmzR8Z
20+
Z+l5v4UXAmEuKRUGxPr38YGCUcb/4+KXsDmYyj498Mbjgdd5KQ/0Zde8nS9cQHNG
21+
8XV8Ao8TNmCw8hRFuEua7+DQZF8je6V76BanCMgMKqjZM7QVrPkYEUDDuwKBgQDN
22+
zcDk1BBN0xBtaEQ3+iv7GnMiRFGaFCXEqdN5OHyP67xyRVXApu1Ab5xfYlwSwRyg
23+
yNot+3kVxzPww1DK5SL8xGWut91na9SXfkd2E9lvDz8EqngIG+i2Z44HkOEofpS7
24+
fQN21zcqFmirPW1X9zjlsHvcStz4s6NSbTdY5Psm5wKBgCJgoVYumX1BiF0ZQcNb
25+
OfeM3IsV4AsGkvHxQTLXpzKteup/f6wHJt0vONGTmwh5GPlWusckGpPh9cfK6amW
26+
jk0tigY5pihsnzVUZKQ9XGYQPzYq+/wZzGnCWV4QquwMhXW8Q57P9J0HKi24Lu6T
27+
8g1MGD56TMgYnT27nV+jHY1z
28+
-----END PRIVATE KEY-----

.github/pykmip/certs/kmip-key.pem

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC2aanVe6keN1cS
3+
QPEA9YM37r0MEX44yPXPVweFI4MWBHiHSceRcsXIHnTKF+85RZekrXIdxgJ6yuMC
4+
vuFCyFRQ1VlReaXB3ymlgNGaKa+S7KQO0n0o5lPLdAZe8iUT/31RMjtYy1ADL7Ks
5+
fb+kHygsoTgCsHuhsB20I+9kGWUtPkU6XxTmW5lZIhLIOlVxFcwV1yTZoQDoCuoo
6+
1B84Y1A/P0twu9OsHqusQ97fT6kkIrFKf3puIQD2+ZMnPOZsqzNGZS3asSurPb5e
7+
8GTqRzdvEMinR6j+Am8+qjg9wl2r5BYRTDtHLkrU5W/3dJPq6e/aXp9/KYxHnqBs
8+
rr2dsCBHAgMBAAECggEAILP54E2+yK2IPTwKWS8q+syg9Phv5jNVKnqCXSK8PibI
9+
Cw01q8RlZBbdvlujJmPtJ3d3FZJp4GTeZSAel4/92c4eKMbD6mmdeFALg/WERjWJ
10+
xiSDjuEYVcnz2HLWJeswpu14CVfN/PxArr8OrBhv5exzc7v7NkYyVRj6MrqA0qbh
11+
Q3sxJeLXThcOkh0vKi01r+o/GF+yU3+ew5rqARAH0YJN3kdGQCgfF95+JCuSTOBE
12+
30SmioAFTF/0AktwjT+pLPnNd0JDZd6kzOU7hjGyoMQw0GJafDrrNMqnQbwgarV/
13+
Xw0zWWRqf6FdBrrO/EoZm2BXYZXIg3DakolgYPn0OQKBgQDi85M3AeUiPfHHz36k
14+
W93oMruYtoXP+gkUKETmSdHPtJ8BkRWekpwsO0SBVmqNzqBq/p03bKjv6zLA74hW
15+
aYXnWoWcdNcXUwKM/wG1h7rnf0eRP1WOMwvM9SjTyMYWJHme3KHU8XPcHCe+t5Uy
16+
NnSehGI4QWUhxsvv1gBqjVwj2QKBgQDNwrTjaf3iqjseOdSk3N2wrqdwJcprBgpq
17+
LbYny8hmZRUbxKD6Req0hH79QpzTP8B8O3G1UGUxCIZUqzdklZngMp60tEjFU7WS
18+
wY2yZLB8Bpom+ePbqOkdot9lePmpWbpccBonRFt4n5QjkeiasJE1dVyt953e4TpF
19+
OtWF8T1xHwKBgDxDJSIEFM2k2SCPTjdiVWgkoH+KZ7mz0NlTYAguLdITSe1mkvEK
20+
SQHNswEM6zpAVYRTm3duGOWr9Ewazn7zgiTOeo/yznJZDmJWDCQhqFV0DJLa2GLr
21+
1wRTTMX/l+mlQc4XE7mxa2xU5ZDUun8cypaU3GfHpYz0do52qqGga4jxAoGAQewg
22+
0j+SJP3PRQbYNx3ANSwv3wFskc90pMISezuR8CRwl93uiWC/KqjMms2tuwzQ2byd
23+
2K5yTTxi9VuJusMncqolKNYd/oKsSOGUSVRzKrleyCAFvcmnLmSRWExjCLwDtjwA
24+
VRZUjBfseVz0/iKV01/Pmrkbrl3Qsn+AC5LX0ZcCgYBjbZmUHf6GtScRm/UqsXpF
25+
3PVF0ZpHUSQhuovd089WNCvXqzD1hF6MqmJhmTGQYdjOaao61Or2gHbRjd6p1/Ck
26+
CHPPVfjJ2kDR61iEiun2z8y5LX4fBDwlQCGXOKdJYY5cedesty7zAYtlAvxkTND8
27+
ifh+mkA5p4saF1j9a3l2lg==
28+
-----END PRIVATE KEY-----
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/sh
2+
3+
# Keep using run_server.py instead of pykmip_server to have DEBUG logging
4+
5+
python3 /usr/local/bin/run_server.py 2>&1 | tee -a /artifacts/pykmip.log

0 commit comments

Comments
 (0)