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