code: @Override
    public void write (@Nonnull final byte [] aBuf,
                       @Nonnegative final int nOfs,
                       @Nonnegative final int nLen) throws IOException
    {
      out.write (aBuf, nOfs, nLen);
      if (m_bOn)
      {
        m_aMac.update (aBuf, nOfs, nLen);
      }
    }
docs: Updates the Mac (if the function is on) using the specified subarray, and
  in any case writes the subarray to the output stream. That is, if the
  digest function is on (see {@link #setOn(boolean) on}), this method calls
  <code>update</code> on the Mac associated with this stream, passing it the
  subarray specifications. This method then writes the subarray bytes to the
  output stream, blocking until the bytes are actually written.
  
  @param aBuf
  the array containing the subarray to be used for updating and
  writing to the output stream.
  @param nOfs
  the offset into {@code b} of the first byte to be updated and
  written.
  @param nLen
  the number of bytes of data to be updated and written from
  {@code b}, starting at offset {@code off}.
  @exception IOException
  if an I/O error occurs.
  @see Mac#update(byte[], int, int)