static void prime_product(large_digit &prime) { prime.salt(RSA_NBIT / 2); prime &= RSA_MASK; prime |= RSA_GOOD; while (!rabin(prime)) { #if 0 char buf[1024]; printf("failure, retry: %s!\n", prime.write_digit(buf, 100)); #endif prime.salt(RSA_NBIT / 2); prime &= RSA_MASK; prime |= RSA_GOOD; } return; }
bool GenCarChecksum(const char *pszName, CLSModule *pModule) { FILE *pFile; int len; char *pBuf; unsigned int checksum; pFile = fopen(pszName, "r"); if (!pFile) { return false; } fseek(pFile, 0, SEEK_END); len=ftell(pFile); if (len <= 0) { return false; } pBuf = (char*)malloc(len + 1); if (!pBuf) { return false; } fseek(pFile, 0, SEEK_SET); fread(pBuf, sizeof(char), len + 1, pFile); if (!feof(pFile)) { free(pBuf); return false; } fclose(pFile); checksum = rabin(pBuf, len); pModule->mChecksum = checksum; free(pBuf); return true; }