class ZeroSSL::CSR

Public Class Methods

new(opts = {}) click to toggle source
# File lib/zerossl/csr.rb, line 5
def initialize opts = {}
  opts.transform_keys!(&:to_s)

  @common_name  = opts.dig('common_name')
  @organization = opts.dig('organization')
  @country      = opts.dig('country')
  @state_name   = opts.dig('state_name')
  @locality     = opts.dig('locality')

  @signing_key  = signing_key
  @subject      = subject
end

Public Instance Methods

call() click to toggle source
# File lib/zerossl/csr.rb, line 18
def call
  csr            = OpenSSL::X509::Request.new
  csr.version    = 0
  csr.subject    = subject
  csr.public_key = signing_key.public_key
  csr.sign signing_key, OpenSSL::Digest::SHA256.new

  [csr.to_s, signing_key.to_s]
end

Private Instance Methods

signing_key() click to toggle source
# File lib/zerossl/csr.rb, line 30
def signing_key
  @signing_key ||= OpenSSL::PKey::RSA.new 2048
end
subject() click to toggle source
# File lib/zerossl/csr.rb, line 34
def subject
  @subject ||= OpenSSL::X509::Name.new [
    ['CN', @common_name],
    ['O',  @organization],
    ['C',  @country],
    ['ST', @state_name],
    ['L',  @locality]
  ]
end