code: private int getMoreData() throws IOException {
          if (noMoreInput) {
              return -1;
          } else {
              byte[] buffer = new byte[1024];
              int bytesRead = input.read(buffer);
              if (bytesRead == -1) {
                  noMoreInput = true;
                  try {
                      obuffer = cipher.doFinal();
                  } catch (IllegalBlockSizeException | BadPaddingException e) {
                      throw new CipherException(e);
                  }
                  if (obuffer == null) {
                      return -1;
                  } else {
                      ostart = 0;
                      return ofinish = obuffer.length;
                  }
              } else {
                  obuffer = cipher.update(buffer, 0, bytesRead);
                  ostart = 0;
                  return ofinish = (obuffer == null ? 0 : obuffer.length);
              }
          }
      }
docs: Load data to internal buffer, return the number of bytes read, or {@code -1} if no more data
  to read.
  
  @return
  @throws IOException