Example #1
0
    def test_equal_on_not_equal(self):
        """
        Test that the equality operator returns False when comparing two
        Intervals with different values.
        """
        a = primitives.Interval(1)
        b = primitives.Interval(2)

        self.assertFalse(a == b)
        self.assertFalse(b == a)
Example #2
0
    def test_equal_on_equal_and_empty(self):
        """
        Test that the equality operator returns True when comparing two
        Intervals.
        """
        a = primitives.Interval()
        b = primitives.Interval()

        self.assertTrue(a == b)
        self.assertTrue(b == a)
Example #3
0
    def test_not_equal_on_equal_and_empty(self):
        """
        Test that the inequality operator returns False when comparing
        two Intervals.
        """
        a = primitives.Interval()
        b = primitives.Interval()

        self.assertFalse(a != b)
        self.assertFalse(b != a)
Example #4
0
    def test_not_equal_on_not_equal(self):
        """
        Test that the inequality operator returns True when comparing two
        Intervals with different values.
        """
        a = primitives.Interval(1)
        b = primitives.Interval(2)

        self.assertTrue(a != b)
        self.assertTrue(b != a)
Example #5
0
    def test_not_equal_on_equal(self):
        """
        Test that the inequality operator returns False when comparing
        two Intervals with the same values.
        """
        a = primitives.Interval(1)
        b = primitives.Interval(1)

        self.assertFalse(a != b)
        self.assertFalse(b != a)
Example #6
0
    def read(self, input_stream, kmip_version=enums.KMIPVersion.KMIP_1_0):
        """
        Read the data encoding the Rekey request payload and decode it into
        its constituent parts.

        Args:
            input_stream (stream): A data stream containing encoded object
                data, supporting a read method; usually a BytearrayStream
                object.
            kmip_version (KMIPVersion): An enumeration defining the KMIP
                version with which the object will be decoded. Optional,
                defaults to KMIP 1.0.
        """
        super(RekeyRequestPayload, self).read(input_stream,
                                              kmip_version=kmip_version)
        local_stream = utils.BytearrayStream(input_stream.read(self.length))

        if self.is_tag_next(enums.Tags.UNIQUE_IDENTIFIER, local_stream):
            self._unique_identifier = primitives.TextString(
                tag=enums.Tags.UNIQUE_IDENTIFIER)
            self._unique_identifier.read(local_stream,
                                         kmip_version=kmip_version)

        if self.is_tag_next(enums.Tags.OFFSET, local_stream):
            self._offset = primitives.Interval(tag=enums.Tags.OFFSET)
            self._offset.read(local_stream, kmip_version=kmip_version)

        if self.is_tag_next(enums.Tags.TEMPLATE_ATTRIBUTE, local_stream):
            self._template_attribute = objects.TemplateAttribute()
            self._template_attribute.read(local_stream,
                                          kmip_version=kmip_version)

        self.is_oversized(local_stream)
Example #7
0
    def read(self, input_stream):
        """
        Read the data encoding the Check response payload and decode it into
        its constituent parts.

        Args:
            input_stream (stream): A data stream containing encoded object
                data, supporting a read method; usually a BytearrayStream
                object.

        Raises:
            ValueError: Raised if the data attribute is missing from the
                encoded payload.
        """
        super(CheckResponsePayload, self).read(input_stream)
        local_stream = utils.BytearrayStream(input_stream.read(self.length))

        if self.is_tag_next(enums.Tags.UNIQUE_IDENTIFIER, local_stream):
            self._unique_identifier = primitives.TextString(
                tag=enums.Tags.UNIQUE_IDENTIFIER)
            self._unique_identifier.read(local_stream)
        if self.is_tag_next(enums.Tags.USAGE_LIMITS_COUNT, local_stream):
            self._usage_limits_count = primitives.LongInteger(
                tag=enums.Tags.USAGE_LIMITS_COUNT)
            self._usage_limits_count.read(local_stream)
        if self.is_tag_next(enums.Tags.CRYPTOGRAPHIC_USAGE_MASK, local_stream):
            self._cryptographic_usage_mask = primitives.Integer(
                tag=enums.Tags.CRYPTOGRAPHIC_USAGE_MASK)
            self._cryptographic_usage_mask.read(local_stream)
        if self.is_tag_next(enums.Tags.LEASE_TIME, local_stream):
            self._lease_time = primitives.Interval(tag=enums.Tags.LEASE_TIME)
            self._lease_time.read(local_stream)

        self.is_oversized(local_stream)
