+ if len(self.buf) > 0:
+ self.buf += data[:BLOCKSIZE - len(self.buf)]
+ data = data[BLOCKSIZE - len(self.buf):]
+ 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