module OpenPGP::Random
Public Class Methods
byte()
click to toggle source
Generates a random byte.
@return [String]
# File lib/openpgp/random.rb, line 31 def self.byte() bytes(1) end
bytes(count, &block)
click to toggle source
Generates a string of random bytes.
@param [Integer] count @return [String]
# File lib/openpgp/random.rb, line 38 def self.bytes(count, &block) octets = File.open('/dev/urandom', 'r') {|f| f.read(count) } # FIXME block_given? ? octets.each_byte(&block) : octets end
number(bits = 32, options = {})
click to toggle source
Generates a random number.
@param [Integer] bits @param [Hash{Symbol => Object}] options @return [Integer]
# File lib/openpgp/random.rb, line 9 def self.number(bits = 32, options = {}) octets = bytes((bits / 8.0).ceil).unpack('C*') number = octets.inject { |number, octet| number = (number << 8) | octet } number & ((1 << bits) - 1) end
prime(bits, options = {})
click to toggle source
Generates a pseudo-random prime number of the specified bit length.
@param [Integer] bits @param [Hash{Symbol => Object}] options @return [Integer] @see openssl.org/docs/crypto/BN_generate_prime.html @see openssl.org/docs/apps/genrsa.html
# File lib/openpgp/random.rb, line 23 def self.prime(bits, options = {}) raise NotImplementedError # TODO end