Example #8
0
    def read(self, input_stream):
        """
        Read the data encoding the ObtainLease response payload and decode it
        into its constituent parts.

        Args:
            input_stream (stream): A data stream containing encoded object
                data, supporting a read method; usually a BytearrayStream
                object.

        Raises:
            ValueError: Raised if the data attribute is missing from the
                encoded payload.
        """
        super(ObtainLeaseResponsePayload, self).read(input_stream)
        local_stream = utils.BytearrayStream(input_stream.read(self.length))

        if self.is_tag_next(enums.Tags.UNIQUE_IDENTIFIER, local_stream):
            self._unique_identifier = primitives.TextString(
                tag=enums.Tags.UNIQUE_IDENTIFIER)
            self._unique_identifier.read(local_stream)
        if self.is_tag_next(enums.Tags.LEASE_TIME, local_stream):
            self._lease_time = primitives.Interval(tag=enums.Tags.LEASE_TIME)
            self._lease_time.read(local_stream)
        if self.is_tag_next(enums.Tags.LAST_CHANGE_DATE, local_stream):
            self._last_change_date = primitives.DateTime(
                tag=enums.Tags.LAST_CHANGE_DATE)
            self._last_change_date.read(local_stream)

        self.is_oversized(local_stream)
Example #9
0
    def read(self, input_stream):
        """
        Read the data encoding the Rekey request payload and decode it into
        its constituent parts.

        Args:
            input_stream (stream): A data stream containing encoded object
                data, supporting a read method; usually a BytearrayStream
                object.
        """
        super(RekeyRequestPayload, self).read(input_stream)
        local_stream = utils.BytearrayStream(input_stream.read(self.length))

        if self.is_tag_next(enums.Tags.UNIQUE_IDENTIFIER, local_stream):
            self._unique_identifier = primitives.TextString(
                tag=enums.Tags.UNIQUE_IDENTIFIER)
            self._unique_identifier.read(local_stream)

        if self.is_tag_next(enums.Tags.OFFSET, local_stream):
            self._offset = primitives.Interval(tag=enums.Tags.OFFSET)
            self._offset.read(local_stream)

        if self.is_tag_next(enums.Tags.TEMPLATE_ATTRIBUTE, local_stream):
            self._template_attribute = objects.TemplateAttribute()
            self._template_attribute.read(local_stream)

        self.is_oversized(local_stream)
Example #10
0
 def lease_time(self, value):
     if value is None:
         self._lease_time = None
     elif isinstance(value, six.integer_types):
         self._lease_time = primitives.Interval(value=value,
                                                tag=enums.Tags.LEASE_TIME)
     else:
         raise TypeError("Lease time must be an integer.")
Example #11
0
 def offset(self, value):
     if value is None:
         self._offset = None
     elif isinstance(value, six.integer_types):
         self._offset = primitives.Interval(value=value,
                                            tag=enums.Tags.OFFSET)
     else:
         raise TypeError("Offset must be an integer.")
Example #12
0
 def test_read(self):
     """
     Test that an Interval can be read from a byte stream.
     """
     stream = utils.BytearrayStream(self.encoding)
     interval = primitives.Interval()
     interval.read(stream)
     self.assertEqual(self.value, interval.value)
