code: private static boolean validateFingerprint(FingerprintAttribute fingerprint, byte[] message, int offset, int length) {
  		byte[] incomingCrcBytes = fingerprint.getChecksum();
  		// now check whether the CRC really is what it's supposed to be.
  		// re calculate the check sum
  		byte[] realCrcBytes = FingerprintAttribute.calculateXorCRC32(message, offset, length);
  
  		// CRC validation.
  		if (!Arrays.equals(incomingCrcBytes, realCrcBytes)) {
  			if (logger.isDebugEnabled()) {
  				logger.debug("An incoming message arrived with a wrong FINGERPRINT attribute value. "
  						+ "CRC Was:" + Arrays.toString(incomingCrcBytes)
  						+ ". Should have been:" + Arrays.toString(realCrcBytes)
  						+ ". Will ignore.");
  			}
  			return false;
  		}
  		return true;
  	}
docs: Recalculates the FINGERPRINT CRC32 checksum of the <tt>message</tt> array
  so that we could compare it with the value brought by the
  {@link FingerprintAttribute}.
  
  @param fingerprint
  the attribute that we need to validate.
  @param message
  the message whose CRC32 checksum we'd need to recalculate.
  @param offset
  the index in <tt>message</tt> where data starts.
  @param length
  the number of bytes in <tt>message</tt> that the CRC32 would
  need to be calculated over.
  
  @return <tt>true</tt> if <tt>FINGERPRINT</tt> contains a valid CRC32
  value and <tt>false</tt> otherwise.