]>
Commit | Line | Data |
---|---|---|
dd8dec69 UM |
1 | =pod |
2 | ||
3 | =head1 NAME | |
4 | ||
4d524e10 | 5 | BN_rand, BN_pseudo_rand - generate pseudo-random number |
dd8dec69 UM |
6 | |
7 | =head1 SYNOPSIS | |
8 | ||
9 | #include <openssl/bn.h> | |
10 | ||
11 | int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); | |
12 | ||
4d524e10 | 13 | int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); |
38e33cef | 14 | |
e3068929 | 15 | int BN_rand_range(BIGNUM *rnd, BIGNUM *range); |
57e7d3ce | 16 | |
b49053ca | 17 | int BN_pseudo_rand_range(BIGNUM *rnd, BIGNUM *range); |
983495c4 | 18 | |
dd8dec69 UM |
19 | =head1 DESCRIPTION |
20 | ||
21 | BN_rand() generates a cryptographically strong pseudo-random number of | |
335c4f09 UM |
22 | B<bits> bits in length and stores it in B<rnd>. If B<top> is -1, the |
23 | most significant bit of the random number can be zero. If B<top> is 0, | |
24 | it is set to 1, and if B<top> is 1, the two most significant bits of | |
25 | the number will be set to 1, so that the product of two such random | |
26 | numbers will always have 2*B<bits> length. If B<bottom> is true, the | |
b484b040 MC |
27 | number will be odd. The value of B<bits> must be zero or greater. If B<bits> is |
28 | 1 then B<top> cannot also be 1. | |
dd8dec69 | 29 | |
38e33cef UM |
30 | BN_pseudo_rand() does the same, but pseudo-random numbers generated by |
31 | this function are not necessarily unpredictable. They can be used for | |
32 | non-cryptographic purposes and for certain purposes in cryptographic | |
33 | protocols, but usually not for key generation etc. | |
34 | ||
57e7d3ce | 35 | BN_rand_range() generates a cryptographically strong pseudo-random |
001c9576 | 36 | number B<rnd> in the range 0 <lt>= B<rnd> E<lt> B<range>. |
983495c4 BM |
37 | BN_pseudo_rand_range() does the same, but is based on BN_pseudo_rand(), |
38 | and hence numbers generated by it are not necessarily unpredictable. | |
57e7d3ce UM |
39 | |
40 | The PRNG must be seeded prior to calling BN_rand() or BN_rand_range(). | |
dd8dec69 UM |
41 | |
42 | =head1 RETURN VALUES | |
43 | ||
57e7d3ce | 44 | The functions return 1 on success, 0 on error. |
bb075f88 | 45 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. |
dd8dec69 UM |
46 | |
47 | =head1 SEE ALSO | |
48 | ||
6859cf74 | 49 | L<bn(3)|bn(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, |
bb075f88 | 50 | L<RAND_add(3)|RAND_add(3)>, L<RAND_bytes(3)|RAND_bytes(3)> |
dd8dec69 UM |
51 | |
52 | =head1 HISTORY | |
53 | ||
54 | BN_rand() is available in all versions of SSLeay and OpenSSL. | |
335c4f09 UM |
55 | BN_pseudo_rand() was added in OpenSSL 0.9.5. The B<top> == -1 case |
56 | and the function BN_rand_range() were added in OpenSSL 0.9.6a. | |
983495c4 | 57 | BN_pseudo_rand_range() was added in OpenSSL 0.9.6c. |
dd8dec69 UM |
58 | |
59 | =cut |