Skip to content

Commit 25e8a63

Browse files
committed
Added log messages to POST operations for better tracing.
Minor fixes.
1 parent aa48b93 commit 25e8a63

6 files changed

Lines changed: 49 additions & 34 deletions

File tree

tests/test_env.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,27 @@
2121
from future.backports.datetime import datetime
2222
from six import text_type
2323

24-
FAKE = environ.get('FAKE')
24+
FAKE = environ.get("FAKE")
2525
RANDOM_DOMAIN = environ.get("RANDOM_DOMAIN")
26-
TPP_URL = environ.get('TPP_URL')
27-
TPP_USER = environ.get('TPP_USER')
28-
TPP_PASSWORD = environ.get('TPP_PASSWORD')
29-
TPP_ZONE = environ.get('TPP_ZONE')
30-
TPP_ZONE_ECDSA = environ.get('TPP_ZONE_ECDSA')
26+
TPP_URL = environ.get("TPP_URL")
27+
TPP_USER = environ.get("TPP_USER")
28+
TPP_PASSWORD = environ.get("TPP_PASSWORD")
29+
TPP_ZONE = environ.get("TPP_ZONE")
30+
TPP_ZONE_ECDSA = environ.get("TPP_ZONE_ECDSA")
3131
TPP_TOKEN_URL = environ.get("TPP_TOKEN_URL")
3232
TPP_ACCESS_TOKEN = environ.get("TPP_ACCESS_TOKEN")
33-
CLOUD_URL = environ.get('CLOUD_URL')
34-
CLOUD_APIKEY = environ.get('CLOUD_APIKEY')
35-
CLOUD_ZONE = environ.get('CLOUD_ZONE')
33+
CLOUD_URL = environ.get("CLOUD_URL")
34+
CLOUD_APIKEY = environ.get("CLOUD_APIKEY")
35+
CLOUD_ZONE = environ.get("CLOUD_ZONE")
3636

37-
TPP_PM_ROOT = environ.get('TPP_PM_ROOT')
38-
TPP_CA_NAME = environ.get('TPP_CA_NAME')
39-
CLOUD_ENTRUST_CA_NAME = environ.get('CLOUD_ENTRUST_CA_NAME')
40-
CLOUD_DIGICERT_CA_NAME = environ.get('CLOUD_DIGICERT_CA_NAME')
37+
TPP_PM_ROOT = environ.get("TPP_PM_ROOT")
38+
TPP_CA_NAME = environ.get("TPP_CA_NAME")
39+
CLOUD_ENTRUST_CA_NAME = environ.get("CLOUD_ENTRUST_CA_NAME")
40+
CLOUD_DIGICERT_CA_NAME = environ.get("CLOUD_DIGICERT_CA_NAME")
4141

42-
SSH_CADN = "\\VED\\Certificate Authority\\SSH\\Templates\\vCert-team"
42+
SSH_CADN = environ.get("SSH_CADN")
4343

44-
if not isinstance(RANDOM_DOMAIN, text_type):
44+
if RANDOM_DOMAIN and not isinstance(RANDOM_DOMAIN, text_type):
4545
RANDOM_DOMAIN = RANDOM_DOMAIN.decode()
4646

4747

tests/test_ssh.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@
1818
import unittest
1919

2020
from test_env import timestamp, TPP_TOKEN_URL, TPP_USER, TPP_PASSWORD, SSH_CADN
21-
from vcert import CommonConnection, SSHCertRequest, SSHRetrieveResponse, TPPTokenConnection, Authentication, \
21+
from vcert import CommonConnection, SSHCertRequest, TPPTokenConnection, Authentication, \
2222
SCOPE_SSH, generate_ssh_keypair
23+
from vcert.ssh_utils import SSHRetrieveResponse
2324

2425
logging.basicConfig(level=logging.DEBUG)
2526
logger = logging.getLogger('vcert-test')
@@ -37,19 +38,19 @@ def __init__(self, *args, **kwargs):
3738
super(TestTPPSSHCertificate, self).__init__(*args, **kwargs)
3839

3940
def test_enroll_local_generated_keypair(self):
40-
pub_key, priv_key = generate_ssh_keypair(key_size=4096, passphrase="foobar")
41+
keypair = generate_ssh_keypair(key_size=4096, passphrase="foobar")
4142

4243
request = SSHCertRequest(cadn=SSH_CADN, key_id=_random_key_id())
4344
request.validity_period = "4h"
4445
request.source_addresses = ["test.com"]
45-
request.public_key_data = pub_key
46+
request.set_public_key_data(keypair.public_key)
4647
response = _enroll_ssh_cert(self.tpp_conn, request)
4748
self.assertTrue(response.private_key_data is None,
4849
SERVICE_GENERATED_NO_KEY_ERROR % ("Private", "not", request.key_id))
4950
self.assertTrue(response.public_key_data, SERVICE_GENERATED_NO_KEY_ERROR % ("Public", "", request.key_id))
50-
self.assertTrue(response.public_key_data == request.public_key_data,
51+
self.assertTrue(response.public_key_data == request.get_public_key_data(),
5152
"Public key on response does not match request.\nExpected: %s\nGot: %s"
52-
% (request.public_key_data, response.public_key_data))
53+
% (request.get_public_key_data(), response.public_key_data))
5354
self.assertTrue(response.cert_data, SSH_CERT_DATA_ERROR % request.key_id)
5455

