BN_rand, BN_pseudo_rand - Generate pseudo-random number
#include <openssl/bn.h>
int BN_rand(
BIGNUM *rnd,
int bits,
int top,
int bottom ); int BN_pseudo_rand(
BIGNUM *rnd,
int bits,
int top,
int bottom ); int BN_rand_range(
BIGNUM *rnd,
BIGNUM *range ); int BN_pseudo_rand_range(
BIGNUM *rnd,
BIGNUM *range );
The BN_rand() function generates a cryptographically
strong pseudo-random number of bits in length and stores
it in rnd. If top is -1, the most significant bit of the
random number can be zero. If top is 0, it is set to 1,
and if top is 1, the two most significant bits of the number
will be set to 1, so that the product of two such random
numbers will always have 2*bits length. If bottom is
true, the number will be odd.
The BN_pseudo_rand() function does the same, but pseudorandom
numbers generated by this function are not necessarily
unpredictable. They can be used for non-cryptographic
purposes and for certain purposes in cryptographic
protocols, but usually not for key generation etc.
The BN_rand_range() function generates a cryptographically
strong pseudo-random number rnd in the range 0 <lt>= rnd <
range. BN_pseudo_rand_range() does the same, but is based
on BN_pseudo_rand(), and hence numbers generated by it are
not necessarily unpredictible.
The PRNG must be seeded prior to calling the BN_rand() or
BN_rand_range() functions.
The functions return 1 on success, 0 on error. The error
codes can be obtained by using ERR_get_error().
The BN_rand() function is available in all versions of
SSLeay and OpenSSL. The BN_pseudo_rand() function was
added in OpenSSL 0.9.5. The top == -1 case and the
BN_rand_range() function were added in OpenSSL 0.9.6a.
BN_pseudo_rand_range() was added in OpenSSL 0.9.6c.
Functions: bn(3), err(3), rand_ssl(3), RAND_add(3),
RAND_bytes(3)
BN_rand(3)
[ Back ] |