code: public void update(byte[] input, int offset, int len) {
          if (input == null) {
              throw new IllegalArgumentException("No input buffer given");
          }
          if (input.length - offset < len) {
              throw new IllegalArgumentException("Input buffer too short");
          }
          engineUpdate(input, offset, len);
          state = IN_PROGRESS;
      }
docs: Updates the digest using the specified array of bytes, starting
  at the specified offset.
  
  @param input the array of bytes.
  
  @param offset the offset to start from in the array of bytes.
  
  @param len the number of bytes to use, starting at
  {@code offset}.