From d1adfd24c10ab9a4fd80cb3c08ebbfbc069bc585 Mon Sep 17 00:00:00 2001 From: Adrien Waksberg Date: Sun, 2 Apr 2017 23:44:36 +0200 Subject: [PATCH] fix pinentry mode with gpg 1.4 --- lib/mpw/mpw.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/mpw/mpw.rb b/lib/mpw/mpw.rb index 2444f12..88cab5c 100644 --- a/lib/mpw/mpw.rb +++ b/lib/mpw/mpw.rb @@ -337,9 +337,18 @@ module MPW def decrypt(data) return nil if data.to_s.empty? - crypto = GPGME::Crypto.new(armor: true) + password = + if /^1\.[0-9.]+$/ =~ GPGME::Engine.info.first.version + { password: @gpg_pass } + else + { password: @gpg_pass, + pinentry_mode: GPGME::PINENTRY_MODE_LOOPBACK } + end - crypto.decrypt(data, password: @gpg_pass, pinentry_mode: GPGME::PINENTRY_MODE_LOOPBACK).read.force_encoding('utf-8') + crypto = GPGME::Crypto.new(armor: true) + crypto + .decrypt(data, password) + .read.force_encoding('utf-8') rescue => e raise "#{I18n.t('error.gpg_file.decrypt')}\n#{e}" end