Updated app specific info to be a list of dictionaries, removed unneeded sudo in run.sh, updated server.conf to remove db, updated tests and comments to reflect app specific info being a list

This commit is contained in:
Grace Lombardi 2022-07-18 08:45:20 -04:00 committed by arp102
parent 6bf55b98f5
commit 0a3e39143f
5 changed files with 67 additions and 32 deletions

View File

@ -14,8 +14,8 @@ if [[ "${RUN_INTEGRATION_TESTS}" == "1" ]]; then
sudo cp ./.travis/policy.json /etc/pykmip/policies/policy.json
sudo mkdir -p /var/log/pykmip
sudo chmod 777 /var/log/pykmip
sudo python3 ./bin/run_server.py &
sudo tox -e integration -- --config client
python3 ./bin/run_server.py &
tox -e integration -- --config client
elif [[ "${RUN_INTEGRATION_TESTS}" == "2" ]]; then
# Set up the SLUGS instance
cp -r ./.travis/functional/slugs /tmp/
@ -23,14 +23,14 @@ elif [[ "${RUN_INTEGRATION_TESTS}" == "2" ]]; then
# Set up the PyKMIP server
cp -r ./.travis/functional/pykmip /tmp/
sudo python3 ./bin/create_certificates.py
python3 ./bin/create_certificates.py
mv *.pem /tmp/pykmip/certs/
sudo mkdir -p /var/log/pykmip
sudo chmod 777 /var/log/pykmip
sudo pykmip-server -f /tmp/pykmip/server.conf -l /tmp/pykmip/server.log &
pykmip-server -f /tmp/pykmip/server.conf -l /tmp/pykmip/server.log &
# Run the functional tests
sudo tox -e functional -- --config-file /tmp/pykmip/client.conf
tox -e functional -- --config-file /tmp/pykmip/client.conf
else
sudo tox
tox
fi

View File

@ -7,4 +7,3 @@ ca_path=/etc/pykmip/certs/cert.pem
auth_suite=TLS1.2
enable_tls_client_auth=False
policy_path=/etc/pykmip/policies/
database_path=/tmp/pykmip.db

View File

@ -559,11 +559,13 @@ class ProxyKmipClient(object):
if hasattr(managed_object, '_application_specific_informations'):
if managed_object._application_specific_informations:
attribute = self.attribute_factory.create_attribute(
enums.AttributeType.APPLICATION_SPECIFIC_INFORMATION,
managed_object._application_specific_informations
)
object_attributes.append(attribute)
for info in managed_object._application_specific_informations:
attribute = self.attribute_factory.create_attribute(
enums.AttributeType.APPLICATION_SPECIFIC_INFORMATION,
info,
index=0
)
object_attributes.append(attribute)
template = cobjects.TemplateAttribute(attributes=object_attributes)
object_type = managed_object.object_type
# Register the managed object and handle the results

View File

