PRINTF("%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",
PRBool pref_VerifyLockFileSpec(char* buf, long buflen)//----------------------------------------------------------------------------------------{    PRBool success = PR_FALSE;	const int obscure_value = 7;	const long hash_length = 51;		/* len = 48 chars of MD5 + // + EOL */    unsigned char *digest;    char szHash[64];   	/* Unobscure file by subtracting some value from every char. */	long i;	for (i = 0; i < buflen; i++)		buf[i] -= obscure_value;    if (buflen >= hash_length)    {        const unsigned char magic_key[] = "VonGloda5652TX75235ISBN";   	    unsigned char *pStart = (unsigned char*) buf + hash_length;	    unsigned int len;               nsresult rv;        NS_WITH_SERVICE(nsISignatureVerifier, verifier, SIGNATURE_VERIFIER_CONTRACTID, &rv);        if (NS_FAILED(rv)) return success; // No signature verifier available               //-- Calculate the digest        PRUint32 id;        rv = verifier->HashBegin(nsISignatureVerifier::MD5, &id);        if (NS_FAILED(rv)) return success;        rv = verifier->HashUpdate(id, (const char*)magic_key, sizeof(magic_key));        if (NS_FAILED(rv)) return success;        rv = verifier->HashUpdate(id, (const char*)pStart, (unsigned int)(buflen - hash_length));        if (NS_FAILED(rv)) return success;          digest = (unsigned char*)PR_MALLOC(nsISignatureVerifier::MD5_LENGTH);        if (digest == nsnull) return success;        rv = verifier->HashEnd(id,&digest, &len, nsISignatureVerifier::MD5_LENGTH);        if (NS_FAILED(rv)) { PR_FREEIF(digest); return success; }            	        	    PR_snprintf(szHash, 64, "%x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",	        (int)digest[0],(int)digest[1],(int)digest[2],(int)digest[3],	        (int)digest[4],(int)digest[5],(int)digest[6],(int)digest[7],	        (int)digest[8],(int)digest[9],(int)digest[10],(int)digest[11],	        (int)digest[12],(int)digest[13],(int)digest[14],(int)digest[15]);#ifdef DEBUG_neeti        printf("%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",	        (int)digest[0],(int)digest[1],(int)digest[2],(int)digest[3],	        (int)digest[4],(int)digest[5],(int)digest[6],(int)digest[7],	        (int)digest[8],(int)digest[9],(int)digest[10],(int)digest[11],	        (int)digest[12],(int)digest[13],(int)digest[14],(int)digest[15]); #endif   		success = ( PL_strncmp((const char*) buf + 3, szHash, (PRUint32)(hash_length - 4)) == 0 );        PR_FREEIF(digest); 	}    return success;}