]> git.eshelyaron.com Git - emacs.git/commitdiff
epg.el: support pinentry mode added in GnuPG 2.1
authorDaiki Ueno <ueno@gnu.org>
Mon, 22 Apr 2013 04:53:05 +0000 (13:53 +0900)
committerDaiki Ueno <ueno@gnu.org>
Mon, 22 Apr 2013 04:53:05 +0000 (13:53 +0900)
* epg.el (epg-context-pinentry-mode): New function.
(epg-context-set-pinentry-mode): New function.
(epg--start): Pass --pinentry-mode option to gpg command.

lisp/ChangeLog
lisp/epg.el

index 5dc33bd804f25a914cdcc6dcefa9c1df65f54854..9c3be36984b149cfa51ffd6d148f51890612364d 100644 (file)
@@ -1,3 +1,9 @@
+2013-04-22  Daiki Ueno  <ueno@gnu.org>
+
+       * epg.el (epg-context-pinentry-mode): New function.
+       (epg-context-set-pinentry-mode): New function.
+       (epg--start): Pass --pinentry-mode option to gpg command.
+
 2013-04-21  Xue Fuqiao  <xfq.free@gmail.com>
 
        * comint.el: (comint-dynamic-complete-functions, comint-mode-map):
index 3f04aa2e07a919b1c337554b0f9af1eaa4eae08a..c36de7e4624a0ed30522bc6a8b2785110de98d75 100644 (file)
                cipher-algorithm digest-algorithm compress-algorithm
                (list #'epg-passphrase-callback-function)
                nil
-               nil nil nil nil nil nil)))
+               nil nil nil nil nil nil nil)))
 
 (defun epg-context-protocol (context)
   "Return the protocol used within CONTEXT."
@@ -289,6 +289,12 @@ This function is for internal use only."
     (signal 'wrong-type-argument (list 'epg-context-p context)))
   (aref (cdr context) 14))
 
+(defun epg-context-pinentry-mode (context)
+  "Return the mode of pinentry invocation."
+  (unless (eq (car-safe context) 'epg-context)
+    (signal 'wrong-type-argument (list 'epg-context-p context)))
+  (aref (cdr context) 15))
+
 (defun epg-context-set-protocol (context protocol)
   "Set the protocol used within CONTEXT."
   (unless (eq (car-safe context) 'epg-context)
@@ -407,6 +413,14 @@ This function is for internal use only."
     (signal 'wrong-type-argument (list 'epg-context-p context)))
   (aset (cdr context) 14 operation))
 
+(defun epg-context-set-pinentry-mode (context mode)
+  "Set the mode of pinentry invocation."
+  (unless (eq (car-safe context) 'epg-context)
+    (signal 'wrong-type-argument (list 'epg-context-p context)))
+  (unless (memq mode '(nil ask cancel error loopback))
+    (signal 'epg-error (list "Unknown pinentry mode" mode)))
+  (aset (cdr context) 15 mode))
+
 (defun epg-make-signature (status &optional key-id)
   "Return a signature object."
   (cons 'epg-signature (vector status key-id nil nil nil nil nil nil nil nil
@@ -1152,6 +1166,10 @@ This function is for internal use only."
                       (if (epg-context-textmode context) '("--textmode"))
                       (if (epg-context-output-file context)
                           (list "--output" (epg-context-output-file context)))
+                      (if (epg-context-pinentry-mode context)
+                          (list "--pinentry-mode"
+                                (symbol-name (epg-context-pinentry-mode
+                                              context))))
                       args))
         (coding-system-for-write 'binary)
         (coding-system-for-read 'binary)