summaryrefslogtreecommitdiffstats
path: root/base/common/python/pki/info.py
diff options
context:
space:
mode:
authorAde Lee <alee@redhat.com>2017-04-03 13:00:03 -0400
committerAde Lee <alee@redhat.com>2017-04-06 21:46:16 -0400
commita1e30184b675c69fa858eb4fb85a6d358deb9bf1 (patch)
tree72c812715d04d9db0cf2c352befc1768480693f0 /base/common/python/pki/info.py
parent8463f5f791ced714d64ff891dc015666a971454b (diff)
downloadpki-a1e30184b675c69fa858eb4fb85a6d358deb9bf1.tar.gz
pki-a1e30184b675c69fa858eb4fb85a6d358deb9bf1.tar.xz
pki-a1e30184b675c69fa858eb4fb85a6d358deb9bf1.zip
Add code in KRA python client to support multiple crypto algorithms
Added code to: * Add an InfoClient to the KRAClient * Check the server, client and crypto provider keyset levels and select the highest possible level accordingly. * Added new fields as returned by the server for retrieval. * Added new fields to KeyRecoveryRequest as added in AES changes. Changes to decode keywrapped symmetirc and asymmetric keys will be added in subsequent patches. Right now, encrypt/decrypt works. Change-Id: Ifa7748d822c6b6f9a7c4afb395fb1388c587174d
Diffstat (limited to 'base/common/python/pki/info.py')
-rw-r--r--base/common/python/pki/info.py52
1 files changed, 39 insertions, 13 deletions
diff --git a/base/common/python/pki/info.py b/base/common/python/pki/info.py
index b4da8b073..f4ab68cbd 100644
--- a/base/common/python/pki/info.py
+++ b/base/common/python/pki/info.py
@@ -56,20 +56,38 @@ class Info(object):
return info
-class Version(object):
- """
- This class encapsulates a version object as returned from
- a Dogtag server and decomposes it into major, minor, etc.
- """
+class Version(tuple):
+ __slots__ = ()
+
+ def __new__(cls, version):
+ parts = [int(p) for p in version.split('.')]
+ if len(parts) < 3:
+ parts.extend([0] * (3 - len(parts)))
+ if len(parts) > 3:
+ raise ValueError(version)
+ return tuple.__new__(cls, tuple(parts))
+
+ def __str__(self):
+ return '{}.{}.{}'.format(*self)
+
+ def __repr__(self):
+ return "<Version('{}.{}.{}')>".format(*self)
- def __init__(self, version_string):
- for idx, val in enumerate(version_string.split('.')):
- if idx == 0:
- self.major = val
- if idx == 1:
- self.minor = val
- if idx == 2:
- self.patch = val
+ def __getnewargs__(self):
+ # pickle support
+ return str(self)
+
+ @property
+ def major(self):
+ return self[0]
+
+ @property
+ def minor(self):
+ return self[1]
+
+ @property
+ def patchlevel(self):
+ return self[2]
class InfoClient(object):
@@ -98,3 +116,11 @@ class InfoClient(object):
""" return Version object from server """
version_string = self.get_info().version
return Version(version_string)
+
+
+if __name__ == '__main__':
+ print(Version('10'))
+ print(Version('10.1'))
+ print(Version('10.1.1'))
+ print(tuple(Version('10.1.1')))
+ print(Version('10.1.1.1'))