code: def _tls_mac_verify(alg, p, read_seq_num):
      
      h_size = alg.hash_len
      if p.len < h_size:
          return False
      received_h = p.data[-h_size:]
      p.len -= h_size
      p.data = p.data[:-h_size]
  
      read_seq_num = struct.pack("!Q", read_seq_num)
      h = alg.digest(read_seq_num + bytes(p))
      return h == received_h
docs: Verify if the MAC in provided message (message resulting from decryption
      and padding removal) is valid. Current read sequence number is used in
      the verification process.
  
      If the MAC is valid:
       - The function returns True
       - The packet p is updated in the following way: trailing MAC value is
         removed from p.data and length is updated accordingly.
  
      In case of error, False is returned, and p may have been modified.
  
      Also note that it is the caller's responsibility to update the read
      sequence number after the operation.