Remove auto-autoloads.el~
[elisp/epg.git] / epg.el
diff --git a/epg.el b/epg.el
index beebfc1..147eda5 100644 (file)
--- a/epg.el
+++ b/epg.el
@@ -406,6 +406,19 @@ This function is for internal use only."
        (setcdr entry value)
       (epg-context-set-result context (cons (cons name value) result)))))
 
+(defun epg-signature-to-string (signature)
+  (format "%s signature from %s %s%s"
+         (capitalize (symbol-name (epg-signature-status signature)))
+         (epg-signature-key-id signature)
+         (epg-signature-user-id signature)
+         (if (epg-signature-validity signature)
+             (format " (trust %s)"
+                     (epg-signature-validity signature))
+           "")))
+
+(defun epg-verify-result-to-string (verify-result)
+  (mapconcat #'epg-signature-to-string verify-result "\n"))
+
 (defun epg-start (context args)
   "Start `epg-gpg-program' in a subprocess with given ARGS."
   (let* ((args (append (list "--no-tty"
@@ -727,6 +740,21 @@ This function is for internal use only."
        (cons (cons 'delete-problem (string-to-number (match-string 1 string)))
             (epg-context-result-for epg-context 'error)))))
 
+(defun epg-status-SIG_CREATED (process string)
+  (if (string-match "\\`\\([DCS]\\) \\([0-9]+\\) \\([0-9]+\\) \
+\\([0-9A-Fa-F][0-9A-Fa-F]\\) \\(.*\\) " string)
+      (epg-context-set-result-for
+       epg-context 'sign
+       (cons (list (cons 'type (string-to-char (match-string 1 string)))
+                  (cons 'pubkey-algorithm
+                        (string-to-number (match-string 2 string)))
+                  (cons 'digest-algorithm
+                        (string-to-number (match-string 3 string)))
+                  (cons 'class (string-to-number (match-string 4 string) 16))
+                  (cons 'creation-time (match-string 5 string))
+                  (cons 'fingerprint (substring string (match-end 0))))
+            (epg-context-result-for epg-context 'sign)))))
+
 (defun epg-passphrase-callback-function (key-id handback)
   (read-passwd
    (if (eq key-id 'SYM)
@@ -1056,9 +1084,12 @@ If you are unsure, use synchronous version of this function
                                 "--detach-sign"
                               "--sign")))
                     (apply #'nconc
-                           (mapcar (lambda (signer)
-                                     (list "-u" signer))
-                                   (epg-context-signers context)))
+                           (mapcar
+                            (lambda (signer)
+                              (list "-u"
+                                    (epg-sub-key-id
+                                     (car (epg-key-sub-key-list signer)))))
+                            (epg-context-signers context)))
                     (if (epg-data-file plain)
                         (list (epg-data-file plain)))))
   (epg-wait-for-status context '("BEGIN_SIGNING"))
@@ -1134,9 +1165,12 @@ If you are unsure, use synchronous version of this function
                                                (list "-u" signer))
                                              (epg-context-signers context)))))
                     (apply #'nconc
-                           (mapcar (lambda (recipient)
-                                     (list "-r" recipient))
-                                   recipients))
+                           (mapcar
+                            (lambda (recipient)
+                              (list "-r"
+                                    (epg-sub-key-id
+                                     (car (epg-key-sub-key-list recipient)))))
+                            recipients))
                     (if (epg-data-file plain)
                         (list (epg-data-file plain)))))
   (if sign