(epg-start-sign-keys): Make it obsolete; signing a key is
authorueno <ueno>
Sun, 12 Nov 2006 02:14:17 +0000 (02:14 +0000)
committerueno <ueno>
Sun, 12 Nov 2006 02:14:17 +0000 (02:14 +0000)
out of scope.
(epg-sign-keys): Make it obsolete.
(epg-make-import-status): New object epg-import-status.
(epg-make-import-result): New object epg-import-result.
(epg--status-IMPORT_RES): New function.

ChangeLog
epg.el

index e400057..789c7fe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,10 @@
        * epg.el (epg-start-sign-keys): Make it obsolete; signing a key is
        out of scope.
        (epg-sign-keys): Make it obsolete.
+       (epg-make-import-status): New object epg-import-status.
+       (epg-make-import-result): New object epg-import-result.
+       (epg--status-IMPORT_RES): New function.
+
        * epa.el (epa-keys-mode-map): Don't bind epa-sign-keys.
        (epa-sign-keys): Make it obsolete.
 
diff --git a/epg.el b/epg.el
index fcc93f9..4e16aab 100644 (file)
--- a/epg.el
+++ b/epg.el
@@ -780,6 +780,150 @@ This function is for internal use only."
                                       sig-notation)))
   (aset (cdr sig-notation) 1 value))
 
+(defun epg-make-import-status (fingerprint reason new user-id signature sub-key
+                                          secret)
+  "Return a import status object."
+  (cons 'epg-import-status (vector fingerprint reason new user-id signature
+                                  sub-key secret)))
+
+(defun epg-import-status-fingerprint (import-status)
+  "Return the fingerprint of the key that was considered."
+  (unless (eq (car-safe import-status) 'epg-import-status)
+    (signal 'wrong-type-argument (list 'epg-import-status-p import-status)))
+  (aref (cdr import-status) 0))
+
+(defun epg-import-status-reason (import-status)
+  "Return the reason code for import failure."
+  (unless (eq (car-safe import-status) 'epg-import-status)
+    (signal 'wrong-type-argument (list 'epg-import-status-p import-status)))
+  (aref (cdr import-status) 1))
+
+(defun epg-import-status-new (import-status)
+  "Return t if the imported key was new."
+  (unless (eq (car-safe import-status) 'epg-import-status)
+    (signal 'wrong-type-argument (list 'epg-import-status-p import-status)))
+  (aref (cdr import-status) 2))
+
+(defun epg-import-status-user-id (import-status)
+  "Return t if the imported key contained new user IDs."
+  (unless (eq (car-safe import-status) 'epg-import-status)
+    (signal 'wrong-type-argument (list 'epg-import-status-p import-status)))
+  (aref (cdr import-status) 3))
+
+(defun epg-import-status-signature (import-status)
+  "Return t if the imported key contained new signatures."
+  (unless (eq (car-safe import-status) 'epg-import-status)
+    (signal 'wrong-type-argument (list 'epg-import-status-p import-status)))
+  (aref (cdr import-status) 4))
+
+(defun epg-import-status-sub-key (import-status)
+  "Return t if the imported key contained new sub keys."
+  (unless (eq (car-safe import-status) 'epg-import-status)
+    (signal 'wrong-type-argument (list 'epg-import-status-p import-status)))
+  (aref (cdr import-status) 5))
+
+(defun epg-import-status-secret (import-status)
+  "Return t if the imported key contained a secret key."
+  (unless (eq (car-safe import-status) 'epg-import-status)
+    (signal 'wrong-type-argument (list 'epg-import-status-p import-status)))
+  (aref (cdr import-status) 6))
+
+(defun epg-make-import-result (considered no-user-id imported imported-rsa
+                                         unchanged new-user-id new-sub-key
+                                         new-signature new-revocation
+                                         secret-read secret-imported
+                                         secret-unchanged not-imported)
+  "Return a import result object."
+  (cons 'epg-import-result (vector considered no-user-id imported imported-rsa
+                                  unchanged new-user-ids new-sub-keys
+                                  new-signatures new-revocations secret-read
+                                  secret-imported secret-unchanged
+                                  not-imported nil)))
+
+(defun epg-import-result-considered (import-result)
+  "Return the total number of considered keys."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 0))
+
+(defun epg-import-result-no-user-id (import-result)
+  "Return the number of keys without user ID."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 1))
+
+(defun epg-import-result-imported (import-result)
+  "Return the number of imported keys."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 2))
+
+(defun epg-import-result-imported-rsa (import-result)
+  "Return the number of imported RSA keys."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 3))
+
+(defun epg-import-result-unchanged (import-result)
+  "Return the number of unchanged keys."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 4))
+
+(defun epg-import-result-new-user-ids (import-result)
+  "Return the number of new user IDs."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 5))
+
+(defun epg-import-result-new-sub-keys (import-result)
+  "Return the number of new sub keys."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 6))
+
+(defun epg-import-result-new-signatures (import-result)
+  "Return the number of new signatures."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 7))
+
+(defun epg-import-result-new-revocations (import-result)
+  "Return the number of new revocations."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 8))
+
+(defun epg-import-result-secret-read (import-result)
+  "Return the total number of secret keys read."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 9))
+
+(defun epg-import-result-secret-imported (import-result)
+  "Return the number of imported secret keys."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 10))
+
+(defun epg-import-result-secret-unchanged (import-result)
+  "Return the number of unchanged secret keys."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 11))
+
+(defun epg-import-result-not-imported (import-result)
+  "Return the number of keys not imported."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 12))
+
+(defun epg-import-result-imports (import-result)
+  "Return the list of `epg-import-status' objects."
+  (unless (eq (car-safe import-result) 'epg-import-result)
+    (signal 'wrong-type-argument (list 'epg-import-result-p import-result)))
+  (aref (cdr import-result) 13))
+
 (defun epg-context-result-for (context name)
   "Return the result of CONTEXT associated with NAME."
   (cdr (assq name (epg-context-result context))))
