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