'Add to the current message.
Update the mssha1 object with the string arg. Repeated calls
are equivalent to a single call with the concatenation of all
the arguments, i.e. s.update(a); s.update(b) is equivalent
to s.update(a+b).
The hash is immediately calculated for all full blocks. The final
calculation is made in digest(). It will calculate 1-2 blocks,
depending on how much padding we have to add. This allows us to
keep an intermediate value for the hash, so that we only need to
make minimal recalculation if we call update() to add more data
to the hashed string.'

def update(self, inBuf):

    leninBuf = long(len(inBuf))
    index = ((self.count[1] >> 3) & 63L)
    self.count[1] = (self.count[1] + (leninBuf << 3))
    if (self.count[1] < (leninBuf << 3)):
        self.count[0] = (self.count[0] + 1)
    self.count[0] = (self.count[0] + (leninBuf >> 29))
    partLen = (64 - index)
    if (leninBuf >= partLen):
        self.input[index:] = list(inBuf[:partLen])
        self._transform(_bytelist2longBigEndian(self.input))
        i = partLen
        while ((i + 63) < leninBuf):
            self._transform(_bytelist2longBigEndian(list(inBuf[i:(i + 64)])))
            i = (i + 64)
        else:
            self.input = list(inBuf[i:leninBuf])
    else:
        i = 0
        self.input = (self.input + list(inBuf))
