code: public final void update(byte[] input, int offset, int len)
              throws IllegalStateException {
          chooseFirstProvider();
          if (initialized == false) {
              throw new IllegalStateException("MAC not initialized");
          }
  
          if (input != null) {
              if ((offset < 0) || (len > (input.length - offset)) || (len < 0))
                  throw new IllegalArgumentException("Bad arguments");
              spi.engineUpdate(input, offset, len);
          }
      }
docs: Processes the first <code>len</code> bytes in <code>input</code>,
  starting at <code>offset</code> inclusive.
  
  @param input the input buffer.
  @param offset the offset in <code>input</code> where the input starts.
  @param len the number of bytes to process.
  
  @exception IllegalStateException if this <code>Mac</code> has not been
  initialized.