mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-12 02:01:39 -05:00
32 lines
597 B
Ruby
32 lines
597 B
Ruby
# -*- 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
|