5556
def test_enroll_service_generated_keypair(self):
@@ -69,7 +70,7 @@ def _enroll_ssh_cert(connector, request):
6970
:rtype: SSHRetrieveResponse
7071
"""
7172
success = connector.request_ssh_cert(request)
72-
assert success # self.assertTrue(success, "SSH certificate request failed. Key id: %s CADN: %s" % (request.key_id, request.cadn))
73+
assert success
7374
response = connector.retrieve_ssh_cert(request)
7475
assert isinstance(response, SSHRetrieveResponse)
7576
return response

vcert/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from .connection_tpp_token import TPPTokenConnection
2222
from .connection_fake import FakeConnection
2323
from .pem import Certificate
24-
from .ssh_utils import SSHCertRequest, SSHRetrieveResponse, SSHCertDetails, generate_ssh_keypair
24+
from .ssh_utils import SSHCertRequest, generate_ssh_keypair
2525

2626

2727
def Connection(url=None, token=None, user=None, password=None, fake=False, http_request_kwargs=None):

vcert/common.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,8 @@ def process_server_response(r):
697697
log_errors(r.json())
698698
except:
699699
log_errors(r.content)
700-
raise VenafiConnectionError("Server status: %s\nResponse: %s" % (r.status_code, r.request.url))
700+
raise VenafiConnectionError("\n\tServer status: %s\n\tURL: %s\n\tResponse: %s"
701+
% (r.status_code, r.request.url, r.content))
701702

702703
content_type = r.headers.get("content-type")
703704
# Content-type not present, return status and reason (if any)

vcert/connection_tpp_token.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def _post(self, url=None, data=None, check_token=True, include_headers=True):
9191
headers = {HEADER_AUTHORIZATION: token, 'content-type': MIME_JSON, "cache-control": "no-cache"}
9292

9393
if isinstance(data, dict):
94+
log.debug("POST Request\n\tURL: %s\n\tHeaders:%s\n\tBody:%s\n" % (self._base_url+url, headers, data))
9495
r = requests.post(self._base_url + url, headers=headers, json=data, **self._http_request_kwargs)
9596
else:
9697
log.error("Unexpected client data type: %s for %s" % (type(data), url))

vcert/ssh_utils.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def __init__(self, cadn, key_id, validity_period=None, policy_dn=None, object_na
6060
self.object_name = object_name
6161
self.destination_addresses = destination_addresses
6262
self.principals = principals
63-
self.public_key_data = public_key_data
63+
self._public_key_data = public_key_data
6464
self.extensions = extensions
6565
self.force_command = force_command
6666
self.source_addresses = source_addresses
@@ -74,24 +74,25 @@ def __init__(self, cadn, key_id, validity_period=None, policy_dn=None, object_na
7474
self.include_cert_details = include_cert_details
7575
self.timeout = timeout
7676

77-
@property
78-
def public_key_data(self):
77+
def get_public_key_data(self):
7978
"""
8079
:rtype: str
8180
"""
81+
if not self._public_key_data:
82+
return None
8283
temp = self._public_key_data.rstrip("\r\n")
8384
if self.key_id:
8485
return "%s %s" % (temp, self.key_id)
8586
else:
8687
return temp
8788

88-
@public_key_data.setter
89-
def public_key_data(self, public_key):
89+
def set_public_key_data(self, key):
9090
"""
91-
:param str public_key:
91+
92+
:param str key:
9293
:rtype: None
9394
"""
94-
self._public_key_data = public_key
95+
self._public_key_data = key
9596

9697

9798
class SSHCertResponse:
@@ -160,6 +161,17 @@ def __init__(self, response):
160161
self.error_msg = response["ErrorMessage"] if "ErrorMessage" in response else None
161162

162163

164+
class SSHKeyPair:
165+
def __init__(self, private, public):
166+
"""
167+
168+
:param str private:
169+
:param str public:
170+
"""
171+
self.private_key = private
172+
self.public_key = public
173+
174+
163175
def build_tpp_request(request):
164176
"""
165177
:param SSHCertRequest request:
@@ -189,8 +201,8 @@ def build_tpp_request(request):
189201
data["Principals"] = request.principals
190202
if request.validity_period:
191203
data["ValidityPeriod"] = request.validity_period
192-
if request.public_key_data:
193-
data["PublicKeyData"] = request.public_key_data
204+
if request.get_public_key_data():
205+
data["PublicKeyData"] = request.get_public_key_data()
194206
if request.extensions:
195207
data["Extensions"] = request.extensions
196208
if request.force_command:
@@ -229,7 +241,7 @@ def generate_ssh_keypair(key_size=DEFAULT_SSH_KEY_SIZE, passphrase=None):
229241
Generates a key pair (private, public) for use with SSH
230242
:param int key_size:
231243
:param str passphrase:
232-
:rtype: tuple
244+
:rtype: SSHKeyPair
233245
"""
234246
if passphrase:
235247
encryption = serialization.BestAvailableEncryption(passphrase)
@@ -250,4 +262,4 @@ def generate_ssh_keypair(key_size=DEFAULT_SSH_KEY_SIZE, passphrase=None):
250262
format=serialization.PublicFormat.OpenSSH
251263
)
252264

253-
return private_key, public_key
265+
return SSHKeyPair(private_key, public_key)

0 commit comments

Comments
 (0)