diff options
| author | Ade Lee <alee@redhat.com> | 2017-04-03 13:00:03 -0400 |
|---|---|---|
| committer | Ade Lee <alee@redhat.com> | 2017-04-06 21:46:16 -0400 |
| commit | a1e30184b675c69fa858eb4fb85a6d358deb9bf1 (patch) | |
| tree | 72c812715d04d9db0cf2c352befc1768480693f0 /base/common/python/pki/info.py | |
| parent | 8463f5f791ced714d64ff891dc015666a971454b (diff) | |
| download | pki-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.py | 52 |
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')) |
