How to decrypt PGP encrypted file with Ruby gpgme

encryption, gnupg, gpgme, pgp, ruby

Solution

Daiki Ueno, the developer of Ruby gpgme reached out to me on GitHub:

adding `decrypted.seek(0)` after the line `decrypted = ctx.decrypt encrypted_data` seems to solve the problem

Problem

I can't find a single example of how to do this. I have a PGP encrypted XLS file and a PGP key. Here's is my code that returns an empty string: ``` require 'rubygems' require 'gpgme' def passfunc(obj, uid_hint, passphrase_info, prev_was_bad, fd) io = IO.for_fd(fd, 'w') io.puts "PASSPHRASE" io.flush end encrypted_data = GPGME::Data.new(File.open("file.xls.pgp")) key = GPGME::Data.new(File.open("key.txt")) ctx = GPGME::Ctx.new :passphrase_callback => method(:passfunc) ctx.import_keys key decrypted = ctx.decrypt encrypted_data puts decrypted.read ``` I'm able to decrypt this file in a program called GNU Privacy Assistant on Windows using the same key. Any help is appreciated.

Original source