from warnings import warn from beaker import util try: # Use PyCrypto (if available) from Crypto.Hash import HMAC as hmac, SHA as hmac_sha1 sha1 = hmac_sha1.new except ImportError: # PyCrypto not available. Use the Python standard library. import hmac # When using the stdlib, we have to make sure the hmac version and sha # version are compatible if util.py24: from sha import sha as sha1 import sha as hmac_sha1 else: # NOTE: We have to use the callable with hashlib (hashlib.sha1), # otherwise hmac only accepts the sha module object itself from hashlib import sha1 hmac_sha1 = sha1 if util.py24: from md5 import md5 else: from hashlib import md5