code: public final void update(ByteBuffer input) {
          chooseFirstProvider();
          if (initialized == false) {
              throw new IllegalStateException("MAC not initialized");
          }
          if (input == null) {
              throw new IllegalArgumentException("Buffer must not be null");
          }
          spi.engineUpdate(input);
      }
docs: Processes <code>input.remaining()</code> bytes in the ByteBuffer
  <code>input</code>, starting at <code>input.position()</code>.
  Upon return, the buffer's position will be equal to its limit;
  its limit will not have changed.
  
  @param input the ByteBuffer
  
  @exception IllegalStateException if this <code>Mac</code> has not been
  initialized.
  @since 1.5