RAND_set_rand_method

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
RAND_set_rand_method(3)		   OpenSSL	      RAND_set_rand_method(3)



NAME
       RAND_set_rand_method, RAND_get_rand_method, RAND_SSLeay - select RAND
       method

SYNOPSIS
	#include <openssl/rand.h>

	void RAND_set_rand_method(const RAND_METHOD *meth);

	const RAND_METHOD *RAND_get_rand_method(void);

	RAND_METHOD *RAND_SSLeay(void);

DESCRIPTION
       A RAND_METHOD specifies the functions that OpenSSL uses for random
       number generation. By modifying the method, alternative implementa-
       tions such as hardware RNGs may be used. IMPORTANT: See the NOTES sec-
       tion for important information about how these RAND API functions are
       affected by the use of ENGINE API calls.

       Initially, the default RAND_METHOD is the OpenSSL internal implementa-
       tion, as returned by RAND_SSLeay().

       RAND_set_default_method() makes meth the method for PRNG use. NB: This
       is true only whilst no ENGINE has been set as a default for RAND, so
       this function is no longer recommended.

       RAND_get_default_method() returns a pointer to the current
       RAND_METHOD.  However, the meaningfulness of this result is dependant
       on whether the ENGINE API is being used, so this function is no longer
       recommended.

THE RAND_METHOD STRUCTURE
	typedef struct rand_meth_st
	{
	       void (*seed)(const void *buf, int num);
	       int (*bytes)(unsigned char *buf, int num);
	       void (*cleanup)(void);
	       void (*add)(const void *buf, int num, int entropy);
	       int (*pseudorand)(unsigned char *buf, int num);
	       int (*status)(void);
	} RAND_METHOD;

       The components point to the implementation of RAND_seed(),
       RAND_bytes(), RAND_cleanup(), RAND_add(), RAND_pseudo_rand() and
       RAND_status().  Each component may be NULL if the function is not
       implemented.

RETURN VALUES
       RAND_set_rand_method() returns no value. RAND_get_rand_method() and
       RAND_SSLeay() return pointers to the respective methods.

NOTES
       As of version 0.9.7, RAND_METHOD implementations are grouped together
       with other algorithmic APIs (eg. RSA_METHOD, EVP_CIPHER, etc) in
       ENGINE modules. If a default ENGINE is specified for RAND functional-
       ity using an ENGINE API function, that will override any RAND defaults
       set using the RAND API (ie.  RAND_set_rand_method()). For this reason,
       the ENGINE API is the recommended way to control default implementa-
       tions for use in RAND and other cryptographic algorithms.

SEE ALSO
       rand(3), engine(3)

HISTORY
       RAND_set_rand_method(), RAND_get_rand_method() and RAND_SSLeay() are
       available in all versions of OpenSSL.

       In the engine version of version 0.9.6, RAND_set_rand_method() was
       altered to take an ENGINE pointer as its argument. As of version
       0.9.7, that has been reverted as the ENGINE API transparently over-
       rides RAND defaults if used, otherwise RAND API functions work as
       before. RAND_set_rand_engine() was also introduced in version 0.9.7.



0.9.7a				  2002-08-05	      RAND_set_rand_method(3)