'Initialize the hash object.
:Parameters:
hashFactory : callable
An object that will generate the actual hash implementation.
*hashFactory* must have a *new()* method, or must be directly
callable.
data : byte string
The very first chunk of the message to hash.
It is equivalent to an early call to `update()`.'

def __init__(self, hashFactory, data=None):

    if hasattr(hashFactory, 'new'):
        self._hash = hashFactory.new()
    else:
        self._hash = hashFactory()
    if data:
        self.update(data)