@ -674,7 +674,7 @@ class SymmetricKey(Key):
key_wrapping_data(dict): A dictionary containing key wrapping data
settings, describing how the key value has been wrapped.
Optional, defaults to None.
app_specific_info(dict): A dictionary containing application_namespace and application_data.
app_specific_info(list): A list of dictionaries containing application_namespace and application_data.
Optional, defaults to None.
"""
super(SymmetricKey, self).__init__(
@ -844,7 +844,7 @@ class PublicKey(Key):
key_wrapping_data(dict): A dictionary containing key wrapping data
settings, describing how the key value has been wrapped.
Optional, defaults to None.
app_specific_info(dict): A dictionary containing application_namespace and application_data.
app_specific_info(list): A list of dictionaries containing application_namespace and application_data.
Optional, defaults to None.
"""
super(PublicKey, self).__init__(
@ -1013,7 +1013,7 @@ class PrivateKey(Key):
key_wrapping_data(dict): A dictionary containing key wrapping data
settings, describing how the key value has been wrapped.
Optional, defaults to None.
app_specific_info(dict): A dictionary containing application_namespace and application_data.
app_specific_info(list): A list of dictionaries containing application_namespace and application_data.
Optional, defaults to None.
"""
super(PrivateKey, self).__init__(
@ -1606,7 +1606,7 @@ class SecretData(CryptographicObject):
masks(list): A list of CryptographicUsageMask enumerations
defining how the key will be used.
name(string): The string name of the key.
app_specific_info(dict): A dictionary containing application_namespace and application_data.
app_specific_info(list): A list of dictionaries containing application_namespace and application_data.
Optional, defaults to None.
"""
super(SecretData, self).__init__()

View File

@ -39,10 +39,8 @@ class TestProxyKmipClientIntegration(testtools.TestCase):
uuids = self.client.locate()
for uuid in uuids:
try:
self.client.revoke(enums.RevocationReasonCode.KEY_COMPROMISE, uuid)
finally:
self.client.destroy(uid=uuid)
self.client.revoke(enums.RevocationReasonCode.KEY_COMPROMISE, uuid)
self.client.destroy(uid=uuid)
def test_symmetric_key_create_get_destroy(self):
"""
@ -197,10 +195,16 @@ class TestProxyKmipClientIntegration(testtools.TestCase):
128,
(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E'
b'\x0F'),
app_specific_info={
'application_namespace': 'Testing',
'application_data': 'Testing2'
}
app_specific_info=[
{
'application_namespace': 'Testing',
'application_data': 'Testing2'
},
{
'application_namespace': 'Testing3',
'application_data': 'Testing4'
}
]
)
key_id = self.client.register(key)
attribute_list = self.client.get_attribute_list(key_id)
@ -210,14 +214,12 @@ class TestProxyKmipClientIntegration(testtools.TestCase):
attribute_names=['Application Specific Information']
)
self.assertEqual(key_id, result_id)
self.assertEqual(1, len(attribute_list))
attribute = attribute_list[0]
self.assertEqual(
'Application Specific Information',
attribute.attribute_name.value
)
print(attribute.attribute_value)
self.assertEqual(
'Testing',
attribute.attribute_value.application_namespace
@ -227,6 +229,20 @@ class TestProxyKmipClientIntegration(testtools.TestCase):
attribute.attribute_value.application_data
)
attribute2 = attribute_list[1]
self.assertEqual(
'Application Specific Information',
attribute2.attribute_name.value
)
self.assertEqual(
'Testing3',
attribute2.attribute_value.application_namespace
)
self.assertEqual(
'Testing4',
attribute2.attribute_value.application_data
)
self.client.revoke(enums.RevocationReasonCode.KEY_COMPROMISE, key_id)
self.client.destroy(key_id)
@ -546,10 +562,16 @@ class TestProxyKmipClientIntegration(testtools.TestCase):
secret = objects.SecretData(
b'\x53\x65\x63\x72\x65\x74\x50\x61\x73\x73\x77\x6F\x72\x64',
enums.SecretDataType.PASSWORD,
app_specific_info={
'application_namespace': 'Testing',
'application_data': 'Testing2'
}
app_specific_info=[
{
'application_namespace': 'Testing',
'application_data': 'Testing2'
},
{
'application_namespace': 'Testing3',
'application_data': 'Testing4'
}
]
)
uid = self.client.register(secret)
@ -568,14 +590,12 @@ class TestProxyKmipClientIntegration(testtools.TestCase):
attribute_names=['Application Specific Information']
)
self.assertEqual(uid, result_id)
self.assertEqual(1, len(attribute_list))
attribute = attribute_list[0]
self.assertEqual(
'Application Specific Information',
attribute.attribute_name.value
)
print(attribute.attribute_value)
self.assertEqual(
'Testing',
attribute.attribute_value.application_namespace
@ -585,6 +605,20 @@ class TestProxyKmipClientIntegration(testtools.TestCase):
attribute.attribute_value.application_data
)
attribute2 = attribute_list[1]
self.assertEqual(
'Application Specific Information',
attribute2.attribute_name.value
)
self.assertEqual(
'Testing3',
attribute2.attribute_value.application_namespace
)
self.assertEqual(
'Testing4',
attribute2.attribute_value.application_data
)
finally:
self.client.revoke(enums.RevocationReasonCode.KEY_COMPROMISE, uid)
self.client.destroy(uid)