Example #13
0
 def test_read_on_invalid_padding(self):
     """
     Test that an InvalidPaddingBytes exception is thrown when attempting
     to decode an Interval with invalid padding bytes.
     """
     stream = utils.BytearrayStream(self.encoding_bad_padding)
     interval = primitives.Interval()
     self.assertRaises(exceptions.InvalidPaddingBytes, interval.read,
                       stream)
Example #14
0
 def test_read_on_invalid_length(self):
     """
     Test that an InvalidPrimitiveLength exception is thrown when attempting
     to decode an Interval with an invalid length.
     """
     stream = utils.BytearrayStream(self.encoding_bad_length)
     interval = primitives.Interval()
     self.assertRaises(exceptions.InvalidPrimitiveLength, interval.read,
                       stream)
Example #15
0
 def test_repr(self):
     """
     Test that the representation of a Interval is formatted properly.
     """
     long_int = primitives.Interval()
     value = "value={0}".format(long_int.value)
     tag = "tag={0}".format(long_int.tag)
     self.assertEqual("Interval({0}, {1})".format(value, tag),
                      repr(long_int))
Example #16
0
    def test_not_equal_on_type_mismatch(self):
        """
        Test that the inequality operator returns True when comparing a
        Interval to a non-Interval object.
        """
        a = primitives.Interval()
        b = 'invalid'

        self.assertTrue(a != b)
        self.assertTrue(b != a)
Example #17
0
    def test_equal_on_type_mismatch(self):
        """
        Test that the equality operator returns False when comparing a
        Interval to a non-Interval object.
        """
        a = primitives.Interval()
        b = 'invalid'

        self.assertFalse(a == b)
        self.assertFalse(b == a)
Example #18
0
    def test_write(self):
        """
        Test that an Interval can be written to a byte stream.
        """
        stream = utils.BytearrayStream()
        interval = primitives.Interval(self.value)
        interval.write(stream)

        result = stream.read()
        self.assertEqual(len(self.encoding), len(result))
        self.assertEqual(self.encoding, result)
Example #19
0
 def test_init_unset(self):
     """
     Test that an Interval can be instantiated with no input.
     """
     interval = primitives.Interval()
     self.assertEqual(0, interval.value)
Example #20
0
 def test_str(self):
     """
     Test that the string representation of a Interval is formatted
     properly.
     """
     self.assertEqual("0", str(primitives.Interval()))
