Merge pull request #43 from callidus/adding-crypto-params

Adding CryptographicParameters construction to attribute values
This commit is contained in:
Peter Hamilton 2015-07-01 07:59:25 -04:00
commit f22b3f9c60
2 changed files with 99 additions and 1 deletions

View File

@ -20,6 +20,7 @@ from kmip.core.attributes import ContactInformation
from kmip.core.attributes import CryptographicAlgorithm
from kmip.core.attributes import CryptographicLength
from kmip.core.attributes import CryptographicUsageMask
from kmip.core.attributes import CryptographicParameters
from kmip.core.attributes import CustomAttribute
from kmip.core.attributes import Digest
from kmip.core.attributes import Name
@ -27,6 +28,7 @@ from kmip.core.attributes import ObjectGroup
from kmip.core.attributes import UniqueIdentifier
from kmip.core.attributes import ObjectType
from kmip.core.attributes import OperationPolicyName
from kmip.core.attributes import HashingAlgorithm
from kmip.core import utils
@ -151,7 +153,31 @@ class AttributeValueFactory(object):
return CryptographicLength(length)
def _create_cryptographic_parameters(self, params):
raise NotImplementedError()
block_cipher_mode = None
if 'block_cipher_mode' in params:
block_cipher_mode = CryptographicParameters.BlockCipherMode(
params.get('block_cipher_mode'))
padding_method = None
if 'padding_method' in params:
padding_method = CryptographicParameters.PaddingMethod(
params.get('padding_method'))
key_role_type = None
if 'key_role_type' in params:
key_role_type = CryptographicParameters.KeyRoleType(
params.get('key_role_type'))
hashing_algorithm = None
if 'hashing_algorithm' in params:
hashing_algorithm = HashingAlgorithm(
params.get("hashing_algorithm"))
return CryptographicParameters(
block_cipher_mode=block_cipher_mode,
padding_method=padding_method,
hashing_algorithm=hashing_algorithm,
key_role_type=key_role_type)
def _create_cryptographic_domain_parameters(self, params):
raise NotImplementedError()

View File

@ -16,7 +16,15 @@
from testtools import TestCase
from kmip.core.enums import AttributeType
from kmip.core.enums import BlockCipherMode
from kmip.core.enums import HashingAlgorithm
from kmip.core.enums import PaddingMethod
from kmip.core.enums import KeyRoleType
from kmip.core import attributes
from kmip.core.attributes import CryptographicParameters
from kmip.core.attributes import OperationPolicyName
from kmip.core.factories.attribute_values import AttributeValueFactory
@ -60,3 +68,67 @@ class TestAttributeValueFactory(TestCase):
def test_create_operation_policy_name_on_none(self):
self._test_create_operation_policy_name(None)
def _test_cryptograpic_parameters(self, obj, block_cipher_mode,
padding_method, key_role_type,
hashing_algorithm):
msg = "expected {0}, received {1}"
self.assertIsInstance(obj, CryptographicParameters, msg.format(
CryptographicParameters, obj.__class__))
self.assertEqual(block_cipher_mode, obj.block_cipher_mode, msg.format(
block_cipher_mode, obj.block_cipher_mode))
self.assertEqual(padding_method, obj.padding_method, msg.format(
padding_method, obj.padding_method))
self.assertEqual(key_role_type, obj.key_role_type, msg.format(
key_role_type, obj.hashing_algorithm))
self.assertEqual(hashing_algorithm, obj.hashing_algorithm, msg.format(
hashing_algorithm, obj.hashing_algorithm))
def test_create_cryptograpic_parameters_none(self):
cp = self.factory.create_attribute_value(
AttributeType.CRYPTOGRAPHIC_PARAMETERS,
{})
self._test_cryptograpic_parameters(cp, None, None, None, None)
def test_create_cryptograpic_parameters_block_cipher_mode(self):
cp = self.factory.create_attribute_value(
AttributeType.CRYPTOGRAPHIC_PARAMETERS,
{'block_cipher_mode': BlockCipherMode.NIST_KEY_WRAP})
self._test_cryptograpic_parameters(
cp, CryptographicParameters.BlockCipherMode(
BlockCipherMode.NIST_KEY_WRAP),
None, None, None)
def test_create_cryptograpic_parameters_padding_method(self):
cp = self.factory.create_attribute_value(
AttributeType.CRYPTOGRAPHIC_PARAMETERS,
{'padding_method': PaddingMethod.ANSI_X9_23})
# noqa - E128 continuation line under-indented for visual indent
self._test_cryptograpic_parameters(cp, None,
CryptographicParameters.PaddingMethod(PaddingMethod.ANSI_X9_23),
None, None) # noqa
def test_create_cryptograpic_parameters_key_role_type(self):
cp = self.factory.create_attribute_value(
AttributeType.CRYPTOGRAPHIC_PARAMETERS,
{'key_role_type': KeyRoleType.KEK})
# noqa - E128 continuation line under-indented for visual indent
self._test_cryptograpic_parameters(cp, None, None,
CryptographicParameters.KeyRoleType(KeyRoleType.KEK),
None) # noqa
def test_create_cryptograpic_parameters_hashing_algorithm(self):
cp = self.factory.create_attribute_value(
AttributeType.CRYPTOGRAPHIC_PARAMETERS,
{'hashing_algorithm': HashingAlgorithm.SHA_512})
# noqa - E128 continuation line under-indented for visual indent
self._test_cryptograpic_parameters(cp, None, None, None,
attributes.HashingAlgorithm(HashingAlgorithm.SHA_512)) # noqa