Deprecate RAND_cleanup() and make it a no-op
RAND_cleanup() should not be called expicitly - we should leave auto-deinit to clean this up instead. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
b22234deeb
commit
f3cd81d653
10
apps/speed.c
10
apps/speed.c
@ -313,7 +313,6 @@ static double ecdh_results[EC_NUM][1];
|
|||||||
#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_EC)
|
#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_EC)
|
||||||
static const char rnd_seed[] =
|
static const char rnd_seed[] =
|
||||||
"string to make the random number generator think it has entropy";
|
"string to make the random number generator think it has entropy";
|
||||||
static int rnd_fake = 0;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SIGALRM
|
#ifdef SIGALRM
|
||||||
@ -2448,7 +2447,6 @@ int speed_main(int argc, char **argv)
|
|||||||
#ifndef OPENSSL_NO_DSA
|
#ifndef OPENSSL_NO_DSA
|
||||||
if (RAND_status() != 1) {
|
if (RAND_status() != 1) {
|
||||||
RAND_seed(rnd_seed, sizeof rnd_seed);
|
RAND_seed(rnd_seed, sizeof rnd_seed);
|
||||||
rnd_fake = 1;
|
|
||||||
}
|
}
|
||||||
for (testnum = 0; testnum < DSA_NUM; testnum++) {
|
for (testnum = 0; testnum < DSA_NUM; testnum++) {
|
||||||
int st = 0;
|
int st = 0;
|
||||||
@ -2512,14 +2510,11 @@ int speed_main(int argc, char **argv)
|
|||||||
dsa_doit[testnum] = 0;
|
dsa_doit[testnum] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rnd_fake)
|
|
||||||
RAND_cleanup();
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef OPENSSL_NO_EC
|
#ifndef OPENSSL_NO_EC
|
||||||
if (RAND_status() != 1) {
|
if (RAND_status() != 1) {
|
||||||
RAND_seed(rnd_seed, sizeof rnd_seed);
|
RAND_seed(rnd_seed, sizeof rnd_seed);
|
||||||
rnd_fake = 1;
|
|
||||||
}
|
}
|
||||||
for (testnum = 0; testnum < EC_NUM; testnum++) {
|
for (testnum = 0; testnum < EC_NUM; testnum++) {
|
||||||
int st = 1;
|
int st = 1;
|
||||||
@ -2601,14 +2596,11 @@ int speed_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rnd_fake)
|
|
||||||
RAND_cleanup();
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef OPENSSL_NO_EC
|
#ifndef OPENSSL_NO_EC
|
||||||
if (RAND_status() != 1) {
|
if (RAND_status() != 1) {
|
||||||
RAND_seed(rnd_seed, sizeof rnd_seed);
|
RAND_seed(rnd_seed, sizeof rnd_seed);
|
||||||
rnd_fake = 1;
|
|
||||||
}
|
}
|
||||||
for (testnum = 0; testnum < EC_NUM; testnum++) {
|
for (testnum = 0; testnum < EC_NUM; testnum++) {
|
||||||
if (!ecdh_doit[testnum])
|
if (!ecdh_doit[testnum])
|
||||||
@ -2700,8 +2692,6 @@ int speed_main(int argc, char **argv)
|
|||||||
ecdh_doit[testnum] = 0;
|
ecdh_doit[testnum] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rnd_fake)
|
|
||||||
RAND_cleanup();
|
|
||||||
#endif
|
#endif
|
||||||
#ifndef NO_FORK
|
#ifndef NO_FORK
|
||||||
show_res:
|
show_res:
|
||||||
|
@ -328,6 +328,3 @@ DSA *get_dsa2048()
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char rnd_seed[] =
|
|
||||||
"string to make the random number generator think it has entropy";
|
|
||||||
static int rnd_fake = 0;
|
|
||||||
|
11
crypto/include/internal/rand.h
Normal file
11
crypto/include/internal/rand.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* Licensed under the OpenSSL licenses, (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
* or in the file LICENSE in the source distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <openssl/rand.h>
|
||||||
|
|
||||||
|
void rand_cleanup_intern(void);
|
@ -58,7 +58,7 @@
|
|||||||
#include <internal/threads.h>
|
#include <internal/threads.h>
|
||||||
#include <internal/cryptlib_int.h>
|
#include <internal/cryptlib_int.h>
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
#include <openssl/rand.h>
|
#include <internal/rand.h>
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
#include <internal/evp_int.h>
|
#include <internal/evp_int.h>
|
||||||
#include <internal/conf.h>
|
#include <internal/conf.h>
|
||||||
@ -453,7 +453,7 @@ void OPENSSL_cleanup(void)
|
|||||||
|
|
||||||
#ifdef OPENSSL_INIT_DEBUG
|
#ifdef OPENSSL_INIT_DEBUG
|
||||||
fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
|
fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
|
||||||
"RAND_cleanup()\n");
|
"rand_cleanup_intern()\n");
|
||||||
fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
|
fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
|
||||||
"CONF_modules_free()\n");
|
"CONF_modules_free()\n");
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
@ -471,14 +471,14 @@ void OPENSSL_cleanup(void)
|
|||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* Note that cleanup order is important:
|
* Note that cleanup order is important:
|
||||||
* - RAND_cleanup could call an ENINGE's RAND cleanup function so must be
|
* - rand_cleanup_intern could call an ENINGE's RAND cleanup function so
|
||||||
* called before ENGINE_cleanup()
|
* must be called before ENGINE_cleanup()
|
||||||
* - ENGINEs use CRYPTO_EX_DATA and therefore, must be cleaned up
|
* - ENGINEs use CRYPTO_EX_DATA and therefore, must be cleaned up
|
||||||
* before the ex data handlers are wiped in CRYPTO_cleanup_all_ex_data().
|
* before the ex data handlers are wiped in CRYPTO_cleanup_all_ex_data().
|
||||||
* - CONF_modules_free() can end up in ENGINE code so must be called before
|
* - CONF_modules_free() can end up in ENGINE code so must be called before
|
||||||
* ENGINE_cleanup()
|
* ENGINE_cleanup()
|
||||||
*/
|
*/
|
||||||
RAND_cleanup();
|
rand_cleanup_intern();
|
||||||
CONF_modules_free();
|
CONF_modules_free();
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
ENGINE_cleanup();
|
ENGINE_cleanup();
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "internal/cryptlib.h"
|
#include "internal/cryptlib.h"
|
||||||
#include <openssl/opensslconf.h>
|
#include <openssl/opensslconf.h>
|
||||||
#include <openssl/rand.h>
|
#include "internal/rand.h"
|
||||||
|
|
||||||
#include <openssl/engine.h>
|
#include <openssl/engine.h>
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ int RAND_set_rand_engine(ENGINE *engine)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void RAND_cleanup(void)
|
void rand_cleanup_intern(void)
|
||||||
{
|
{
|
||||||
const RAND_METHOD *meth = RAND_get_rand_method();
|
const RAND_METHOD *meth = RAND_get_rand_method();
|
||||||
if (meth && meth->cleanup)
|
if (meth && meth->cleanup)
|
||||||
|
@ -8,11 +8,15 @@ RAND_cleanup - erase the PRNG state
|
|||||||
|
|
||||||
#include <openssl/rand.h>
|
#include <openssl/rand.h>
|
||||||
|
|
||||||
void RAND_cleanup(void);
|
#if OPENSSL_API_COMPAT < 0x10100000L
|
||||||
|
# define RAND_cleanup()
|
||||||
|
#endif
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
RAND_cleanup() erases the memory used by the PRNG.
|
Prior to OpenSSL 1.1.0 RAND_cleanup() erases the memory used by the PRNG. This
|
||||||
|
function is deprecated and as of version 1.1.0 does nothing. No explicit
|
||||||
|
initialisation or de-initialisation is necessary. See L<OPENSSL_init_crypto(3)>.
|
||||||
|
|
||||||
=head1 RETURN VALUE
|
=head1 RETURN VALUE
|
||||||
|
|
||||||
@ -22,4 +26,8 @@ RAND_cleanup() returns no value.
|
|||||||
|
|
||||||
L<rand(3)>
|
L<rand(3)>
|
||||||
|
|
||||||
|
=head1 HISTORY
|
||||||
|
|
||||||
|
RAND_cleanup() was deprecated in OpenSSL 1.1.0.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
@ -46,7 +46,7 @@ API is being used, so this function is no longer recommended.
|
|||||||
} RAND_METHOD;
|
} RAND_METHOD;
|
||||||
|
|
||||||
The components point to the implementation of RAND_seed(),
|
The components point to the implementation of RAND_seed(),
|
||||||
RAND_bytes(), RAND_cleanup(), RAND_add(), RAND_pseudo_rand()
|
RAND_bytes(), internal RAND cleanup, RAND_add(), RAND_pseudo_rand()
|
||||||
and RAND_status().
|
and RAND_status().
|
||||||
Each component may be NULL if the function is not implemented.
|
Each component may be NULL if the function is not implemented.
|
||||||
|
|
||||||
|
@ -27,12 +27,16 @@ rand - pseudo-random number generator
|
|||||||
const RAND_METHOD *RAND_get_rand_method(void);
|
const RAND_METHOD *RAND_get_rand_method(void);
|
||||||
RAND_METHOD *RAND_OpenSSL(void);
|
RAND_METHOD *RAND_OpenSSL(void);
|
||||||
|
|
||||||
void RAND_cleanup(void);
|
|
||||||
|
|
||||||
/* For Win32 only */
|
/* For Win32 only */
|
||||||
void RAND_screen(void);
|
void RAND_screen(void);
|
||||||
int RAND_event(UINT, WPARAM, LPARAM);
|
int RAND_event(UINT, WPARAM, LPARAM);
|
||||||
|
|
||||||
|
Deprecated:
|
||||||
|
|
||||||
|
#if OPENSSL_API_COMPAT < 0x10100000L
|
||||||
|
# define RAND_cleanup()
|
||||||
|
#endif
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
Since the introduction of the ENGINE API, the recommended way of controlling
|
Since the introduction of the ENGINE API, the recommended way of controlling
|
||||||
|
@ -92,7 +92,9 @@ const RAND_METHOD *RAND_get_rand_method(void);
|
|||||||
int RAND_set_rand_engine(ENGINE *engine);
|
int RAND_set_rand_engine(ENGINE *engine);
|
||||||
# endif
|
# endif
|
||||||
RAND_METHOD *RAND_OpenSSL(void);
|
RAND_METHOD *RAND_OpenSSL(void);
|
||||||
void RAND_cleanup(void);
|
#if OPENSSL_API_COMPAT < 0x10100000L
|
||||||
|
# define RAND_cleanup()
|
||||||
|
#endif
|
||||||
int RAND_bytes(unsigned char *buf, int num);
|
int RAND_bytes(unsigned char *buf, int num);
|
||||||
DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
|
DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
|
||||||
void RAND_seed(const void *buf, int num);
|
void RAND_seed(const void *buf, int num);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user