]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/BN_rand.pod
Fix many doc L<> errors
[thirdparty/openssl.git] / doc / man3 / BN_rand.pod
CommitLineData
dd8dec69
UM
1=pod
2
3=head1 NAME
4
aafbe1cc 5BN_rand, BN_pseudo_rand, BN_rand_range, BN_pseudo_rand_range - 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
21BN_rand() generates a cryptographically strong pseudo-random number of
f67cbb74 22B<bits> in length and stores it in B<rnd>.
01c09f9f
RS
23If B<bits> is less than zero, or too small to
24accomodate the requirements specified by the B<top> and B<bottom>
25parameters, an error is returned.
f67cbb74
RS
26The B<top> parameters specifies
27requirements on the most significant bit of the generated number.
28If it is B<BN_RAND_TOP_ANY>, there is no constraint.
29If it is B<BN_RAND_TOP_ONE>, the top bit must be one.
30If it is B<BN_RAND_TOP_TWO>, the two most significant bits of
335c4f09 31the number will be set to 1, so that the product of two such random
f67cbb74
RS
32numbers will always have 2*B<bits> length.
33If B<bottom> is B<BN_RAND_BOTTOM_ODD>, the number will be odd; if it
34is B<BN_RAND_BOTTOM_ANY> it can be odd or even.
35If B<bits> is 1 then B<top> cannot also be B<BN_RAND_FLG_TOPTWO>.
dd8dec69 36
38e33cef
UM
37BN_pseudo_rand() does the same, but pseudo-random numbers generated by
38this function are not necessarily unpredictable. They can be used for
39non-cryptographic purposes and for certain purposes in cryptographic
40protocols, but usually not for key generation etc.
41
57e7d3ce 42BN_rand_range() generates a cryptographically strong pseudo-random
31d6c0b2 43number B<rnd> in the range 0 E<lt>= B<rnd> E<lt> B<range>.
983495c4
BM
44BN_pseudo_rand_range() does the same, but is based on BN_pseudo_rand(),
45and hence numbers generated by it are not necessarily unpredictable.
57e7d3ce
UM
46
47The PRNG must be seeded prior to calling BN_rand() or BN_rand_range().
dd8dec69
UM
48
49=head1 RETURN VALUES
50
57e7d3ce 51The functions return 1 on success, 0 on error.
9b86974e 52The error codes can be obtained by L<ERR_get_error(3)>.
dd8dec69
UM
53
54=head1 SEE ALSO
55
9e183d22 56L<ERR_get_error(3)>, L<RAND_add(3)>, L<RAND_bytes(3)>
dd8dec69 57
e2f92610
RS
58=head1 COPYRIGHT
59
9e183d22 60Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
e2f92610
RS
61
62Licensed under the OpenSSL license (the "License"). You may not use
63this file except in compliance with the License. You can obtain a copy
64in the file LICENSE in the source distribution or at
65L<https://www.openssl.org/source/license.html>.
66
67=cut