def test_read_crypto_params(self): CryptographicParameters.read(self.cp, self.key_req_with_crypt_params) self.assertEqual(Tags.BLOCK_CIPHER_MODE.value, self.cp.block_cipher_mode.tag.value) self.assertEqual(BlockCipherMode.CBC.value, self.cp.block_cipher_mode.value.value) self.assertEqual(Tags.PADDING_METHOD.value, self.cp.padding_method.tag.value) self.assertEqual(PaddingMethod.PKCS5.value, self.cp.padding_method.value.value) self.assertEqual(Tags.KEY_ROLE_TYPE.value, self.cp.key_role_type.tag.value) self.assertEqual(KeyRoleType.BDK.value, self.cp.key_role_type.value.value) self.assertEqual(Tags.HASHING_ALGORITHM.value, self.cp.hashing_algorithm.tag.value) self.assertEqual(HashingAlgorithmEnum.SHA_1.value, self.cp.hashing_algorithm.value.value) self.assertEqual(Tags.DIGITAL_SIGNATURE_ALGORITHM.value, self.cp.digital_signature_algorithm.tag.value) self.assertEqual( DigitalSignatureAlgorithm.SHA256_WITH_RSA_ENCRYPTION.value, self.cp.digital_signature_algorithm.value.value) self.assertEqual(Tags.CRYPTOGRAPHIC_ALGORITHM.value, self.cp.cryptographic_algorithm.tag.value) self.assertEqual(CryptographicAlgorithm.HMAC_SHA512.value, self.cp.cryptographic_algorithm.value.value)
class KeyInformation(Struct): def __init__(self, unique_identifier=None, cryptographic_parameters=None, tag=Tags.ENCRYPTION_KEY_INFORMATION): super(self.__class__, self).\ __init__(tag=Tags.ENCRYPTION_KEY_INFORMATION) self.unique_identifier = unique_identifier self.cryptographic_parameters = cryptographic_parameters self.validate() def read(self, istream): super(self.__class__, self).read(istream) tstream = BytearrayStream(istream.read(self.length)) self.unique_identifier = attributes.UniqueIdentifier() self.unique_identifier.read(tstream) if self.is_tag_next(Tags.CRYPTOGRAPHIC_PARAMETERS, tstream): self.cryptographic_parameters = CryptographicParameters() self.cryptographic_parameters.read(tstream) self.is_oversized(tstream) self.validate() def write(self, ostream): tstream = BytearrayStream() self.unique_identifier.write(tstream) if self.cryptographic_parameters is not None: self.cryptographic_parameters.write(tstream) # Write the length and value of the template attribute self.length = tstream.length() super(self.__class__, self).write(ostream) ostream.write(tstream.buffer) def validate(self): self.__validate() def __validate(self): # TODO (peter-hamilton) Finish implementation. pass
class KeyInformation(Struct): def __init__(self, unique_identifier=None, cryptographic_parameters=None, tag=Tags.ENCRYPTION_KEY_INFORMATION): super(KeyInformation, self).__init__(tag=tag) self.unique_identifier = unique_identifier self.cryptographic_parameters = cryptographic_parameters self.validate() def read(self, istream): super(KeyInformation, self).read(istream) tstream = BytearrayStream(istream.read(self.length)) self.unique_identifier = attributes.UniqueIdentifier() self.unique_identifier.read(tstream) if self.is_tag_next(Tags.CRYPTOGRAPHIC_PARAMETERS, tstream): self.cryptographic_parameters = CryptographicParameters() self.cryptographic_parameters.read(tstream) self.is_oversized(tstream) self.validate() def write(self, ostream): tstream = BytearrayStream() self.unique_identifier.write(tstream) if self.cryptographic_parameters is not None: self.cryptographic_parameters.write(tstream) # Write the length and value of the template attribute self.length = tstream.length() super(KeyInformation, self).write(ostream) ostream.write(tstream.buffer) def validate(self): self.__validate() def __validate(self): # TODO (peter-hamilton) Finish implementation. pass
def test_read_crypto_params(self): CryptographicParameters.read(self.cp, self.key_req_with_crypt_params) self.assertEqual(Tags.BLOCK_CIPHER_MODE.value, self.cp.block_cipher_mode.tag.value) self.assertEqual(BlockCipherMode.CBC.value, self.cp.block_cipher_mode.value.value) self.assertEqual(Tags.PADDING_METHOD.value, self.cp.padding_method.tag.value) self.assertEqual(PaddingMethod.PKCS5.value, self.cp.padding_method.value.value) self.assertEqual(Tags.KEY_ROLE_TYPE.value, self.cp.key_role_type.tag.value) self.assertEqual(KeyRoleType.BDK.value, self.cp.key_role_type.value.value) self.assertEqual(Tags.HASHING_ALGORITHM.value, self.cp.hashing_algorithm.tag.value) self.assertEqual(HashingAlgorithmEnum.SHA_1.value, self.cp.hashing_algorithm.value.value)