code: @Override
    public int read () throws IOException
    {
      final int ch = in.read ();
      if (m_bOn && ch != -1)
      {
        m_aMac.update ((byte) ch);
      }
      return ch;
    }
docs: Reads a byte, and updates the Mac (if the function is on). That is, this
  method reads a byte from the input stream, blocking until the byte is
  actually read. If the function is on (see {@link #setOn(boolean) on}), this
  method will then call {@code update} on the Mac associated with this
  stream, passing it the byte read.
  
  @return the byte read.
  @exception IOException
  if an I/O error occurs.
  @see Mac#update(byte)