BN_RAND(3) | Library Functions Manual | BN_RAND(3) |

`BN_rand`

,
`BN_rand_range`

,
`BN_pseudo_rand`

,
`BN_pseudo_rand_range`

—
generate pseudo-random number

```
#include
<openssl/bn.h>
```

`int`

`BN_rand`

(`BIGNUM *rnd`,
`int bits`, `int top`,
`int bottom`);

`int`

`BN_rand_range`

(`BIGNUM *rnd`,
`BIGNUM *range`);

`BN_rand`

() 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 value of `bits` must
be zero or greater. If `bits` is +1 then
`top` cannot also be 1.

`BN_rand_range`

() generates a
cryptographically strong pseudo-random number `rnd` in
the range 0 <= `rnd` <
`range`.

`BN_pseudo_rand`

() is a deprecated alias for
`BN_rand`

(), and
`BN_pseudo_rand_range`

() for
`BN_rand_range`

().

The functions return 1 on success, 0 on error. The error codes can be obtained by ERR_get_error(3).

`BN_rand`

() first appeared in SSLeay 0.5.1
and has been available since OpenBSD 2.4.

The `top` == -1 case and the function
`BN_rand_range`

() first appeared in OpenSSL 0.9.6a and
have been available since OpenBSD 3.0.

June 10, 2019 | OpenBSD-current |