From 26cf34e4a855c3619985eb6056b955882a1f0040 Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed <fawzi.mohamed@fhi-berlin.mpg.de> Date: Thu, 9 Nov 2017 21:00:11 +0100 Subject: [PATCH] improve generation of gids compact_sha.sha512("blabla").gid("X") --- common/python/nomadcore/compact_sha.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/common/python/nomadcore/compact_sha.py b/common/python/nomadcore/compact_sha.py index ed54b65..58fdaea 100644 --- a/common/python/nomadcore/compact_sha.py +++ b/common/python/nomadcore/compact_sha.py @@ -3,6 +3,7 @@ import hashlib import base64 class CompactHash(object): + """compact sha can be used to calculate nomad gids""" def __init__(self, proto): self._proto = proto @@ -18,14 +19,27 @@ class CompactHash(object): data=data.encode("utf-8") return self._proto.update(data) + def gid(self, prefix=""): + """returns a nomad gid with the given prefix""" + return prefix + self.b64digest()[:28] + def __getattr__(self, name): return getattr(self._proto, name) def sha224(*args, **kwargs): + """CompactSha using sha224 for the checksums (non standard)""" return CompactHash(hashlib.sha224(*args,**kwargs)) -def sha512(*args, **kwargs): - return CompactHash(hashlib.sha512(*args,**kwargs)) +def sha512(baseStr=None,*args,**kwargs): + """Uses sha512 to calculate the gid (default in nomad) + + If you pass and argument it is immediately added to the checksum. + Thus sha512("someString").gid("X") creates a gid in one go""" + sha=CompactHash(hashlib.sha512(*args,**kwargs)) + if baseStr is not None: + sha.update(baseStr) + return sha def md5(*args, **kwargs): + """CompactSha using md5 for the checksums (non standard)""" return CompactHash(hashlib.md5(*args,**kwargs)) -- GitLab