diff options
Diffstat (limited to 'src/lib/libcrypto/rand/rand_lib.c')
| -rw-r--r-- | src/lib/libcrypto/rand/rand_lib.c | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/src/lib/libcrypto/rand/rand_lib.c b/src/lib/libcrypto/rand/rand_lib.c index 5cf5dc1188..513e338985 100644 --- a/src/lib/libcrypto/rand/rand_lib.c +++ b/src/lib/libcrypto/rand/rand_lib.c | |||
| @@ -60,19 +60,25 @@ | |||
| 60 | #include <time.h> | 60 | #include <time.h> | 
| 61 | #include "cryptlib.h" | 61 | #include "cryptlib.h" | 
| 62 | #include <openssl/rand.h> | 62 | #include <openssl/rand.h> | 
| 63 | #ifndef OPENSSL_NO_ENGINE | ||
| 63 | #include <openssl/engine.h> | 64 | #include <openssl/engine.h> | 
| 65 | #endif | ||
| 64 | 66 | ||
| 67 | #ifndef OPENSSL_NO_ENGINE | ||
| 65 | /* non-NULL if default_RAND_meth is ENGINE-provided */ | 68 | /* non-NULL if default_RAND_meth is ENGINE-provided */ | 
| 66 | static ENGINE *funct_ref =NULL; | 69 | static ENGINE *funct_ref =NULL; | 
| 70 | #endif | ||
| 67 | static const RAND_METHOD *default_RAND_meth = NULL; | 71 | static const RAND_METHOD *default_RAND_meth = NULL; | 
| 68 | 72 | ||
| 69 | int RAND_set_rand_method(const RAND_METHOD *meth) | 73 | int RAND_set_rand_method(const RAND_METHOD *meth) | 
| 70 | { | 74 | { | 
| 75 | #ifndef OPENSSL_NO_ENGINE | ||
| 71 | if(funct_ref) | 76 | if(funct_ref) | 
| 72 | { | 77 | { | 
| 73 | ENGINE_finish(funct_ref); | 78 | ENGINE_finish(funct_ref); | 
| 74 | funct_ref = NULL; | 79 | funct_ref = NULL; | 
| 75 | } | 80 | } | 
| 81 | #endif | ||
| 76 | default_RAND_meth = meth; | 82 | default_RAND_meth = meth; | 
| 77 | return 1; | 83 | return 1; | 
| 78 | } | 84 | } | 
| @@ -81,6 +87,7 @@ const RAND_METHOD *RAND_get_rand_method(void) | |||
| 81 | { | 87 | { | 
| 82 | if (!default_RAND_meth) | 88 | if (!default_RAND_meth) | 
| 83 | { | 89 | { | 
| 90 | #ifndef OPENSSL_NO_ENGINE | ||
| 84 | ENGINE *e = ENGINE_get_default_RAND(); | 91 | ENGINE *e = ENGINE_get_default_RAND(); | 
| 85 | if(e) | 92 | if(e) | 
| 86 | { | 93 | { | 
| @@ -94,11 +101,13 @@ const RAND_METHOD *RAND_get_rand_method(void) | |||
| 94 | if(e) | 101 | if(e) | 
| 95 | funct_ref = e; | 102 | funct_ref = e; | 
| 96 | else | 103 | else | 
| 104 | #endif | ||
| 97 | default_RAND_meth = RAND_SSLeay(); | 105 | default_RAND_meth = RAND_SSLeay(); | 
| 98 | } | 106 | } | 
| 99 | return default_RAND_meth; | 107 | return default_RAND_meth; | 
| 100 | } | 108 | } | 
| 101 | 109 | ||
| 110 | #ifndef OPENSSL_NO_ENGINE | ||
| 102 | int RAND_set_rand_engine(ENGINE *engine) | 111 | int RAND_set_rand_engine(ENGINE *engine) | 
| 103 | { | 112 | { | 
| 104 | const RAND_METHOD *tmp_meth = NULL; | 113 | const RAND_METHOD *tmp_meth = NULL; | 
| @@ -118,6 +127,7 @@ int RAND_set_rand_engine(ENGINE *engine) | |||
| 118 | funct_ref = engine; | 127 | funct_ref = engine; | 
| 119 | return 1; | 128 | return 1; | 
| 120 | } | 129 | } | 
| 130 | #endif | ||
| 121 | 131 | ||
| 122 | void RAND_cleanup(void) | 132 | void RAND_cleanup(void) | 
| 123 | { | 133 | { | 
