# File lib/gpgme/key.rb, line 45
      def find(secret, keys_or_names = nil, purposes = [])
        secret = (secret == :secret)
        keys_or_names = [""] if keys_or_names.nil? || (keys_or_names.is_a?(Array) && keys_or_names.empty?)
        keys_or_names = [keys_or_names].flatten
        purposes      = [purposes].flatten.compact.uniq

        keys = []
        keys_or_names.each do |key_or_name|
          case key_or_name
          when Key then keys << key_or_name
          when String
            GPGME::Ctx.new do |ctx|
              keys += ctx.keys(key_or_name, secret).select do |k|
                k.usable_for?(purposes)
              end
            end
          end
        end
        keys
      end