const RAND_METHOD *RAND_get_rand_method(void)
	{
#ifdef OPENSSL_FIPS
	if(FIPS_mode()
		&& default_RAND_meth != FIPS_rand_check())
	    {
	    RANDerr(RAND_F_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD);
	    return 0;
	    }
#endif


	if (!default_RAND_meth)
		{
#ifndef OPENSSL_NO_ENGINE
		ENGINE *e = ENGINE_get_default_RAND();
		if(e)
			{
			default_RAND_meth = ENGINE_get_RAND(e);
			if(!default_RAND_meth)
				{
				ENGINE_finish(e);
				e = NULL;
				}
			}
		if(e)
			funct_ref = e;
		else
#endif
			default_RAND_meth = RAND_SSLeay();
		}
	return default_RAND_meth;
	}
예제 #2
0
파일: rand_eng.c 프로젝트: 1310701102/sl4a
const RAND_METHOD *eng_RAND_get_rand_method(const RAND_METHOD **pmeth)
	{
	if (!*pmeth)
		{
		ENGINE *e = ENGINE_get_default_RAND();
		if(e)
			{
			*pmeth = ENGINE_get_RAND(e);
			if(!*pmeth)
				{
				ENGINE_finish(e);
				e = NULL;
				}
			}
		if(e)
			funct_ref = e;
		else
			if(FIPS_mode())
				*pmeth=FIPS_rand_method();
			else
			*pmeth = RAND_SSLeay();
		}

	if(FIPS_mode()
		&& *pmeth != FIPS_rand_check())
	    {
	    RANDerr(RAND_F_ENG_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD);
	    return 0;
	    }

	return *pmeth;
	}
예제 #3
0
파일: rand_lib.c 프로젝트: 1310701102/sl4a
static const RAND_METHOD *fips_RAND_get_rand_method(const RAND_METHOD **pmeth)
	{
	if (!*pmeth)
		{
		if(FIPS_mode())
			*pmeth=FIPS_rand_method();
		else
			*pmeth = RAND_SSLeay();
		}

	if(FIPS_mode()
		&& *pmeth != FIPS_rand_check())
	    {
	    RANDerr(RAND_F_FIPS_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD);
	    return 0;
	    }

	return *pmeth;
	}