using gnupg to encrypt a file with only a passphrase.

prompt> echo 'hello world' >> test
prompt> gpg -c test
Enter passphrase:
Repeat passphrase:
prompt>

note: I have not shown the many backspaces.



however if there already exists a 'test.gpg' file
then there is third question.


prompt> echo 'hello world' >> test
prompt> gpg -c test
Enter passphrase:
Repeat passphrase:
File `test.gpg' exists. Overwrite? (y/N)



I want to listen for:
'Enter passphrase: '
'Repeat passphrase: '
eof?


In case I get something else than eof? then
I want to raise an error.


--
Simon Strandgaard


File.open("test", "a+") do |f|
  500000.times { f.write("helloworld") }
end

require 'pty'
require 'expect'
PTY.spawn("gpg -c test") do |r,w,pid|
  w.sync = true
  r.expect("Enter passphrase: ", 1) do |e|
    raise unless e
    w.puts "secretpassword"
  end
  r.expect("Repeat passphrase: ", 1) do |e|
    raise unless e
    w.puts "secretpassword"
  end

  puts "eof=#{r.eof}"
  # how to read eventual data
  # how to expect eof?
end

system('ls test*')





# output when running the program
prompt> ruby a.rb
eof=false
test            test.gpg
prompt>