Sha256: 6c11b0d798c5dc8b9ada005de145ab5c3b92d705609b9ce15ff5c4699b56c74f

Contents?: true

Size: 1.4 KB

Versions: 4

Compression:

Stored size: 1.4 KB

Contents

module Digicert
  module CLI
    class CSR < Digicert::CLI::Base
      def fetch
        if order
          order.certificate.csr
        end
      end

      def generate
        if order || valid_data?
          generate_new_csr
        end
      end

      private

      attr_reader :rsa_key, :organization_id, :common_name

      def extract_local_attributes(options)
        @rsa_key = options.fetch(:key, nil)
        @common_name = options.fetch(:common_name, nil)
        @organization_id = options.fetch(:organization_id, nil)
      end

      def valid_data?
        !organization.nil? && !options[:common_name].nil?
      end

      def order
        if order_id
          @order ||= Digicert::Order.fetch(order_id)
        end
      end

      def organization
        if organization_id
          @organization ||= Digicert::Organization.fetch(organization_id)
        end
      end

      def generate_new_csr
        if rsa_key && File.exists?(rsa_key)
          Digicert::CSRGenerator.generate(csr_attributes(order))
        end
      end

      def csr_attributes(order)
        Hash.new.tap do |csr|
          csr[:rsa_key] = File.read(rsa_key)
          csr[:organization] = organization || order.organization
          csr[:common_name] = common_name || order.certificate.common_name

          if options[:san]
            csr[:san_names] = options[:san]
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
digicert-cli-1.0.0 lib/digicert/cli/csr.rb
digicert-cli-0.5.2 lib/digicert/cli/csr.rb
digicert-cli-0.5.1 lib/digicert/cli/csr.rb
digicert-cli-0.5.0 lib/digicert/cli/csr.rb