mirror of https://github.com/OpenKMIP/PyKMIP.git
Merge pull request #350 from OpenKMIP/feat/update-key-wrapping-structs
Update key wrapping data structures to support dict arguments
This commit is contained in:
commit
b3d4ffb03f
|
@ -715,8 +715,10 @@ class EncryptionKeyInformation(Struct):
|
|||
|
||||
@cryptographic_parameters.setter
|
||||
def cryptographic_parameters(self, value):
|
||||
if value is None:
|
||||
if not value:
|
||||
self._cryptographic_parameters = None
|
||||
elif isinstance(value, dict):
|
||||
self._cryptographic_parameters = CryptographicParameters(**value)
|
||||
elif isinstance(value, CryptographicParameters):
|
||||
self._cryptographic_parameters = value
|
||||
else:
|
||||
|
@ -871,8 +873,10 @@ class MACSignatureKeyInformation(primitives.Struct):
|
|||
|
||||
@cryptographic_parameters.setter
|
||||
def cryptographic_parameters(self, value):
|
||||
if value is None:
|
||||
if not value:
|
||||
self._cryptographic_parameters = None
|
||||
elif isinstance(value, dict):
|
||||
self._cryptographic_parameters = CryptographicParameters(**value)
|
||||
elif isinstance(value, CryptographicParameters):
|
||||
self._cryptographic_parameters = value
|
||||
else:
|
||||
|
@ -1051,8 +1055,11 @@ class KeyWrappingData(Struct):
|
|||
|
||||
@encryption_key_information.setter
|
||||
def encryption_key_information(self, value):
|
||||
if value is None:
|
||||
if not value:
|
||||
self._encryption_key_information = None
|
||||
elif isinstance(value, dict):
|
||||
self._encryption_key_information = \
|
||||
EncryptionKeyInformation(**value)
|
||||
elif isinstance(value, EncryptionKeyInformation):
|
||||
self._encryption_key_information = value
|
||||
else:
|
||||
|
@ -1067,8 +1074,11 @@ class KeyWrappingData(Struct):
|
|||
|
||||
@mac_signature_key_information.setter
|
||||
def mac_signature_key_information(self, value):
|
||||
if value is None:
|
||||
if not value:
|
||||
self._mac_signature_key_information = None
|
||||
elif isinstance(value, dict):
|
||||
self._mac_signature_key_information = \
|
||||
MACSignatureKeyInformation(**value)
|
||||
elif isinstance(value, MACSignatureKeyInformation):
|
||||
self._mac_signature_key_information = value
|
||||
else:
|
||||
|
|
|
@ -385,6 +385,27 @@ class TestEncryptionKeyInformation(testtools.TestCase):
|
|||
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):
|
||||
"""
|
||||
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
|
||||
)
|
||||
|
||||
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):
|
||||
"""
|
||||
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 = 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):
|
||||
"""
|
||||
Test that a TypeError is raised when an invalid value is used to set
|
||||
|
|
Loading…
Reference in New Issue