Sha256: 58c52a9b9bd77ace2ed092bea7678310d4f24c01f35de26122504439eeb1aafc

Contents?: true

Size: 1.06 KB

Versions: 5

Compression:

Stored size: 1.06 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 initialize(options = {})
      if options.is_a?(String)
        self.value = key
      elsif options.is_a?(Hash)
        options.each do |key, value|
          send("#{key}=", value)
        end
      end
    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

5 entries across 5 versions & 1 rubygems

Version Path
pgcrypto-0.1.0 lib/pgcrypto/key.rb
pgcrypto-0.0.4 lib/pgcrypto/key.rb
pgcrypto-0.0.3 lib/pgcrypto/key.rb
pgcrypto-0.0.2 lib/pgcrypto/key.rb
pgcrypto-0.0.1 lib/pgcrypto/key.rb