+ if len(self.buf) > 0:
+ chunk_len = BLOCKSIZE - len(self.buf)
+ self.buf += data[:chunk_len]
+ data = data[chunk_len:]
+ if len(self.buf) == BLOCKSIZE:
+ self._update_block(self.buf)
+ self.buf = b""
+ while len(data) >= BLOCKSIZE:
+ self._update_block(data[:BLOCKSIZE])
+ data = data[BLOCKSIZE:]
+ self.buf += data