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
|
@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