@@ -1349,38 +1493,56 @@ This function is for internal use only."
        (if entry
            (setcdr entry user-id)
          (setq epg-user-id-alist (cons (cons key-id user-id)
-                                       epg-user-id-alist)))
-       (epg-context-set-result-for
-        context 'import
-        (cons (list (cons 'key-id key-id)
-                    (cons 'user-id user-id))
-              (epg-context-result-for context 'import))))))
+                                       epg-user-id-alist))))))
 
 (defun epg--status-IMPORT_OK (context string)
-  (let ((result (epg-context-result-for context 'import)))
-    (if (and result
-            (string-match "\\`\\([0-9]+\\)\\( \\(.+\\)\\)?" string))
-       (setcar result
-               (append (list (cons 'reason
-                                   (string-to-number
-                                    (match-string 1 string))))
-                       (if (match-beginning 2)
-                           (list (cons 'fingerprint
-                                       (match-string 3 string))))
-                       (car result))))))
+  (if (string-match "\\`\\([0-9]+\\)\\( \\(.+\\)\\)?" string)
+      (let ((reason (string-to-number (match-string 1 string))))
+       (epg-context-set-result-for
+        context 'import-status
+        (cons (epg-make-import-status (if (match-beginning 2)
+                                          (match-string 3 string))
+                                      nil
+                                      (/= (logand reason 1) 0)
+                                      (/= (logand reason 2) 0)
+                                      (/= (logand reason 4) 0)
+                                      (/= (logand reason 8) 0)
+                                      (/= (logand reason 16) 0))
+              (epg-context-result-for context 'import-status))))))
 
 (defun epg--status-IMPORT_PROBLEM (context string)
   (if (string-match "\\`\\([0-9]+\\)\\( \\(.+\\)\\)?" string)
       (epg-context-set-result-for
-       context 'error
-       (cons (cons 'import-problem
-                  (append (list (cons 'reason
-                                      (string-to-number
-                                       (match-string 1 string))))
-                          (if (match-beginning 2)
-                              (list (cons 'fingerprint
-                                          (match-string 3 string))))))
-            (epg-context-result-for context 'error)))))
+       context 'import-status
+       (cons (epg-make-import-status
+             (if (match-beginning 2)
+                 (match-string 3 string))
+             (string-to-number (match-string 1 string)))
+            (epg-context-result-for context 'import-status)))))
+
+(defun epg--status-IMPORT_RES (context string)
+  (when (string-match "\\`\\([0-9]+\\) \\([0-9]+\\) \\([0-9]+\\) \\([0-9]+\\) \
+\\([0-9]+\\) \\([0-9]+\\) \\([0-9]+\\) \\([0-9]+\\) \\([0-9]+\\) \\([0-9]+\\) \
+\\([0-9]+\\) \\([0-9]+\\) \\([0-9]+\\)" string)
+    (epg-context-set-result-for
+     context 'import
+     (cons (epg-make-import-result
+           (string-to-number (match-string 1 string))
+           (string-to-number (match-string 2 string))
+           (string-to-number (match-string 3 string))
+           (string-to-number (match-string 4 string))
+           (string-to-number (match-string 5 string))
+           (string-to-number (match-string 6 string))
+           (string-to-number (match-string 7 string))
+           (string-to-number (match-string 8 string))
+           (string-to-number (match-string 9 string))
+           (string-to-number (match-string 10 string))
+           (string-to-number (match-string 11 string))
+           (string-to-number (match-string 12 string))
+           (string-to-number (match-string 13 string))
+           (epg-context-result-for context 'import-status))
+          (epg-context-result-for context 'import)))
+    (epg-context-set-result-for context 'import-status nil)))
 
 (defun epg-passphrase-callback-function (context key-id handback)
   (if (eq key-id 'SYM)