Blame doc/man3/BN_rand.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
BN_rand, BN_priv_rand, BN_pseudo_rand,
Packit Service 084de1
BN_rand_range, BN_priv_rand_range, BN_pseudo_rand_range
Packit Service 084de1
- generate pseudo-random number
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
 #include <openssl/bn.h>
Packit Service 084de1
Packit Service 084de1
 int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
Packit Service 084de1
Packit Service 084de1
 int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom);
Packit Service 084de1
Packit Service 084de1
 int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
Packit Service 084de1
Packit Service 084de1
 int BN_rand_range(BIGNUM *rnd, BIGNUM *range);
Packit Service 084de1
Packit Service 084de1
 int BN_priv_rand_range(BIGNUM *rnd, BIGNUM *range);
Packit Service 084de1
Packit Service 084de1
 int BN_pseudo_rand_range(BIGNUM *rnd, BIGNUM *range);
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
BN_rand() generates a cryptographically strong pseudo-random number of
Packit Service 084de1
B<bits> in length and stores it in B<rnd>.
Packit Service 084de1
If B<bits> is less than zero, or too small to
Packit Service 084de1
accommodate the requirements specified by the B<top> and B<bottom>
Packit Service 084de1
parameters, an error is returned.
Packit Service 084de1
The B<top> parameters specifies
Packit Service 084de1
requirements on the most significant bit of the generated number.
Packit Service 084de1
If it is B<BN_RAND_TOP_ANY>, there is no constraint.
Packit Service 084de1
If it is B<BN_RAND_TOP_ONE>, the top bit must be one.
Packit Service 084de1
If it is B<BN_RAND_TOP_TWO>, the two most significant bits of
Packit Service 084de1
the number will be set to 1, so that the product of two such random
Packit Service 084de1
numbers will always have 2*B<bits> length.
Packit Service 084de1
If B<bottom> is B<BN_RAND_BOTTOM_ODD>, the number will be odd; if it
Packit Service 084de1
is B<BN_RAND_BOTTOM_ANY> it can be odd or even.
Packit Service 084de1
If B<bits> is 1 then B<top> cannot also be B<BN_RAND_FLG_TOPTWO>.
Packit Service 084de1
Packit Service 084de1
BN_rand_range() generates a cryptographically strong pseudo-random
Packit Service 084de1
number B<rnd> in the range 0 E<lt>= B<rnd> E<lt> B<range>.
Packit Service 084de1
Packit Service 084de1
BN_priv_rand() and BN_priv_rand_range() have the same semantics as
Packit Service 084de1
BN_rand() and BN_rand_range() respectively.  They are intended to be
Packit Service 084de1
used for generating values that should remain private, and mirror the
Packit Service 084de1
same difference between L<RAND_bytes(3)> and L<RAND_priv_bytes(3)>.
Packit Service 084de1
Packit Service 084de1
=head1 NOTES
Packit Service 084de1
Packit Service 084de1
Always check the error return value of these functions and do not take
Packit Service 084de1
randomness for granted: an error occurs if the CSPRNG has not been
Packit Service 084de1
seeded with enough randomness to ensure an unpredictable byte sequence.
Packit Service 084de1
Packit Service 084de1
=head1 RETURN VALUES
Packit Service 084de1
Packit Service 084de1
The functions return 1 on success, 0 on error.
Packit Service 084de1
The error codes can be obtained by L<ERR_get_error(3)>.
Packit Service 084de1
Packit Service 084de1
=head1 SEE ALSO
Packit Service 084de1
Packit Service 084de1
L<ERR_get_error(3)>,
Packit Service 084de1
L<RAND_add(3)>,
Packit Service 084de1
L<RAND_bytes(3)>,
Packit Service 084de1
L<RAND_priv_bytes(3)>,
Packit Service 084de1
L<RAND(7)>,
Packit Service 084de1
L<RAND_DRBG(7)>
Packit Service 084de1
Packit Service 084de1
=head1 HISTORY
Packit Service 084de1
Packit Service 084de1
=over 2
Packit Service 084de1
Packit Service 084de1
=item *
Packit Service 084de1
Packit Service 084de1
Starting with OpenSSL release 1.1.0, BN_pseudo_rand() has been identical
Packit Service 084de1
to BN_rand() and BN_pseudo_rand_range() has been identical to
Packit Service 084de1
BN_rand_range().
Packit Service 084de1
The "pseudo" functions should not be used and may be deprecated in
Packit Service 084de1
a future release.
Packit Service 084de1
Packit Service 084de1
=item *
Packit Service 084de1
Packit Service 084de1
The
Packit Service 084de1
BN_priv_rand() and BN_priv_rand_range() functions were added in OpenSSL 1.1.1.
Packit Service 084de1
Packit Service 084de1
=back
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut