PATH:
opt
/
alt
/
ruby32
/
share
/
ruby
# -*- coding: us-ascii -*- # frozen_string_literal: true require 'random/formatter' # == Secure random number generator interface. # # This library is an interface to secure random number generators which are # suitable for generating session keys in HTTP cookies, etc. # # You can use this library in your application by requiring it: # # require 'securerandom' # # It supports the following secure random number generators: # # * openssl # * /dev/urandom # * Win32 # # SecureRandom is extended by the Random::Formatter module which # defines the following methods: # # * alphanumeric # * base64 # * choose # * gen_random # * hex # * rand # * random_bytes # * random_number # * urlsafe_base64 # * uuid # # These methods are usable as class methods of SecureRandom such as # +SecureRandom.hex+. # # If a secure random number generator is not available, # +NotImplementedError+ is raised. module SecureRandom class << self def bytes(n) return gen_random(n) end private def gen_random_openssl(n) @pid = 0 unless defined?(@pid) pid = $$ unless @pid == pid now = Process.clock_gettime(Process::CLOCK_REALTIME, :nanosecond) OpenSSL::Random.random_add([now, @pid, pid].join(""), 0.0) seed = Random.urandom(16) if (seed) OpenSSL::Random.random_add(seed, 16) end @pid = pid end return OpenSSL::Random.random_bytes(n) end def gen_random_urandom(n) ret = Random.urandom(n) unless ret raise NotImplementedError, "No random device" end unless ret.length == n raise NotImplementedError, "Unexpected partial read from random device: only #{ret.length} for #{n} bytes" end ret end begin # Check if Random.urandom is available Random.urandom(1) alias gen_random gen_random_urandom rescue RuntimeError begin require 'openssl' rescue NoMethodError raise NotImplementedError, "No random device" else alias gen_random gen_random_openssl end end public :gen_random end end SecureRandom.extend(Random::Formatter)
[-] pstore.rb
[open]
[-] ripper.rb
[open]
[-] optparse.rb
[open]
[-] singleton.rb
[open]
[+]
..
[-] tempfile.rb
[open]
[+]
csv
[-] time.rb
[open]
[-] delegate.rb
[open]
[-] forwardable.rb
[open]
[-] json.rb
[open]
[-] abbrev.rb
[open]
[-] fileutils.rb
[open]
[-] set.rb
[open]
[-] csv.rb
[open]
[-] coverage.rb
[open]
[-] yaml.rb
[open]
[-] socket.rb
[open]
[-] error_highlight.rb
[open]
[+]
reline
[+]
optparse
[-] kconv.rb
[open]
[-] psych.rb
[open]
[-] monitor.rb
[open]
[-] date.rb
[open]
[-] pp.rb
[open]
[+]
racc
[-] readline.rb
[open]
[-] English.rb
[open]
[-] cgi.rb
[open]
[-] bigdecimal.rb
[open]
[-] benchmark.rb
[open]
[+]
syslog
[-] logger.rb
[open]
[+]
openssl
[-] find.rb
[open]
[+]
random
[-] resolv-replace.rb
[open]
[-] erb.rb
[open]
[-] tmpdir.rb
[open]
[+]
yaml
[-] drb.rb
[open]
[+]
io
[+]
syntax_suggest
[+]
rinda
[-] expect.rb
[open]
[-] mutex_m.rb
[open]
[+]
ruby_vm
[-] base64.rb
[open]
[-] openssl.rb
[open]
[-] fiddle.rb
[open]
[-] ostruct.rb
[open]
[+]
error_highlight
[-] reline.rb
[open]
[+]
vendor_ruby
[+]
did_you_mean
[-] shellwords.rb
[open]
[+]
benchmark
[-] uri.rb
[open]
[+]
fiddle
[+]
net
[+]
digest
[+]
cgi
[-] ipaddr.rb
[open]
[-] syntax_suggest.rb
[open]
[+]
set
[+]
json
[+]
psych
[+]
forwardable
[+]
bigdecimal
[+]
open3
[+]
ripper
[-] un.rb
[open]
[-] optionparser.rb
[open]
[-] getoptlong.rb
[open]
[-] pathname.rb
[open]
[-] observer.rb
[open]
[+]
drb
[-] weakref.rb
[open]
[-] resolv.rb
[open]
[-] open3.rb
[open]
[-] racc.rb
[open]
[+]
logger
[-] did_you_mean.rb
[open]
[-] objspace.rb
[open]
[-] mkmf.rb
[open]
[+]
objspace
[+]
erb
[-] securerandom.rb
[open]
[-] open-uri.rb
[open]
[-] prettyprint.rb
[open]
[-] tsort.rb
[open]
[-] timeout.rb
[open]
[-] digest.rb
[open]
[+]
unicode_normalize
[+]
uri