code: private static void performAttributeSpecificActions(StunAttribute attribute, byte[] binMessage, int offset, int msgLen) 
  			throws StunException {
  		// check finger print CRC
  		if (attribute instanceof FingerprintAttribute) {
  			if (!validateFingerprint((FingerprintAttribute) attribute, binMessage, offset, msgLen)) {
  				// RFC 5389 says that we should ignore bad CRCs rather than
  				// reply with an error response.
  				throw new StunException("Wrong value in FINGERPRINT");
  			}
  		}
  	}
docs: Executes actions related specific attributes like asserting proper
  fingerprint checksum.
  
  @param attribute
  the <tt>StunAttribute</tt> we'd like to process.
  @param binMessage
  the byte array that the message arrived with.
  @param offset
  the index where data starts in <tt>binMessage</tt>.
  @param msgLen
  the number of message bytes in <tt>binMessage</tt>.
  
  @throws StunException
  if there's something in the <tt>attribute</tt> that caused us
  to discard the whole message (e.g. an invalid checksum or
  username)