diff --git a/news/25.feature b/news/25.feature index 2e9f5e8..f724f96 100644 --- a/news/25.feature +++ b/news/25.feature @@ -1 +1 @@ -Work in a FIPS enabled environment [frapell] (#25) +Work in a FIPS enabled environment by using SHA1 instead of MD5 for computing the cache key [frapell] (#25) diff --git a/plone/memoize/ram.py b/plone/memoize/ram.py index d4e76bd..80b71e0 100644 --- a/plone/memoize/ram.py +++ b/plone/memoize/ram.py @@ -2,7 +2,7 @@ """A cache decorator that uses RAMCache by default. """ -from functools import partial +from hashlib import sha1 from plone.memoize import volatile from plone.memoize.interfaces import ICacheChooser from zope import component @@ -18,17 +18,6 @@ except ImportError: import cPickle as pickle # Python 2 -try: - from hashlib import md5 as md5_original -except ImportError: - from md5 import new as md5_original - -try: - hashed = md5_original(b'test') - md5 = md5_original -except ValueError: - md5 = partial(md5_original, usedforsecurity=False) - global_cache = ram.RAMCache() global_cache.update(maxAge=86400) @@ -53,7 +42,7 @@ def __init__(self, client, globalkey=""): def _make_key(self, source): if issubclass(type(source), six.text_type): source = source.encode("utf-8") - return md5(source).hexdigest() + return sha1(source).hexdigest() def __getitem__(self, key): cached_value = self.client.get(self.globalkey + self._make_key(key)) @@ -75,7 +64,7 @@ def __init__(self, ramcache, globalkey=""): def _make_key(self, source): if issubclass(type(source), six.text_type): source = source.encode("utf-8") - return md5(source).digest() + return sha1(source).digest() def __getitem__(self, key): value = self.ramcache.query(