def MAC(self, seq, msg, key): """ """ mac = hmac.HMAC(key=key, digestmod=self.hash) seqnum = num_to_bytes(seq) mac.update(seqnum) mac.update(msg) return mac.digest()[:10] + b'\x00\x01' + seqnum
def flush(self): """ """ result = b'' # Leave buffer space for the MAC mbuf = self._max_buffer - 10 - 2 - 4 while self._enc_buf: msg = self._encbuf[:mbuf] mac = self.MAC(self._enc_seq, msg, self._enc_key, self.hash) self._enc_seq += 1 msg += mac result += num_to_bytes(len(msg)) + msg self._enc_buf = self._enc_buf[mbuf:] return result