class OsslRsa::Generator

generator class

Public Class Methods

generate(options) click to toggle source

generate OpenSSL::PKey::RSA instance. generate rsa instance by options. options : key size options : pem or der options : password @param [Hash] options generate options. @return [OpenSSL::PKey::RSA] rsa instance.

# File lib/ossl_rsa/generator.rb, line 16
def self.generate(options)

  rsa = nil
  # if size and private exist, raise error.
  if (!options[:size].nil? && !options[:obj].nil?)
    raise OpenSSL::PKey::RSAError.new("size and obj is nil.")
  end

  # if exist size, generate use size, cipher.
  unless options[:size].nil?
    rsa = generate_rsa_by_size(options[:size])
  end

  # if exist obj, generate use obj, pass.
  unless options[:obj].nil?
    rsa = generate_rsa_by_key(options[:obj], options[:pass])
  end

  # raise Error
  if rsa.nil?
    raise OpenSSL::PKey::RSAError.new("fail create rsa instance.")
  end

  rsa
end

Private Class Methods

generate_rsa_by_key(obj, pass=nil) click to toggle source

generate rsa. @param [String] pem / der. @param [String] pass password @return [OpenSSL::PKey::RSA] rsa instance.

# File lib/ossl_rsa/generator.rb, line 60
def self.generate_rsa_by_key(obj, pass=nil)

  rsa = OpenSSL::PKey::RSA.new(obj, pass)
  rsa
end
generate_rsa_by_size(size) click to toggle source

generate rsa. @param [integer] size key size. @return [OpenSSL::PKey::RSA] rsa instance.

# File lib/ossl_rsa/generator.rb, line 47
def self.generate_rsa_by_size(size)

  # add seed.
  OpenSSL::Random.seed(SecureRandom.hex(8))
  # generate rsa instance.
  rsa = OpenSSL::PKey::RSA.new(size)
  rsa
end