Example #21
0
 def create_attribute_value(self, name, value):
     # Switch on the name of the attribute
     if name is enums.AttributeType.UNIQUE_IDENTIFIER:
         return attributes.UniqueIdentifier(value)
     elif name is enums.AttributeType.NAME:
         return self._create_name(value)
     elif name is enums.AttributeType.OBJECT_TYPE:
         return attributes.ObjectType(value)
     elif name is enums.AttributeType.CRYPTOGRAPHIC_ALGORITHM:
         return attributes.CryptographicAlgorithm(value)
     elif name is enums.AttributeType.CRYPTOGRAPHIC_LENGTH:
         return self._create_cryptographic_length(value)
     elif name is enums.AttributeType.CRYPTOGRAPHIC_PARAMETERS:
         return self._create_cryptographic_parameters(value)
     elif name is enums.AttributeType.CRYPTOGRAPHIC_DOMAIN_PARAMETERS:
         raise NotImplementedError()
     elif name is enums.AttributeType.CERTIFICATE_TYPE:
         raise NotImplementedError()
     elif name is enums.AttributeType.CERTIFICATE_LENGTH:
         return primitives.Integer(value, enums.Tags.CERTIFICATE_LENGTH)
     elif name is enums.AttributeType.X_509_CERTIFICATE_IDENTIFIER:
         raise NotImplementedError()
     elif name is enums.AttributeType.X_509_CERTIFICATE_SUBJECT:
         raise NotImplementedError()
     elif name is enums.AttributeType.X_509_CERTIFICATE_ISSUER:
         raise NotImplementedError()
     elif name is enums.AttributeType.CERTIFICATE_IDENTIFIER:
         raise NotImplementedError()
     elif name is enums.AttributeType.CERTIFICATE_SUBJECT:
         raise NotImplementedError()
     elif name is enums.AttributeType.CERTIFICATE_ISSUER:
         raise NotImplementedError()
     elif name is enums.AttributeType.DIGITAL_SIGNATURE_ALGORITHM:
         raise NotImplementedError()
     elif name is enums.AttributeType.DIGEST:
         return attributes.Digest()
     elif name is enums.AttributeType.OPERATION_POLICY_NAME:
         return attributes.OperationPolicyName(value)
     elif name is enums.AttributeType.CRYPTOGRAPHIC_USAGE_MASK:
         return self._create_cryptographic_usage_mask(value)
     elif name is enums.AttributeType.LEASE_TIME:
         return primitives.Interval(value, enums.Tags.LEASE_TIME)
     elif name is enums.AttributeType.USAGE_LIMITS:
         raise NotImplementedError()
     elif name is enums.AttributeType.STATE:
         return attributes.State(value)
     elif name is enums.AttributeType.INITIAL_DATE:
         return primitives.DateTime(value, enums.Tags.INITIAL_DATE)
     elif name is enums.AttributeType.ACTIVATION_DATE:
         return primitives.DateTime(value, enums.Tags.ACTIVATION_DATE)
     elif name is enums.AttributeType.PROCESS_START_DATE:
         return primitives.DateTime(value, enums.Tags.PROCESS_START_DATE)
     elif name is enums.AttributeType.PROTECT_STOP_DATE:
         return primitives.DateTime(value, enums.Tags.PROTECT_STOP_DATE)
     elif name is enums.AttributeType.DEACTIVATION_DATE:
         return primitives.DateTime(value, enums.Tags.DEACTIVATION_DATE)
     elif name is enums.AttributeType.DESTROY_DATE:
         return primitives.DateTime(value, enums.Tags.DESTROY_DATE)
     elif name is enums.AttributeType.COMPROMISE_OCCURRENCE_DATE:
         return primitives.DateTime(value,
                                    enums.Tags.COMPROMISE_OCCURRENCE_DATE)
     elif name is enums.AttributeType.COMPROMISE_DATE:
         return primitives.DateTime(value, enums.Tags.COMPROMISE_DATE)
     elif name is enums.AttributeType.REVOCATION_REASON:
         raise NotImplementedError()
     elif name is enums.AttributeType.ARCHIVE_DATE:
         return primitives.DateTime(value, enums.Tags.ARCHIVE_DATE)
     elif name is enums.AttributeType.OBJECT_GROUP:
         return self._create_object_group(value)
     elif name is enums.AttributeType.FRESH:
         return primitives.Boolean(value, enums.Tags.FRESH)
     elif name is enums.AttributeType.LINK:
         raise NotImplementedError()
     elif name is enums.AttributeType.APPLICATION_SPECIFIC_INFORMATION:
         return self._create_application_specific_information(value)
     elif name is enums.AttributeType.CONTACT_INFORMATION:
         return self._create_contact_information(value)
     elif name is enums.AttributeType.LAST_CHANGE_DATE:
         return primitives.DateTime(value, enums.Tags.LAST_CHANGE_DATE)
     elif name is enums.AttributeType.CUSTOM_ATTRIBUTE:
         return attributes.CustomAttribute(value)
     else:
         if not isinstance(name, str):
             raise ValueError('Unrecognized attribute type: '
                              '{0}'.format(name))
         elif name.startswith('x-'):
             # Custom attribute indicated
             return attributes.CustomAttribute(value)
Example #22
0
 def test_init(self):
     """
     Test that an Interval can be instantiated.
     """
     interval = primitives.Interval(1)
     self.assertEqual(1, interval.value)