From d1adfd24c10ab9a4fd80cb3c08ebbfbc069bc585 Mon Sep 17 00:00:00 2001
From: Adrien Waksberg <git@yae.im>
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