code: public final byte[] update(byte[] input) {
          checkCipherState();
  
          // Input sanity check
          if (input == null) {
              throw new IllegalArgumentException("Null input buffer");
          }
  
          updateProviderIfNeeded();
          if (input.length == 0) {
              return null;
          }
          return spi.engineUpdate(input, 0, input.length);
      }
docs: Continues a multiple-part encryption or decryption operation
  (depending on how this cipher was initialized), processing another data
  part.
  
  <p>The bytes in the <code>input</code> buffer are processed, and the
  result is stored in a new buffer.
  
  <p>If <code>input</code> has a length of zero, this method returns
  <code>null</code>.
  
  @param input the input buffer
  
  @return the new buffer with the result, or null if the underlying
  cipher is a block cipher and the input data is too short to result in a
  new block.
  
  @exception IllegalStateException if this cipher is in a wrong state
  (e.g., has not been initialized)