From 77d5b32ea4facb6bc7ae62c34ccb89cb45653bb9 Mon Sep 17 00:00:00 2001 From: Peter Hamilton Date: Tue, 12 Nov 2019 17:03:13 -0500 Subject: [PATCH] Add payload base classes to prepare for simplifying the client This change adds payload request and response base classes to prepare for future simplification updates to the current client architecture. No new tests are required for this change. --- kmip/core/messages/payloads/__init__.py | 9 +++++ kmip/core/messages/payloads/activate.py | 14 +++----- kmip/core/messages/payloads/archive.py | 13 +++---- kmip/core/messages/payloads/base.py | 34 +++++++++++++++++++ kmip/core/messages/payloads/cancel.py | 13 +++---- kmip/core/messages/payloads/check.py | 9 ++--- kmip/core/messages/payloads/create.py | 13 +++---- .../core/messages/payloads/create_key_pair.py | 13 +++---- kmip/core/messages/payloads/decrypt.py | 13 +++---- .../messages/payloads/delete_attribute.py | 13 +++---- kmip/core/messages/payloads/derive_key.py | 13 +++---- kmip/core/messages/payloads/destroy.py | 13 +++---- .../messages/payloads/discover_versions.py | 17 +++------- kmip/core/messages/payloads/encrypt.py | 13 +++---- kmip/core/messages/payloads/get.py | 15 ++++---- .../messages/payloads/get_attribute_list.py | 12 +++---- kmip/core/messages/payloads/get_attributes.py | 11 +++--- .../messages/payloads/get_usage_allocation.py | 13 +++---- kmip/core/messages/payloads/locate.py | 10 +++--- kmip/core/messages/payloads/mac.py | 15 +++----- kmip/core/messages/payloads/obtain_lease.py | 13 +++---- kmip/core/messages/payloads/poll.py | 7 ++-- kmip/core/messages/payloads/query.py | 12 +++---- kmip/core/messages/payloads/recover.py | 13 +++---- kmip/core/messages/payloads/register.py | 14 +++----- kmip/core/messages/payloads/rekey.py | 13 +++---- kmip/core/messages/payloads/rekey_key_pair.py | 8 ++--- kmip/core/messages/payloads/revoke.py | 14 +++----- kmip/core/messages/payloads/sign.py | 13 +++---- .../messages/payloads/signature_verify.py | 13 +++---- 30 files changed, 180 insertions(+), 216 deletions(-) create mode 100644 kmip/core/messages/payloads/base.py diff --git a/kmip/core/messages/payloads/__init__.py b/kmip/core/messages/payloads/__init__.py index d52456b..ce4bd7f 100644 --- a/kmip/core/messages/payloads/__init__.py +++ b/kmip/core/messages/payloads/__init__.py @@ -13,6 +13,13 @@ # License for the specific language governing permissions and limitations # under the License. +# Import payload base classes +from kmip.core.messages.payloads.base import ( + RequestPayload, + ResponsePayload +) + +# Import payload subclasses from kmip.core.messages.payloads.activate import ( ActivateRequestPayload, ActivateResponsePayload @@ -176,6 +183,8 @@ __all__ = [ "RekeyKeyPairResponsePayload", "RekeyRequestPayload", "RekeyResponsePayload", + "RequestPayload", + "ResponsePayload", "RevokeRequestPayload", "RevokeResponsePayload", "SignRequestPayload", diff --git a/kmip/core/messages/payloads/activate.py b/kmip/core/messages/payloads/activate.py index af618bc..a91452d 100644 --- a/kmip/core/messages/payloads/activate.py +++ b/kmip/core/messages/payloads/activate.py @@ -15,13 +15,11 @@ from kmip.core import attributes from kmip.core import enums - -from kmip.core.primitives import Struct - from kmip.core.utils import BytearrayStream +from kmip.core.messages.payloads import base -class ActivateRequestPayload(Struct): +class ActivateRequestPayload(base.RequestPayload): """ A request payload for the Activate operation. @@ -40,8 +38,7 @@ class ActivateRequestPayload(Struct): unique_identifier (UniqueIdentifier): The UUID of a managed cryptographic object. """ - super(ActivateRequestPayload, self).__init__( - tag=enums.Tags.REQUEST_PAYLOAD) + super(ActivateRequestPayload, self).__init__() self.unique_identifier = unique_identifier self.validate() @@ -103,7 +100,7 @@ class ActivateRequestPayload(Struct): raise TypeError(msg) -class ActivateResponsePayload(Struct): +class ActivateResponsePayload(base.ResponsePayload): """ A response payload for the Activate operation. @@ -122,8 +119,7 @@ class ActivateResponsePayload(Struct): unique_identifier (UniqueIdentifier): The UUID of a managed cryptographic object. """ - super(ActivateResponsePayload, self).__init__( - tag=enums.Tags.RESPONSE_PAYLOAD) + super(ActivateResponsePayload, self).__init__() if unique_identifier is None: self.unique_identifier = attributes.UniqueIdentifier() else: diff --git a/kmip/core/messages/payloads/archive.py b/kmip/core/messages/payloads/archive.py index 6077ca7..100de94 100644 --- a/kmip/core/messages/payloads/archive.py +++ b/kmip/core/messages/payloads/archive.py @@ -18,9 +18,10 @@ import six from kmip import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class ArchiveRequestPayload(primitives.Struct): +class ArchiveRequestPayload(base.RequestPayload): """ A request payload for the Archive operation. @@ -36,9 +37,7 @@ class ArchiveRequestPayload(primitives.Struct): unique_identifier (string): The ID of the managed object (e.g., a public key) to archive. Optional, defaults to None. """ - super(ArchiveRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(ArchiveRequestPayload, self).__init__() self._unique_identifier = None self.unique_identifier = unique_identifier @@ -151,7 +150,7 @@ class ArchiveRequestPayload(primitives.Struct): }) -class ArchiveResponsePayload(primitives.Struct): +class ArchiveResponsePayload(base.ResponsePayload): """ A response payload for the Archive operation. @@ -167,9 +166,7 @@ class ArchiveResponsePayload(primitives.Struct): unique_identifier (string): The ID of the managed object (e.g., a public key) that was archived. Optional, defaults to None. """ - super(ArchiveResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(ArchiveResponsePayload, self).__init__() self._unique_identifier = None self.unique_identifier = unique_identifier diff --git a/kmip/core/messages/payloads/base.py b/kmip/core/messages/payloads/base.py new file mode 100644 index 0000000..cbfda03 --- /dev/null +++ b/kmip/core/messages/payloads/base.py @@ -0,0 +1,34 @@ +# Copyright (c) 2019 The Johns Hopkins University/Applied Physics Laboratory +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from kmip.core import enums +from kmip.core import primitives + + +class RequestPayload(primitives.Struct): + """ + An abstract base class for KMIP request payloads. + """ + def __init__(self): + super(RequestPayload, self).__init__(enums.Tags.REQUEST_PAYLOAD) + + +class ResponsePayload(primitives.Struct): + """ + An abstract base class for KMIP response payloads. + """ + + def __init__(self): + super(ResponsePayload, self).__init__(enums.Tags.RESPONSE_PAYLOAD) diff --git a/kmip/core/messages/payloads/cancel.py b/kmip/core/messages/payloads/cancel.py index e35faeb..383d5b9 100644 --- a/kmip/core/messages/payloads/cancel.py +++ b/kmip/core/messages/payloads/cancel.py @@ -18,9 +18,10 @@ import six from kmip import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class CancelRequestPayload(primitives.Struct): +class CancelRequestPayload(base.RequestPayload): """ A request payload for the Cancel operation. @@ -37,9 +38,7 @@ class CancelRequestPayload(primitives.Struct): asynchronous_correlation_value (bytes): The ID of a pending operation to cancel, in bytes. Optional, defaults to None. """ - super(CancelRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(CancelRequestPayload, self).__init__() self._asynchronous_correlation_value = None self.asynchronous_correlation_value = asynchronous_correlation_value @@ -159,7 +158,7 @@ class CancelRequestPayload(primitives.Struct): }) -class CancelResponsePayload(primitives.Struct): +class CancelResponsePayload(base.ResponsePayload): """ A response payload for the Cancel operation. @@ -183,9 +182,7 @@ class CancelResponsePayload(primitives.Struct): specifying the result of canceling the operation. Optional, defaults to None. """ - super(CancelResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(CancelResponsePayload, self).__init__() self._asynchronous_correlation_value = None self._cancellation_result = None diff --git a/kmip/core/messages/payloads/check.py b/kmip/core/messages/payloads/check.py index 1b9a584..e4d0da5 100644 --- a/kmip/core/messages/payloads/check.py +++ b/kmip/core/messages/payloads/check.py @@ -18,9 +18,10 @@ import six from kmip import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class CheckRequestPayload(primitives.Struct): +class CheckRequestPayload(base.RequestPayload): """ A request payload for the Check operation. @@ -55,7 +56,7 @@ class CheckRequestPayload(primitives.Struct): lease should be available for on the checked object. Optional, defaults to None. """ - super(CheckRequestPayload, self).__init__(enums.Tags.REQUEST_PAYLOAD) + super(CheckRequestPayload, self).__init__() self._unique_identifier = None self._usage_limits_count = None @@ -285,7 +286,7 @@ class CheckRequestPayload(primitives.Struct): }) -class CheckResponsePayload(primitives.Struct): +class CheckResponsePayload(base.ResponsePayload): """ A response payload for the Check operation. @@ -320,7 +321,7 @@ class CheckResponsePayload(primitives.Struct): lease should be available for on the checked object. Optional, defaults to None. """ - super(CheckResponsePayload, self).__init__(enums.Tags.RESPONSE_PAYLOAD) + super(CheckResponsePayload, self).__init__() self._unique_identifier = None self._usage_limits_count = None diff --git a/kmip/core/messages/payloads/create.py b/kmip/core/messages/payloads/create.py index 30fa13e..d212d7f 100644 --- a/kmip/core/messages/payloads/create.py +++ b/kmip/core/messages/payloads/create.py @@ -20,9 +20,10 @@ from kmip.core import exceptions from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class CreateRequestPayload(primitives.Struct): +class CreateRequestPayload(base.RequestPayload): """ A request payload for the Create operation. @@ -52,9 +53,7 @@ class CreateRequestPayload(primitives.Struct): structure containing the storage masks permissible for the new object. Added in KMIP 2.0. Optional, defaults to None. """ - super(CreateRequestPayload, self).__init__( - tag=enums.Tags.REQUEST_PAYLOAD - ) + super(CreateRequestPayload, self).__init__() self._object_type = None self._template_attribute = None @@ -316,7 +315,7 @@ class CreateRequestPayload(primitives.Struct): return '{' + value + '}' -class CreateResponsePayload(primitives.Struct): +class CreateResponsePayload(base.ResponsePayload): """ A response payload for the Create operation. @@ -344,9 +343,7 @@ class CreateResponsePayload(primitives.Struct): structure containing a set of attributes that were set on the new object. Optional, defaults to None. """ - super(CreateResponsePayload, self).__init__( - tag=enums.Tags.RESPONSE_PAYLOAD - ) + super(CreateResponsePayload, self).__init__() self._object_type = None self._unique_identifier = None diff --git a/kmip/core/messages/payloads/create_key_pair.py b/kmip/core/messages/payloads/create_key_pair.py index c0dd8fc..29fc432 100644 --- a/kmip/core/messages/payloads/create_key_pair.py +++ b/kmip/core/messages/payloads/create_key_pair.py @@ -20,9 +20,10 @@ from kmip.core import exceptions from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class CreateKeyPairRequestPayload(primitives.Struct): +class CreateKeyPairRequestPayload(base.RequestPayload): """ A request payload for the CreateKeyPair operation. @@ -80,9 +81,7 @@ class CreateKeyPairRequestPayload(primitives.Struct): permissible for the new public key. Added in KMIP 2.0. Optional, defaults to None. """ - super(CreateKeyPairRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(CreateKeyPairRequestPayload, self).__init__() self._common_template_attribute = None self._private_key_template_attribute = None @@ -518,7 +517,7 @@ class CreateKeyPairRequestPayload(primitives.Struct): return '{' + value + '}' -class CreateKeyPairResponsePayload(primitives.Struct): +class CreateKeyPairResponsePayload(base.ResponsePayload): """ A response payload for the CreateKeyPair operation. @@ -556,9 +555,7 @@ class CreateKeyPairResponsePayload(primitives.Struct): tag containing the set of attributes that were set on the new public key. Optional, defaults to None. """ - super(CreateKeyPairResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(CreateKeyPairResponsePayload, self).__init__() self._private_key_unique_identifier = None self._public_key_unique_identifier = None diff --git a/kmip/core/messages/payloads/decrypt.py b/kmip/core/messages/payloads/decrypt.py index e748170..cc12cf1 100644 --- a/kmip/core/messages/payloads/decrypt.py +++ b/kmip/core/messages/payloads/decrypt.py @@ -19,9 +19,10 @@ from kmip.core import attributes from kmip.core import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class DecryptRequestPayload(primitives.Struct): +class DecryptRequestPayload(base.RequestPayload): """ A request payload for the Decrypt operation. @@ -74,9 +75,7 @@ class DecryptRequestPayload(primitives.Struct): authenticated encryption cipher. Optional, defaults to None. Added in KMIP 1.4. """ - super(DecryptRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(DecryptRequestPayload, self).__init__() self._unique_identifier = None self._cryptographic_parameters = None @@ -394,7 +393,7 @@ class DecryptRequestPayload(primitives.Struct): }) -class DecryptResponsePayload(primitives.Struct): +class DecryptResponsePayload(base.ResponsePayload): """ A response payload for the Decrypt operation. @@ -417,9 +416,7 @@ class DecryptResponsePayload(primitives.Struct): data (bytes): The decrypted data in binary form. Required for encoding and decoding. """ - super(DecryptResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(DecryptResponsePayload, self).__init__() self._unique_identifier = None self._data = None diff --git a/kmip/core/messages/payloads/delete_attribute.py b/kmip/core/messages/payloads/delete_attribute.py index 965eefe..758e445 100644 --- a/kmip/core/messages/payloads/delete_attribute.py +++ b/kmip/core/messages/payloads/delete_attribute.py @@ -20,9 +20,10 @@ from kmip.core import exceptions from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class DeleteAttributeRequestPayload(primitives.Struct): +class DeleteAttributeRequestPayload(base.RequestPayload): """ A request payload for the DeleteAttribute operation. @@ -65,9 +66,7 @@ class DeleteAttributeRequestPayload(primitives.Struct): KMIP 2.0+. Optional, defaults to None. Must be specified if the current attribute is not specified. """ - super(DeleteAttributeRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(DeleteAttributeRequestPayload, self).__init__() self._unique_identifier = None self._attribute_name = None @@ -374,7 +373,7 @@ class DeleteAttributeRequestPayload(primitives.Struct): return NotImplemented -class DeleteAttributeResponsePayload(primitives.Struct): +class DeleteAttributeResponsePayload(base.ResponsePayload): """ A response payload for the DeleteAttribute operation. @@ -397,9 +396,7 @@ class DeleteAttributeResponsePayload(primitives.Struct): that was deleted. Used in KMIP 1.0 - 1.4. Defaults to None. Required for read/write. """ - super(DeleteAttributeResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(DeleteAttributeResponsePayload, self).__init__() self._unique_identifier = None self._attribute = None diff --git a/kmip/core/messages/payloads/derive_key.py b/kmip/core/messages/payloads/derive_key.py index acf21af..06f09f4 100644 --- a/kmip/core/messages/payloads/derive_key.py +++ b/kmip/core/messages/payloads/derive_key.py @@ -21,9 +21,10 @@ from kmip.core import exceptions from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class DeriveKeyRequestPayload(primitives.Struct): +class DeriveKeyRequestPayload(base.RequestPayload): """ A request payload for the DeriveKey operation. @@ -68,9 +69,7 @@ class DeriveKeyRequestPayload(primitives.Struct): cryptographic object. Optional, defaults to None. Required for read/write. """ - super(DeriveKeyRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(DeriveKeyRequestPayload, self).__init__() self._object_type = None self._unique_identifiers = None @@ -434,7 +433,7 @@ class DeriveKeyRequestPayload(primitives.Struct): }) -class DeriveKeyResponsePayload(primitives.Struct): +class DeriveKeyResponsePayload(base.ResponsePayload): """ A response payload for the DeriveKey operation. @@ -461,9 +460,7 @@ class DeriveKeyResponsePayload(primitives.Struct): newly derived cryptographic object. Optional, defaults to None. """ - super(DeriveKeyResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(DeriveKeyResponsePayload, self).__init__() self._unique_identifier = None self._template_attribute = None diff --git a/kmip/core/messages/payloads/destroy.py b/kmip/core/messages/payloads/destroy.py index 4d24439..2071c30 100644 --- a/kmip/core/messages/payloads/destroy.py +++ b/kmip/core/messages/payloads/destroy.py @@ -16,18 +16,16 @@ from kmip.core import attributes from kmip.core import enums from kmip.core.enums import Tags - -from kmip.core.primitives import Struct - +from kmip.core.messages.payloads import base from kmip.core.utils import BytearrayStream # 4.21 -class DestroyRequestPayload(Struct): +class DestroyRequestPayload(base.RequestPayload): def __init__(self, unique_identifier=None): - super(DestroyRequestPayload, self).__init__(enums.Tags.REQUEST_PAYLOAD) + super(DestroyRequestPayload, self).__init__() self.unique_identifier = unique_identifier self.validate() @@ -67,12 +65,11 @@ class DestroyRequestPayload(Struct): pass -class DestroyResponsePayload(Struct): +class DestroyResponsePayload(base.ResponsePayload): def __init__(self, unique_identifier=None): - super(DestroyResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD) + super(DestroyResponsePayload, self).__init__() self.unique_identifier = unique_identifier self.validate() diff --git a/kmip/core/messages/payloads/discover_versions.py b/kmip/core/messages/payloads/discover_versions.py index d4a2c1e..8df74a5 100644 --- a/kmip/core/messages/payloads/discover_versions.py +++ b/kmip/core/messages/payloads/discover_versions.py @@ -16,20 +16,15 @@ from six.moves import xrange from kmip.core import enums - from kmip.core.messages.contents import ProtocolVersion - -from kmip.core.primitives import Struct - +from kmip.core.messages.payloads import base from kmip.core.utils import BytearrayStream -class DiscoverVersionsRequestPayload(Struct): +class DiscoverVersionsRequestPayload(base.RequestPayload): def __init__(self, protocol_versions=None): - super(DiscoverVersionsRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(DiscoverVersionsRequestPayload, self).__init__() if protocol_versions is None: self.protocol_versions = list() @@ -85,12 +80,10 @@ class DiscoverVersionsRequestPayload(Struct): raise TypeError(msg) -class DiscoverVersionsResponsePayload(Struct): +class DiscoverVersionsResponsePayload(base.ResponsePayload): def __init__(self, protocol_versions=None): - super(DiscoverVersionsResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(DiscoverVersionsResponsePayload, self).__init__() if protocol_versions is None: self.protocol_versions = list() diff --git a/kmip/core/messages/payloads/encrypt.py b/kmip/core/messages/payloads/encrypt.py index 4682705..f17d4f8 100644 --- a/kmip/core/messages/payloads/encrypt.py +++ b/kmip/core/messages/payloads/encrypt.py @@ -19,9 +19,10 @@ from kmip.core import attributes from kmip.core import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class EncryptRequestPayload(primitives.Struct): +class EncryptRequestPayload(base.RequestPayload): """ A request payload for the Encrypt operation. @@ -63,9 +64,7 @@ class EncryptRequestPayload(primitives.Struct): authenticated via the Authenticated Encryption Tag. Added in KMIP 1.4. """ - super(EncryptRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(EncryptRequestPayload, self).__init__() self._unique_identifier = None self._cryptographic_parameters = None @@ -343,7 +342,7 @@ class EncryptRequestPayload(primitives.Struct): }) -class EncryptResponsePayload(primitives.Struct): +class EncryptResponsePayload(base.ResponsePayload): """ A response payload for the Encrypt operation. @@ -384,9 +383,7 @@ class EncryptResponsePayload(primitives.Struct): authenticated encryption cipher. Optional, defaults to None. Added in KMIP 1.4. """ - super(EncryptResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(EncryptResponsePayload, self).__init__() self._unique_identifier = None self._data = None diff --git a/kmip/core/messages/payloads/get.py b/kmip/core/messages/payloads/get.py index b095808..cf4d807 100644 --- a/kmip/core/messages/payloads/get.py +++ b/kmip/core/messages/payloads/get.py @@ -20,11 +20,11 @@ from kmip.core import objects from kmip.core import primitives from kmip.core import secrets from kmip.core import utils - from kmip.core.factories import secrets as secret_factory +from kmip.core.messages.payloads import base -class GetRequestPayload(primitives.Struct): +class GetRequestPayload(base.RequestPayload): """ A request payload for the Get operation. @@ -62,9 +62,7 @@ class GetRequestPayload(primitives.Struct): information for wrapping the returned object. Optional, defaults to None. """ - super(GetRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(GetRequestPayload, self).__init__() self._unique_identifier = None self._key_format_type = None @@ -301,7 +299,7 @@ class GetRequestPayload(primitives.Struct): }) -class GetResponsePayload(primitives.Struct): +class GetResponsePayload(base.ResponsePayload): """ A response payload for the Get operation. @@ -330,9 +328,8 @@ class GetResponsePayload(primitives.Struct): Optional, defaults to None. Required for read/write. """ - super(GetResponsePayload, self).__init__( - tag=enums.Tags.RESPONSE_PAYLOAD - ) + super(GetResponsePayload, self).__init__() + self._object_type = None self._unique_identifier = None self._secret = None diff --git a/kmip/core/messages/payloads/get_attribute_list.py b/kmip/core/messages/payloads/get_attribute_list.py index aed190a..e36f428 100644 --- a/kmip/core/messages/payloads/get_attribute_list.py +++ b/kmip/core/messages/payloads/get_attribute_list.py @@ -20,9 +20,10 @@ from kmip.core import exceptions from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class GetAttributeListRequestPayload(primitives.Struct): +class GetAttributeListRequestPayload(base.RequestPayload): """ A request payload for the GetAttributeList operation. @@ -44,8 +45,7 @@ class GetAttributeListRequestPayload(primitives.Struct): which the retrieved attribute names should be associated. Optional, defaults to None. """ - super(GetAttributeListRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD) + super(GetAttributeListRequestPayload, self).__init__() self._unique_identifier = None @@ -153,7 +153,7 @@ class GetAttributeListRequestPayload(primitives.Struct): return NotImplemented -class GetAttributeListResponsePayload(primitives.Struct): +class GetAttributeListResponsePayload(base.ResponsePayload): """ A response payload for the GetAttributeList operation. @@ -182,9 +182,7 @@ class GetAttributeListResponsePayload(primitives.Struct): defaults to None. """ - super(GetAttributeListResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(GetAttributeListResponsePayload, self).__init__() self._unique_identifier = None self._attribute_names = list() diff --git a/kmip/core/messages/payloads/get_attributes.py b/kmip/core/messages/payloads/get_attributes.py index e1c7bb3..db70ad3 100644 --- a/kmip/core/messages/payloads/get_attributes.py +++ b/kmip/core/messages/payloads/get_attributes.py @@ -17,9 +17,10 @@ from kmip.core import exceptions from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class GetAttributesRequestPayload(primitives.Struct): +class GetAttributesRequestPayload(base.RequestPayload): """ A request payload for the GetAttributes operation. @@ -48,8 +49,7 @@ class GetAttributesRequestPayload(primitives.Struct): attributes associated with the managed object. Optional, defaults to None. """ - super(GetAttributesRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD) + super(GetAttributesRequestPayload, self).__init__() self._unique_identifier = None self._attribute_names = list() @@ -272,7 +272,7 @@ class GetAttributesRequestPayload(primitives.Struct): return NotImplemented -class GetAttributesResponsePayload(primitives.Struct): +class GetAttributesResponsePayload(base.ResponsePayload): """ A response payload for the GetAttributes operation. @@ -297,8 +297,7 @@ class GetAttributesResponsePayload(primitives.Struct): attributes (list): A list of attribute structures associated with the managed object. Optional, defaults to None. """ - super(GetAttributesResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD) + super(GetAttributesResponsePayload, self).__init__() self._unique_identifier = None self._attributes = list() diff --git a/kmip/core/messages/payloads/get_usage_allocation.py b/kmip/core/messages/payloads/get_usage_allocation.py index 745ab70..9e98f84 100644 --- a/kmip/core/messages/payloads/get_usage_allocation.py +++ b/kmip/core/messages/payloads/get_usage_allocation.py @@ -18,9 +18,10 @@ import six from kmip import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class GetUsageAllocationRequestPayload(primitives.Struct): +class GetUsageAllocationRequestPayload(base.RequestPayload): """ A request payload for the GetUsageAllocation operation. @@ -42,9 +43,7 @@ class GetUsageAllocationRequestPayload(primitives.Struct): usage_limits_count (int): The number of usage limits units that should be reserved for the object. Optional, defaults to None. """ - super(GetUsageAllocationRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(GetUsageAllocationRequestPayload, self).__init__() self._unique_identifier = None self._usage_limits_count = None @@ -199,7 +198,7 @@ class GetUsageAllocationRequestPayload(primitives.Struct): }) -class GetUsageAllocationResponsePayload(primitives.Struct): +class GetUsageAllocationResponsePayload(base.ResponsePayload): """ A response payload for the GetUsageAllocation operation. @@ -215,9 +214,7 @@ class GetUsageAllocationResponsePayload(primitives.Struct): unique_identifier (string): The ID of the managed object (e.g., a public key) that was allocated. Optional, defaults to None. """ - super(GetUsageAllocationResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(GetUsageAllocationResponsePayload, self).__init__() self._unique_identifier = None self.unique_identifier = unique_identifier diff --git a/kmip/core/messages/payloads/locate.py b/kmip/core/messages/payloads/locate.py index eb5bf9a..a4307c4 100644 --- a/kmip/core/messages/payloads/locate.py +++ b/kmip/core/messages/payloads/locate.py @@ -19,9 +19,10 @@ from kmip.core import enums from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class LocateRequestPayload(primitives.Struct): +class LocateRequestPayload(base.RequestPayload): """ A request payload for the Locate operation. @@ -64,7 +65,7 @@ class LocateRequestPayload(primitives.Struct): objects. Optional, defaults to None. Required for read/write for KMIP 2.0+. """ - super(LocateRequestPayload, self).__init__(enums.Tags.REQUEST_PAYLOAD) + super(LocateRequestPayload, self).__init__() self._maximum_items = None self._offset_items = None @@ -368,7 +369,7 @@ class LocateRequestPayload(primitives.Struct): return '{' + value + '}' -class LocateResponsePayload(primitives.Struct): +class LocateResponsePayload(base.ResponsePayload): """ A response payload for the Locate operation. @@ -391,8 +392,7 @@ class LocateResponsePayload(primitives.Struct): unique_identifiers (list): A list of strings specifying the object identifiers for matching objects. Optional, defaults to None. """ - super(LocateResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD) + super(LocateResponsePayload, self).__init__() self._located_items = None self._unique_identifiers = None diff --git a/kmip/core/messages/payloads/mac.py b/kmip/core/messages/payloads/mac.py index c3208e3..45552a8 100644 --- a/kmip/core/messages/payloads/mac.py +++ b/kmip/core/messages/payloads/mac.py @@ -16,24 +16,20 @@ from kmip.core import attributes from kmip.core import enums from kmip.core import exceptions from kmip.core.enums import Tags - +from kmip.core.messages.payloads import base from kmip.core.objects import Data, MACData - -from kmip.core.primitives import Struct - from kmip.core.utils import BytearrayStream # 4.33 -class MACRequestPayload(Struct): +class MACRequestPayload(base.RequestPayload): def __init__(self, unique_identifier=None, cryptographic_parameters=None, data=None): - super(MACRequestPayload, self).__init__( - tag=enums.Tags.REQUEST_PAYLOAD) + super(MACRequestPayload, self).__init__() self._unique_identifier = None self._cryptographic_parameters = None @@ -137,13 +133,12 @@ class MACRequestPayload(Struct): ostream.write(tstream.buffer) -class MACResponsePayload(Struct): +class MACResponsePayload(base.ResponsePayload): def __init__(self, unique_identifier=None, mac_data=None): - super(MACResponsePayload, self).__init__( - tag=enums.Tags.RESPONSE_PAYLOAD) + super(MACResponsePayload, self).__init__() self._unique_identifier = None self._mac_data = None diff --git a/kmip/core/messages/payloads/obtain_lease.py b/kmip/core/messages/payloads/obtain_lease.py index 011c4d3..178712d 100644 --- a/kmip/core/messages/payloads/obtain_lease.py +++ b/kmip/core/messages/payloads/obtain_lease.py @@ -18,9 +18,10 @@ import six from kmip import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class ObtainLeaseRequestPayload(primitives.Struct): +class ObtainLeaseRequestPayload(base.RequestPayload): """ A request payload for the ObtainLease operation. @@ -37,9 +38,7 @@ class ObtainLeaseRequestPayload(primitives.Struct): a public key) to obtain a lease for. Optional, defaults to None. """ - super(ObtainLeaseRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(ObtainLeaseRequestPayload, self).__init__() self._unique_identifier = None self.unique_identifier = unique_identifier @@ -152,7 +151,7 @@ class ObtainLeaseRequestPayload(primitives.Struct): }) -class ObtainLeaseResponsePayload(primitives.Struct): +class ObtainLeaseResponsePayload(base.ResponsePayload): """ A response payload for the ObtainLease operation. @@ -182,9 +181,7 @@ class ObtainLeaseResponsePayload(primitives.Struct): when the last change was made to the object or one of its attributes. Optional, defaults to None. """ - super(ObtainLeaseResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(ObtainLeaseResponsePayload, self).__init__() self._unique_identifier = None self._lease_time = None diff --git a/kmip/core/messages/payloads/poll.py b/kmip/core/messages/payloads/poll.py index 7cd9f9d..948bdac 100644 --- a/kmip/core/messages/payloads/poll.py +++ b/kmip/core/messages/payloads/poll.py @@ -18,9 +18,10 @@ import six from kmip import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class PollRequestPayload(primitives.Struct): +class PollRequestPayload(base.RequestPayload): """ A request payload for the Poll operation. @@ -38,9 +39,7 @@ class PollRequestPayload(primitives.Struct): operation to poll the status of, in bytes. Optional, defaults to None. """ - super(PollRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(PollRequestPayload, self).__init__() self._asynchronous_correlation_value = None self.asynchronous_correlation_value = asynchronous_correlation_value diff --git a/kmip/core/messages/payloads/query.py b/kmip/core/messages/payloads/query.py index 4f9c51c..6c3d7bd 100644 --- a/kmip/core/messages/payloads/query.py +++ b/kmip/core/messages/payloads/query.py @@ -21,9 +21,10 @@ from kmip.core import misc from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class QueryRequestPayload(primitives.Struct): +class QueryRequestPayload(base.RequestPayload): """ A request payload for the Query operation. @@ -41,7 +42,7 @@ class QueryRequestPayload(primitives.Struct): Args: query_functions (list): A list of QueryFunction enumerations. """ - super(QueryRequestPayload, self).__init__(enums.Tags.REQUEST_PAYLOAD) + super(QueryRequestPayload, self).__init__() self._query_functions = None @@ -187,7 +188,7 @@ class QueryRequestPayload(primitives.Struct): return NotImplemented -class QueryResponsePayload(primitives.Struct): +class QueryResponsePayload(base.ResponsePayload): """ A response payload for the Query operation. @@ -290,10 +291,7 @@ class QueryResponsePayload(primitives.Struct): the storage protections supported by the server. Optional, defaults to None. Added in KMIP 2.0. """ - super(QueryResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) - + super(QueryResponsePayload, self).__init__() self._operations = None self._object_types = None self._vendor_identification = None diff --git a/kmip/core/messages/payloads/recover.py b/kmip/core/messages/payloads/recover.py index edec1a7..abbf316 100644 --- a/kmip/core/messages/payloads/recover.py +++ b/kmip/core/messages/payloads/recover.py @@ -18,9 +18,10 @@ import six from kmip import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class RecoverRequestPayload(primitives.Struct): +class RecoverRequestPayload(base.RequestPayload): """ A request payload for the Recover operation. @@ -36,9 +37,7 @@ class RecoverRequestPayload(primitives.Struct): unique_identifier (string): The ID of the managed object (e.g., a public key) to recover. Optional, defaults to None. """ - super(RecoverRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(RecoverRequestPayload, self).__init__() self._unique_identifier = None self.unique_identifier = unique_identifier @@ -151,7 +150,7 @@ class RecoverRequestPayload(primitives.Struct): }) -class RecoverResponsePayload(primitives.Struct): +class RecoverResponsePayload(base.ResponsePayload): """ A response payload for the Recover operation. @@ -167,9 +166,7 @@ class RecoverResponsePayload(primitives.Struct): unique_identifier (string): The ID of the managed object (e.g., a public key) that was recovered. Optional, defaults to None. """ - super(RecoverResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(RecoverResponsePayload, self).__init__() self._unique_identifier = None self.unique_identifier = unique_identifier diff --git a/kmip/core/messages/payloads/register.py b/kmip/core/messages/payloads/register.py index 420dff0..730f7fa 100644 --- a/kmip/core/messages/payloads/register.py +++ b/kmip/core/messages/payloads/register.py @@ -21,11 +21,11 @@ from kmip.core import objects from kmip.core import primitives from kmip.core import secrets from kmip.core import utils - from kmip.core.factories import secrets as secret_factory +from kmip.core.messages.payloads import base -class RegisterRequestPayload(primitives.Struct): +class RegisterRequestPayload(base.RequestPayload): """ A request payload for the Register operation. @@ -69,9 +69,7 @@ class RegisterRequestPayload(primitives.Struct): object. Added in KMIP 2.0. Optional, defaults to None. """ - super(RegisterRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(RegisterRequestPayload, self).__init__() self.secret_factory = secret_factory.SecretFactory() @@ -388,7 +386,7 @@ class RegisterRequestPayload(primitives.Struct): return '{' + value + '}' -class RegisterResponsePayload(primitives.Struct): +class RegisterResponsePayload(base.ResponsePayload): """ A response payload for the Register operation. @@ -411,9 +409,7 @@ class RegisterResponsePayload(primitives.Struct): structure containing a set of attributes that were set on the new object. Optional, defaults to None. """ - super(RegisterResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(RegisterResponsePayload, self).__init__() self._unique_identifier = None self._template_attribute = None diff --git a/kmip/core/messages/payloads/rekey.py b/kmip/core/messages/payloads/rekey.py index 44cafd6..0bd8f86 100644 --- a/kmip/core/messages/payloads/rekey.py +++ b/kmip/core/messages/payloads/rekey.py @@ -16,9 +16,10 @@ from kmip.core import enums from kmip.core import objects from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class RekeyRequestPayload(primitives.Struct): +class RekeyRequestPayload(base.RequestPayload): """ A request payload for the Rekey operation. @@ -47,9 +48,7 @@ class RekeyRequestPayload(primitives.Struct): cryptographic length) that should be set on the replacement key. Optional, defaults to None. """ - super(RekeyRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(RekeyRequestPayload, self).__init__() self._unique_identifier = None self._offset = None @@ -227,7 +226,7 @@ class RekeyRequestPayload(primitives.Struct): }) -class RekeyResponsePayload(primitives.Struct): +class RekeyResponsePayload(base.ResponsePayload): """ A response payload for the Rekey operation. @@ -250,9 +249,7 @@ class RekeyResponsePayload(primitives.Struct): cryptographic length) that were set by the server on the replacement key. Optional, defaults to None. """ - super(RekeyResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(RekeyResponsePayload, self).__init__() self._unique_identifier = None self._template_attribute = None diff --git a/kmip/core/messages/payloads/rekey_key_pair.py b/kmip/core/messages/payloads/rekey_key_pair.py index ba913d3..f317dbd 100644 --- a/kmip/core/messages/payloads/rekey_key_pair.py +++ b/kmip/core/messages/payloads/rekey_key_pair.py @@ -18,13 +18,13 @@ from kmip.core import misc from kmip.core import objects from kmip.core import enums +from kmip.core.messages.payloads import base from kmip.core.messages.payloads.create_key_pair import \ CreateKeyPairResponsePayload -from kmip.core.primitives import Struct from kmip.core.utils import BytearrayStream -class RekeyKeyPairRequestPayload(Struct): +class RekeyKeyPairRequestPayload(base.RequestPayload): def __init__(self, private_key_uuid=None, @@ -32,9 +32,7 @@ class RekeyKeyPairRequestPayload(Struct): common_template_attribute=None, private_key_template_attribute=None, public_key_template_attribute=None): - super(RekeyKeyPairRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(RekeyKeyPairRequestPayload, self).__init__() self.private_key_uuid = private_key_uuid self.offset = offset diff --git a/kmip/core/messages/payloads/revoke.py b/kmip/core/messages/payloads/revoke.py index 8348fcb..adcc0cd 100644 --- a/kmip/core/messages/payloads/revoke.py +++ b/kmip/core/messages/payloads/revoke.py @@ -17,13 +17,11 @@ from kmip.core import attributes from kmip.core import enums from kmip.core import objects from kmip.core import primitives - -from kmip.core.primitives import Struct - +from kmip.core.messages.payloads import base from kmip.core.utils import BytearrayStream -class RevokeRequestPayload(Struct): +class RevokeRequestPayload(base.RequestPayload): """ A request payload for the Revoke operation. @@ -51,8 +49,7 @@ class RevokeRequestPayload(Struct): compromise_occurrence_date (DateTime): the datetime when the object was first believed to be compromised. """ - super(RevokeRequestPayload, self).__init__( - tag=enums.Tags.REQUEST_PAYLOAD) + super(RevokeRequestPayload, self).__init__() self.unique_identifier = unique_identifier self.compromise_occurrence_date = compromise_occurrence_date self.revocation_reason = revocation_reason @@ -145,7 +142,7 @@ class RevokeRequestPayload(Struct): raise TypeError(msg) -class RevokeResponsePayload(Struct): +class RevokeResponsePayload(base.ResponsePayload): """ A response payload for the Revoke operation. The payload contains the server response to the initial Revoke request. @@ -161,8 +158,7 @@ class RevokeResponsePayload(Struct): unique_identifier (UniqueIdentifier): The UUID of a managed cryptographic object. """ - super(RevokeResponsePayload, self).__init__( - tag=enums.Tags.RESPONSE_PAYLOAD) + super(RevokeResponsePayload, self).__init__() if unique_identifier is None: self.unique_identifier = attributes.UniqueIdentifier() else: diff --git a/kmip/core/messages/payloads/sign.py b/kmip/core/messages/payloads/sign.py index a843606..7035c8e 100644 --- a/kmip/core/messages/payloads/sign.py +++ b/kmip/core/messages/payloads/sign.py @@ -19,9 +19,10 @@ from kmip.core import attributes from kmip.core import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class SignRequestPayload(primitives.Struct): +class SignRequestPayload(base.RequestPayload): """ A request payload for the Sign operation. @@ -51,9 +52,7 @@ class SignRequestPayload(primitives.Struct): managed object will be used instead. data (bytes): The data to be signed, in binary form. """ - super(SignRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(SignRequestPayload, self).__init__() self._unique_identifier = None self._cryptographic_parameters = None @@ -247,7 +246,7 @@ class SignRequestPayload(primitives.Struct): }) -class SignResponsePayload(primitives.Struct): +class SignResponsePayload(base.ResponsePayload): """ A response payload for the Sign operation. @@ -260,9 +259,7 @@ class SignResponsePayload(primitives.Struct): def __init__(self, unique_identifier=None, signature_data=None): - super(SignResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(SignResponsePayload, self).__init__() self._unique_identifier = None self._signature_data = None diff --git a/kmip/core/messages/payloads/signature_verify.py b/kmip/core/messages/payloads/signature_verify.py index 7b5113f..dc6f506 100644 --- a/kmip/core/messages/payloads/signature_verify.py +++ b/kmip/core/messages/payloads/signature_verify.py @@ -19,9 +19,10 @@ from kmip.core import attributes from kmip.core import enums from kmip.core import primitives from kmip.core import utils +from kmip.core.messages.payloads import base -class SignatureVerifyRequestPayload(primitives.Struct): +class SignatureVerifyRequestPayload(base.RequestPayload): """ A request payload for the SignatureVerify operation. @@ -77,9 +78,7 @@ class SignatureVerifyRequestPayload(primitives.Struct): not the payload is the last in a series for a multi-payload operation. Optional, defaults to None. """ - super(SignatureVerifyRequestPayload, self).__init__( - enums.Tags.REQUEST_PAYLOAD - ) + super(SignatureVerifyRequestPayload, self).__init__() self._unique_identifier = None self._cryptographic_parameters = None @@ -438,7 +437,7 @@ class SignatureVerifyRequestPayload(primitives.Struct): }) -class SignatureVerifyResponsePayload(primitives.Struct): +class SignatureVerifyResponsePayload(base.ResponsePayload): """ A response payload for the SignatureVerify operation. @@ -472,9 +471,7 @@ class SignatureVerifyResponsePayload(primitives.Struct): value, allowing the linking together of individual payloads for a single overarching operation. Optional, defaults to None. """ - super(SignatureVerifyResponsePayload, self).__init__( - enums.Tags.RESPONSE_PAYLOAD - ) + super(SignatureVerifyResponsePayload, self).__init__() self._unique_identifier = None self._validity_indicator = None