From 77b48503423a9ed94e64e3ba8c541a9e439f2dd7 Mon Sep 17 00:00:00 2001 From: rhe Date: Sun, 5 Jun 2016 12:38:34 +0000 Subject: openssl: check existence of RAND_pseudo_bytes() * ext/openssl/extconf.rb: Check if RAND_pseudo_bytes() is usable. It is marked as deprecated in OpenSSL 1.1.0. [ruby-core:75225] [Feature #12324] * ext/openssl/ossl_rand.c: Disable Random.pseudo_bytes if RAND_pseudo_bytes() is unavailable. * test/openssl/test_random.rb: Don't test Random.pseudo_bytes if not defined. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/openssl/extconf.rb | 1 + ext/openssl/ossl_rand.c | 4 ++++ 2 files changed, 5 insertions(+) (limited to 'ext') diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb index aa6351d9..b78347ac 100644 --- a/ext/openssl/extconf.rb +++ b/ext/openssl/extconf.rb @@ -107,6 +107,7 @@ OpenSSL.check_func_or_macro("SSL_CTX_set_ecdh_auto", "openssl/ssl.h") OpenSSL.check_func_or_macro("SSL_get_server_tmp_key", "openssl/ssl.h") # added in 1.1.0 +OpenSSL.check_func("RAND_pseudo_bytes", "openssl/rand.h") # deprecated have_func("X509_STORE_get_ex_data") have_func("X509_STORE_set_ex_data") OpenSSL.check_func_or_macro("SSL_CTX_set_tmp_ecdh_callback", "openssl/ssl.h") # removed diff --git a/ext/openssl/ossl_rand.c b/ext/openssl/ossl_rand.c index 3a300d5e..ff07a41b 100644 --- a/ext/openssl/ossl_rand.c +++ b/ext/openssl/ossl_rand.c @@ -124,6 +124,7 @@ ossl_rand_bytes(VALUE self, VALUE len) return str; } +#if defined(HAVE_RAND_PSEUDO_BYTES) /* * call-seq: * pseudo_bytes(length) -> string @@ -151,6 +152,7 @@ ossl_rand_pseudo_bytes(VALUE self, VALUE len) return str; } +#endif #ifdef HAVE_RAND_EGD /* @@ -224,7 +226,9 @@ Init_ossl_rand(void) rb_define_module_function(mRandom, "load_random_file", ossl_rand_load_file, 1); rb_define_module_function(mRandom, "write_random_file", ossl_rand_write_file, 1); rb_define_module_function(mRandom, "random_bytes", ossl_rand_bytes, 1); +#if defined(HAVE_RAND_PSEUDO_BYTES) rb_define_module_function(mRandom, "pseudo_bytes", ossl_rand_pseudo_bytes, 1); +#endif #ifdef HAVE_RAND_EGD rb_define_module_function(mRandom, "egd", ossl_rand_egd, 1); rb_define_module_function(mRandom, "egd_bytes", ossl_rand_egd_bytes, 2); -- cgit v1.2.3