/opt/openssl に新しい OpenSSL インストール (ソースからコンパイルされた 1.1.0) があり、Ruby インストールも /opt/ruby に新しいコンパイル (ソースから 2.1.0dev) があり、--with-openssl-dir でコンパイルされています=/opt/openssl (すべて現在の Debian 上)。Openssl は自分のコンピューターの rdrand エンジンを認識できます
$ openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
そしてRubyはopensslを見ることができます
$ ruby -ropenssl -e 'p OpenSSL::Random.random_bytes(4)'
"Q\a\"%"
OpenSSL::Engine があり、エンジンもロードできます。
$ ruby -ropenssl -e 'e=OpenSSL::Engine.by_id("openssl"); p e;'
#<OpenSSL::Engine id="openssl" name="Software engine support">
そのセットアップを使用して rdrand ジェネレーターを呼び出そうとすると、次のようになります。
$ ruby -ropenssl -e 'OpenSSL::Engine.by_id("rdrand"); p OpenSSL::Random.random_bytes(4)'
-e:1:in `by_id': no such engine (OpenSSL::Engine::EngineError)
from -e:1:in `<main>'
私はここで愚かなことをしていますか?一般的に: Ruby で OpenSSL を使用し、特定の openssl エンジンを要求するにはどうすればよいですか?