#!/usr/bin/env ruby
require 'optparse'
require 'io/console'

require_relative '../../lib/rnp'

options = {armored: false, keys_armored: false}
parser = OptionParser.new do |opts|
  opts.banner = "Usage: #{$0} [options] <seckey> <passphrase>"
  opts.on('-k', '--keys-armored', 'Keys are ASCII armored') do
    options[:keys_armored] = true
  end
  opts.on('-a', '--armored', 'Input is ASCII armored') do
    options[:armored] = true
  end
  opts.on('-h', '--help', 'Print this help') do
    puts opts
    exit
  end
end
parser.parse!

if ARGV.length != 2
  parser.display
  exit
end

seckey_filename = ARGV.shift
passphrase = ARGV.shift + "\n"

secring = RNP::load_keyring(File.binread(seckey_filename), options[:keys_armored])

$stdin.binmode
data = $stdin.read

seckey = secring[0]
decrypted_data = seckey.decrypt(data, passphrase, options[:armored])
if decrypted_data
  $stderr.puts 'Decryption succeeded'
  $stdout.puts decrypted_data
else
  $stderr.puts 'Decryption failed!'
end