示例#1
0
文件: osip_port.c 项目: avis/osip
unsigned int osip_build_random_number()
{
	HCRYPTPROV crypto;
	BOOL err;
	unsigned int num;

	if (!random_seed_set) {
		unsigned int ticks;
		LARGE_INTEGER lCount;
		QueryPerformanceCounter(&lCount);
		ticks = lCount.LowPart + lCount.HighPart;
		srand(ticks);
		random_seed_set = 1;
	}

	err =
		CryptAcquireContext(&crypto, NULL, NULL, PROV_RSA_FULL,
							CRYPT_VERIFYCONTEXT);
	if (err) {
		err = CryptGenRandom(crypto, sizeof(num), (BYTE *) & num);
		CryptReleaseContext(crypto, 0);
	}
	if (!err) {
		num = osip_fallback_random_number();
	}
	return num;
}
示例#2
0
unsigned int
osip_build_random_number ()
{
  HCRYPTPROV crypto;
  BOOL err;
  unsigned int num;

  err =
    CryptAcquireContext (&crypto, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
  if (err)
    {
      err = CryptGenRandom (crypto, sizeof (num), (BYTE *) & num);
      CryptReleaseContext (crypto, 0);
    }
  if (!err)
    {
      num = osip_fallback_random_number ();
    }
  return num;
}