code: public int read() throws IOException {
          int b = in.read();
          if (b != -1) {
              cksum.update(b);
          }
          return b;
      }
docs: Reads a byte. Will block if no input is available.
  @return the byte read, or -1 if the end of the stream is reached.
  @exception IOException if an I/O error has occurred