From 5de7bd65a37338a3354c12240bb2f17c10a58a02 Mon Sep 17 00:00:00 2001 From: Sascha Zepter <60738409+saschazepter@users.noreply.github.com> Date: Tue, 24 Sep 2024 22:40:34 +0200 Subject: [PATCH] Fix missing urandom by using OpenSSL's random_bytes --- config/initializers/00_random.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 config/initializers/00_random.rb diff --git a/config/initializers/00_random.rb b/config/initializers/00_random.rb new file mode 100644 index 00000000..b23a879e --- /dev/null +++ b/config/initializers/00_random.rb @@ -0,0 +1,32 @@ +# -*- coding: us-ascii -*- +# frozen_string_literal: true + +class Random + + class << self + + private + + # :stopdoc: + + # Implementation using OpenSSL + def gen_random_openssl(n) + return OpenSSL::Random.random_bytes(n) + end + + begin + # Check if Random.urandom is available + Random.urandom(1) + rescue RuntimeError + begin + require 'openssl' + rescue NoMethodError + raise NotImplementedError, "No random device" + else + alias urandom gen_random_openssl + end + end + + public :urandom + end +end