| 
									
										
										
										
											2000-01-22 01:50:27 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-03 02:00:52 +08:00
										 |  |  | RAND_bytes, RAND_priv_bytes, RAND_pseudo_bytes - generate random data | 
					
						
							| 
									
										
										
										
											2000-01-22 01:50:27 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/rand.h> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  int RAND_bytes(unsigned char *buf, int num); | 
					
						
							| 
									
										
										
										
											2017-08-03 02:00:52 +08:00
										 |  |  |  int RAND_priv_bytes(unsigned char *buf, int num); | 
					
						
							| 
									
										
										
										
											2000-01-22 01:50:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-03 17:59:11 +08:00
										 |  |  | Deprecated since OpenSSL 1.1.0, can be hidden entirely by defining | 
					
						
							|  |  |  | B<OPENSSL_API_COMPAT> with a suitable version value, see | 
					
						
							|  |  |  | L<openssl_user_macros(7)>: | 
					
						
							| 
									
										
										
										
											2015-02-26 21:52:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-22 01:50:27 +08:00
										 |  |  |  int RAND_pseudo_bytes(unsigned char *buf, int num); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-22 03:54:22 +08:00
										 |  |  | RAND_bytes() puts B<num> cryptographically strong pseudo-random bytes | 
					
						
							| 
									
										
										
										
											2018-06-19 00:13:36 +08:00
										 |  |  | into B<buf>. | 
					
						
							| 
									
										
										
										
											2000-01-22 03:54:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-03 02:00:52 +08:00
										 |  |  | RAND_priv_bytes() has the same semantics as RAND_bytes().  It is intended to | 
					
						
							| 
									
										
										
										
											2018-06-19 00:13:36 +08:00
										 |  |  | be used for generating values that should remain private. If using the | 
					
						
							|  |  |  | default RAND_METHOD, this function uses a separate "private" PRNG | 
					
						
							|  |  |  | instance so that a compromise of the "public" PRNG instance will not | 
					
						
							|  |  |  | affect the secrecy of these private values, as described in L<RAND(7)> | 
					
						
							|  |  |  | and L<RAND_DRBG(7)>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Always check the error return value of RAND_bytes() and | 
					
						
							|  |  |  | RAND_priv_bytes() and do not take randomness for granted: an error occurs | 
					
						
							|  |  |  | if the CSPRNG has not been seeded with enough randomness to ensure an | 
					
						
							|  |  |  | unpredictable byte sequence. | 
					
						
							| 
									
										
										
										
											2017-08-03 02:00:52 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-22 01:50:27 +08:00
										 |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-28 02:02:24 +08:00
										 |  |  | RAND_bytes() and RAND_priv_bytes() | 
					
						
							| 
									
										
										
										
											2017-08-03 02:00:52 +08:00
										 |  |  | return 1 on success, -1 if not supported by the current | 
					
						
							| 
									
										
										
										
											2017-06-20 00:58:06 +08:00
										 |  |  | RAND method, or 0 on other failure. The error code can be | 
					
						
							|  |  |  | obtained by L<ERR_get_error(3)>. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-09 22:13:55 +08:00
										 |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | L<RAND_add(3)>, | 
					
						
							|  |  |  | L<RAND_bytes(3)>, | 
					
						
							|  |  |  | L<RAND_priv_bytes(3)>, | 
					
						
							|  |  |  | L<ERR_get_error(3)>, | 
					
						
							|  |  |  | L<RAND(7)>, | 
					
						
							|  |  |  | L<RAND_DRBG(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-03 00:16:38 +08:00
										 |  |  | =head1 HISTORY | 
					
						
							| 
									
										
										
										
											2017-06-20 00:58:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-19 00:13:36 +08:00
										 |  |  | =over 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-21 20:55:02 +08:00
										 |  |  | RAND_pseudo_bytes() was deprecated in OpenSSL 1.1.0; use RAND_bytes() instead. | 
					
						
							| 
									
										
										
										
											2000-01-22 01:50:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-19 00:13:36 +08:00
										 |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-09 08:02:36 +08:00
										 |  |  | The RAND_priv_bytes() function was added in OpenSSL 1.1.1. | 
					
						
							| 
									
										
										
										
											2018-06-19 00:13:36 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-09 22:13:55 +08:00
										 |  |  | Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-06 21:04:44 +08:00
										 |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |