Sha256: 6cb0e373162b103aad32b269f7f365536527b22352eb6def40a1c2f8d5597fd4

Contents?: true

Size: 1.26 KB

Versions: 19

Compression:

Stored size: 1.26 KB

Contents

module Kafo
  module Params
    # A password paramater is stored encrypted in answer file using AES 256 in CBC mode
    #
    # we use a passphrase that is stored in kafo.yaml for encryption
    # encrypted password is prefixed with $1$ (for historical reasons, no connection to
    # Modular Crypt Format)
    class Password < Param
      def value=(value)
        super
        if @value.nil? || @value.empty?
          @value = password_manager.password
        end
        setup_password if @value.is_a?(::String)
        @value
      end

      def value
        @encrypted
      end

      def condition_value
        %{"#{value}"}
      end

      def dump_default
        %{"#{super}"}
      end

      private

      def setup_password
        encrypted? ? decrypt : encrypt
      end

      def encrypted?
        @value.length > 3 && @value[0..2] == '$1$'
      end

      def decrypt
        @encrypted = @value
        @value     = password_manager.aes_decrypt(@value[3..-1], phrase)
      end

      def encrypt
        @encrypted = '$1$' + password_manager.aes_encrypt(@value, phrase)
      end

      def password_manager
        @password_manager ||= PasswordManager.new
      end

      def phrase
        @module.configuration.app[:password]
      end

    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
kafo-0.9.8 lib/kafo/params/password.rb
kafo-0.9.7 lib/kafo/params/password.rb
kafo-0.9.6 lib/kafo/params/password.rb
kafo-0.9.5 lib/kafo/params/password.rb
kafo-0.9.4 lib/kafo/params/password.rb
kafo-0.9.3 lib/kafo/params/password.rb
kafo-0.9.2 lib/kafo/params/password.rb
kafo-0.7.6 lib/kafo/params/password.rb
kafo-0.9.1 lib/kafo/params/password.rb
kafo-0.7.5 lib/kafo/params/password.rb
kafo-0.7.4 lib/kafo/params/password.rb
kafo-0.9.0 lib/kafo/params/password.rb
kafo-0.8.2 lib/kafo/params/password.rb
kafo-0.8.1 lib/kafo/params/password.rb
kafo-0.8.0 lib/kafo/params/password.rb
kafo-0.7.3 lib/kafo/params/password.rb
kafo-0.7.2 lib/kafo/params/password.rb
kafo-0.7.1 lib/kafo/params/password.rb
kafo-0.7.0 lib/kafo/params/password.rb