'Terminate the message-digest computation and return digest.
Return the digest of the strings passed to the update()
method so far. This is a 16-byte string which may contain
non-ASCII characters, including null bytes.'

def digest(self):

    H0 = self.H0
    H1 = self.H1
    H2 = self.H2
    H3 = self.H3
    H4 = self.H4
    input = ([] + self.input)
    count = ([] + self.count)
    index = ((self.count[1] >> 3) & 63L)
    if (index < 56):
        padLen = (56 - index)
    else:
        padLen = (120 - index)
    padding = (['\x80'] + (['\x00'] * 63))
    self.update(padding[:padLen])
    bits = (_bytelist2longBigEndian(self.input[:56]) + count)
    self._transform(bits)
    digest = ((((_long2bytesBigEndian(self.H0, 4) + _long2bytesBigEndian(self.H1, 4)) + _long2bytesBigEndian(self.H2, 4)) + _long2bytesBigEndian(self.H3, 4)) + _long2bytesBigEndian(self.H4, 4))
    self.H0 = H0
    self.H1 = H1
    self.H2 = H2
    self.H3 = H3
    self.H4 = H4
    self.input = input
    self.count = count
    return digest
