mirror of https://github.com/OpenKMIP/PyKMIP.git
Update key wrapping data structures to support dict arguments
This change makes several minor updates to different structs pertaining to key wrapping, allowing these structs to accept and process dict arguments. Unit tests have been updated to reflect this change.
This commit is contained in:
parent
84a8168a11
commit
9acf38568f
|
@ -715,8 +715,10 @@ class EncryptionKeyInformation(Struct):
|
||||||
|
|
||||||
@cryptographic_parameters.setter
|
@cryptographic_parameters.setter
|
||||||
def cryptographic_parameters(self, value):
|
def cryptographic_parameters(self, value):
|
||||||
if value is None:
|
if not value:
|
||||||
self._cryptographic_parameters = None
|
self._cryptographic_parameters = None
|
||||||
|
elif isinstance(value, dict):
|
||||||
|
self._cryptographic_parameters = CryptographicParameters(**value)
|
||||||
elif isinstance(value, CryptographicParameters):
|
elif isinstance(value, CryptographicParameters):
|
||||||
self._cryptographic_parameters = value
|
self._cryptographic_parameters = value
|
||||||
else:
|
else:
|
||||||
|
@ -871,8 +873,10 @@ class MACSignatureKeyInformation(primitives.Struct):
|
||||||
|
|
||||||
@cryptographic_parameters.setter
|
@cryptographic_parameters.setter
|
||||||
def cryptographic_parameters(self, value):
|
def cryptographic_parameters(self, value):
|
||||||
if value is None:
|
if not value:
|
||||||
self._cryptographic_parameters = None
|
self._cryptographic_parameters = None
|
||||||
|
elif isinstance(value, dict):
|
||||||
|
self._cryptographic_parameters = CryptographicParameters(**value)
|
||||||
elif isinstance(value, CryptographicParameters):
|
elif isinstance(value, CryptographicParameters):
|
||||||
self._cryptographic_parameters = value
|
self._cryptographic_parameters = value
|
||||||
else:
|
else:
|
||||||
|
@ -1051,8 +1055,11 @@ class KeyWrappingData(Struct):
|
||||||
|
|
||||||
@encryption_key_information.setter
|
@encryption_key_information.setter
|
||||||
def encryption_key_information(self, value):
|
def encryption_key_information(self, value):
|
||||||
if value is None:
|
if not value:
|
||||||
self._encryption_key_information = None
|
self._encryption_key_information = None
|
||||||
|
elif isinstance(value, dict):
|
||||||
|
self._encryption_key_information = \
|
||||||
|
EncryptionKeyInformation(**value)
|
||||||
elif isinstance(value, EncryptionKeyInformation):
|
elif isinstance(value, EncryptionKeyInformation):
|
||||||
self._encryption_key_information = value
|
self._encryption_key_information = value
|
||||||
else:
|
else:
|
||||||
|
@ -1067,8 +1074,11 @@ class KeyWrappingData(Struct):
|
||||||
|
|
||||||
@mac_signature_key_information.setter
|
@mac_signature_key_information.setter
|
||||||
def mac_signature_key_information(self, value):
|
def mac_signature_key_information(self, value):
|
||||||
if value is None:
|
if not value:
|
||||||
self._mac_signature_key_information = None
|
self._mac_signature_key_information = None
|
||||||
|
elif isinstance(value, dict):
|
||||||
|
self._mac_signature_key_information = \
|
||||||
|
MACSignatureKeyInformation(**value)
|
||||||
elif isinstance(value, MACSignatureKeyInformation):
|
elif isinstance(value, MACSignatureKeyInformation):
|
||||||
self._mac_signature_key_information = value
|
self._mac_signature_key_information = value
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -385,6 +385,27 @@ class TestEncryptionKeyInformation(testtools.TestCase):
|
||||||
parameters.block_cipher_mode
|
parameters.block_cipher_mode
|
||||||
)
|
)
|
||||||
|
|
||||||
|
encryption_key_information = objects.EncryptionKeyInformation(
|
||||||
|
unique_identifier="00000000-1111-2222-3333-444444444444",
|
||||||
|
cryptographic_parameters={
|
||||||
|
'block_cipher_mode': enums.BlockCipherMode.CTR
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
"00000000-1111-2222-3333-444444444444",
|
||||||
|
encryption_key_information.unique_identifier
|
||||||
|
)
|
||||||
|
self.assertIsInstance(
|
||||||
|
encryption_key_information.cryptographic_parameters,
|
||||||
|
attributes.CryptographicParameters
|
||||||
|
)
|
||||||
|
parameters = encryption_key_information.cryptographic_parameters
|
||||||
|
self.assertEqual(
|
||||||
|
enums.BlockCipherMode.CTR,
|
||||||
|
parameters.block_cipher_mode
|
||||||
|
)
|
||||||
|
|
||||||
def test_invalid_unique_identifier(self):
|
def test_invalid_unique_identifier(self):
|
||||||
"""
|
"""
|
||||||
Test that a TypeError is raised when an invalid value is used to set
|
Test that a TypeError is raised when an invalid value is used to set
|
||||||
|
@ -837,6 +858,27 @@ class TestMACSignatureKeyInformation(testtools.TestCase):
|
||||||
parameters.block_cipher_mode
|
parameters.block_cipher_mode
|
||||||
)
|
)
|
||||||
|
|
||||||
|
mac_signature_key_information = objects.MACSignatureKeyInformation(
|
||||||
|
unique_identifier="00000000-1111-2222-3333-444444444444",
|
||||||
|
cryptographic_parameters={
|
||||||
|
'block_cipher_mode': enums.BlockCipherMode.CTR
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
"00000000-1111-2222-3333-444444444444",
|
||||||
|
mac_signature_key_information.unique_identifier
|
||||||
|
)
|
||||||
|
self.assertIsInstance(
|
||||||
|
mac_signature_key_information.cryptographic_parameters,
|
||||||
|
attributes.CryptographicParameters
|
||||||
|
)
|
||||||
|
parameters = mac_signature_key_information.cryptographic_parameters
|
||||||
|
self.assertEqual(
|
||||||
|
enums.BlockCipherMode.CTR,
|
||||||
|
parameters.block_cipher_mode
|
||||||
|
)
|
||||||
|
|
||||||
def test_invalid_unique_identifier(self):
|
def test_invalid_unique_identifier(self):
|
||||||
"""
|
"""
|
||||||
Test that a TypeError is raised when an invalid value is used to set
|
Test that a TypeError is raised when an invalid value is used to set
|
||||||
|
@ -1367,6 +1409,70 @@ class TestKeyWrappingData(testtools.TestCase):
|
||||||
key_wrapping_data.encoding_option
|
key_wrapping_data.encoding_option
|
||||||
)
|
)
|
||||||
|
|
||||||
|
key_wrapping_data = objects.KeyWrappingData(
|
||||||
|
wrapping_method=enums.WrappingMethod.ENCRYPT,
|
||||||
|
encryption_key_information={
|
||||||
|
'unique_identifier': "12345678-9012-3456-7890-123456789012",
|
||||||
|
'cryptographic_parameters': {
|
||||||
|
'block_cipher_mode': enums.BlockCipherMode.CTR
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mac_signature_key_information={
|
||||||
|
'unique_identifier': "00000000-1111-2222-3333-444444444444",
|
||||||
|
'cryptographic_parameters': {
|
||||||
|
'block_cipher_mode': enums.BlockCipherMode.NIST_KEY_WRAP
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mac_signature=b'\x01',
|
||||||
|
iv_counter_nonce=b'\x02',
|
||||||
|
encoding_option=enums.EncodingOption.TTLV_ENCODING
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
enums.WrappingMethod.ENCRYPT,
|
||||||
|
key_wrapping_data.wrapping_method
|
||||||
|
)
|
||||||
|
self.assertIsInstance(
|
||||||
|
key_wrapping_data.encryption_key_information,
|
||||||
|
objects.EncryptionKeyInformation
|
||||||
|
)
|
||||||
|
e = key_wrapping_data.encryption_key_information
|
||||||
|
self.assertEqual(
|
||||||
|
"12345678-9012-3456-7890-123456789012",
|
||||||
|
e.unique_identifier
|
||||||
|
)
|
||||||
|
self.assertIsInstance(
|
||||||
|
e.cryptographic_parameters,
|
||||||
|
attributes.CryptographicParameters
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
enums.BlockCipherMode.CTR,
|
||||||
|
e.cryptographic_parameters.block_cipher_mode
|
||||||
|
)
|
||||||
|
self.assertIsInstance(
|
||||||
|
key_wrapping_data.mac_signature_key_information,
|
||||||
|
objects.MACSignatureKeyInformation
|
||||||
|
)
|
||||||
|
m = key_wrapping_data.mac_signature_key_information
|
||||||
|
self.assertEqual(
|
||||||
|
"00000000-1111-2222-3333-444444444444",
|
||||||
|
m.unique_identifier
|
||||||
|
)
|
||||||
|
self.assertIsInstance(
|
||||||
|
m.cryptographic_parameters,
|
||||||
|
attributes.CryptographicParameters
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
enums.BlockCipherMode.NIST_KEY_WRAP,
|
||||||
|
m.cryptographic_parameters.block_cipher_mode
|
||||||
|
)
|
||||||
|
self.assertEqual(b'\x01', key_wrapping_data.mac_signature)
|
||||||
|
self.assertEqual(b'\x02', key_wrapping_data.iv_counter_nonce)
|
||||||
|
self.assertEqual(
|
||||||
|
enums.EncodingOption.TTLV_ENCODING,
|
||||||
|
key_wrapping_data.encoding_option
|
||||||
|
)
|
||||||
|
|
||||||
def test_invalid_wrapping_method(self):
|
def test_invalid_wrapping_method(self):
|
||||||
"""
|
"""
|
||||||
Test that a TypeError is raised when an invalid value is used to set
|
Test that a TypeError is raised when an invalid value is used to set
|
||||||
|
|
Loading…
Reference in New Issue