Sha256: 79e04a517e799e66bf70b3c48954d7cbad12f8c9f36e16fc46f69486483e4b87

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

module PGCrypto
  class KeyManager < Hash
    def []=(key, value)
      unless value.is_a?(Key)
        value = Key.new(value)
      end
      value.name = key
      super key, value
    end
  end

  class Key
    attr_accessor :name, :password, :value
    attr_reader :path
    attr_writer :armored

    def armored?
      @armored
    end

    def dearmored
      "#{'dearmor(' if armored?}'#{self}'#{')' if armored?}"
    end

    def encrypt(value)
      %[pgp_pub_encrypt('#{value}', #{dearmored})]
    end

    def initialize(options = {})
      if options.is_a?(String)
        self.value = options
      elsif options.is_a?(Hash)
        options.each do |key, value|
          send("#{key}=", value)
        end
      end
    end

    def password?
      ", '#{password}'" if password
    end

    def path=(keyfile)
      keyfile = File.expand_path(keyfile)
      raise PGCrypto::Error, "#{keyfile} does not exist!" unless File.file?(keyfile)
      @path = keyfile
      self.value = File.read(keyfile)
    end

    def to_s
      value
    end

    def value=(key)
      if key =~ /^-----BEGIN PGP /
        self.armored = true
      else
        self.armored = false
      end
      @value = key.dup.freeze
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pgcrypto-0.3.6 lib/pgcrypto/key.rb
pgcrypto-0.3.5 lib/pgcrypto/key.rb
pgcrypto-0.3.4 lib/pgcrypto/key.rb