diff --git a/kmip/core/objects.py b/kmip/core/objects.py index c707eca..d868e8f 100644 --- a/kmip/core/objects.py +++ b/kmip/core/objects.py @@ -27,7 +27,6 @@ from kmip.core import enums from kmip.core.enums import AttributeType from kmip.core.enums import Tags from kmip.core.enums import Types -from kmip.core.enums import RevocationReasonCode as RevocationReasonCodeEnum from kmip.core import exceptions from kmip.core.misc import KeyFormatType @@ -3529,9 +3528,9 @@ class MACData(ByteString): # 3.31, 9.1.3.2.19 class RevocationReasonCode(Enumeration): - def __init__(self, value=RevocationReasonCodeEnum.UNSPECIFIED): + def __init__(self, value=enums.RevocationReasonCode.UNSPECIFIED): super(RevocationReasonCode, self).__init__( - RevocationReasonCodeEnum, value=value, + enums.RevocationReasonCode, value=value, tag=Tags.REVOCATION_REASON_CODE) @@ -3590,7 +3589,7 @@ class RevocationReason(Struct): self.revocation_code.read(tstream, kmip_version=kmip_version) if self.is_tag_next(Tags.REVOCATION_MESSAGE, tstream): - self.revocation_message = TextString() + self.revocation_message = TextString(tag=Tags.REVOCATION_MESSAGE) self.revocation_message.read(tstream, kmip_version=kmip_version) self.is_oversized(tstream) diff --git a/kmip/demos/pie/revoke.py b/kmip/demos/pie/revoke.py new file mode 100644 index 0000000..2d41858 --- /dev/null +++ b/kmip/demos/pie/revoke.py @@ -0,0 +1,56 @@ +# Copyright (c) 2015 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. + +import logging +import sys +import time + +from kmip.core import enums +from kmip.demos import utils +from kmip.pie import client + + +if __name__ == '__main__': + logger = utils.build_console_logger(logging.INFO) + + # Build and parse arguments + parser = utils.build_cli_parser(enums.Operation.REVOKE) + opts, args = parser.parse_args(sys.argv[1:]) + + config = opts.config + uid = opts.uuid + + # Exit early if the UUID is not specified + if uid is None: + logger.error('No UUID provided, exiting early from demo') + sys.exit() + + # Build the client and connect to the server + with client.ProxyKmipClient( + config=config, + config_file=opts.config_file + ) as client: + try: + client.revoke( + enums.RevocationReasonCode.KEY_COMPROMISE, + uid=uid, + revocation_message="I want to revoke this secret.", + compromise_occurrence_date=int(time.time()) + ) + logger.info( + "Successfully revoked secret with ID: {0}".format(uid) + ) + except Exception as e: + logger.error(e) diff --git a/kmip/demos/units/revoke.py b/kmip/demos/units/revoke.py index b569b98..5a6b754 100644 --- a/kmip/demos/units/revoke.py +++ b/kmip/demos/units/revoke.py @@ -13,9 +13,9 @@ # License for the specific language governing permissions and limitations # under the License. +from kmip.core import enums from kmip.core.enums import Operation from kmip.core.enums import ResultStatus -from kmip.core.enums import RevocationReasonCode from kmip.demos import utils @@ -46,8 +46,8 @@ if __name__ == '__main__': # Activate the object result = client.revoke( + enums.RevocationReasonCode.KEY_COMPROMISE, uuid, - RevocationReasonCode.UNSPECIFIED, 'Demo revocation message') client.close()