2
0
mirror of https://github.com/openkmip/pykmip synced 2026-01-04 17:43:51 +00:00

Adding secret data to the Pie object hierarchy

This change adds a SecretData class to the Pie object hierarchy. A unit
test suite covering the class is provided, as are updates to the Pie
object factory and associated tests.
This commit is contained in:
Peter Hamilton
2015-07-30 08:03:33 -04:00
parent ee7a6bc082
commit e497e1c37c
4 changed files with 463 additions and 62 deletions

View File

@@ -60,6 +60,10 @@ class ObjectFactory:
return self._build_core_certificate(obj)
elif isinstance(obj, secrets.Certificate):
return self._build_pie_certificate(obj)
elif isinstance(obj, pobjects.SecretData):
return self._build_core_secret_data(obj)
elif isinstance(obj, secrets.SecretData):
return self._build_pie_secret_data(obj)
else:
raise TypeError("object type unsupported and cannot be converted")
@@ -93,6 +97,12 @@ class ObjectFactory:
def _build_core_certificate(self, cert):
return secrets.Certificate(cert.certificate_type, cert.value)
def _build_pie_secret_data(self, secret):
secret_data_type = secret.secret_data_type.enum
value = secret.key_block.key_value.key_material.value
return pobjects.SecretData(value, secret_data_type)
def _build_core_key(self, key, cls):
algorithm = key.cryptographic_algorithm
length = key.cryptographic_length
@@ -111,3 +121,20 @@ class ObjectFactory:
key_wrapping_data=None)
return cls(key_block)
def _build_core_secret_data(self, secret):
secret_data_type = secret.data_type
value = secret.value
key_material = cobjects.KeyMaterial(value)
key_value = cobjects.KeyValue(key_material)
key_block = cobjects.KeyBlock(
key_format_type=misc.KeyFormatType(enums.KeyFormatType.OPAQUE),
key_compression_type=None,
key_value=key_value,
cryptographic_algorithm=None,
cryptographic_length=None,
key_wrapping_data=None)
data_type = secrets.SecretData.SecretDataType(secret_data_type)
return secrets.SecretData(data_type, key_block)