(install-package): Install info.
[elisp/epg.git] / epg.el
diff --git a/epg.el b/epg.el
index b760821..1b58162 100644 (file)
--- a/epg.el
+++ b/epg.el
@@ -1737,7 +1737,10 @@ signatures should be included."
         (cons (epg--make-sub-key-1 (car lines))
               (epg-key-sub-key-list (car keys)))))
        ((equal (aref (car lines) 0) "uid")
-       (setq string (copy-sequence (aref (car lines) 9)))
+       ;; Decode the UID name as a backslash escaped UTF-8 string,
+       ;; generated by GnuPG/GpgSM.
+       (setq string (copy-sequence (aref (car lines) 9))
+             index 0)
        (while (string-match "\"" string index)
          (setq string (replace-match "\\\"" t t string)
                index (1+ (match-end 0))))
@@ -1754,10 +1757,12 @@ signatures should be included."
                    (cdr (assq (string-to-char (aref (car lines) 1))
                               epg-key-validity-alist)))
                (if cert
-                   (epg-dn-from-string string)
-                 string)))
-        (epg-key-user-id-list (car keys)))))
-      ((equal (aref (car lines) 0) "fpr")
+                   (condition-case nil
+                       (epg-dn-from-string string)
+                     (error string))
+                 string))
+              (epg-key-user-id-list (car keys)))))
+       ((equal (aref (car lines) 0) "fpr")
        (epg-sub-key-set-fingerprint (car (epg-key-sub-key-list (car keys)))
                                     (aref (car lines) 9)))
        ((equal (aref (car lines) 0) "sig")
@@ -2554,7 +2559,7 @@ PARAMETERS is a string which tells how to create the key."
 \\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)"
                         string index)
       (if (match-beginning 2)
-         (setq string (replace-match "\\2" t t string)
+         (setq string (replace-match "\\2" t nil string)
                index (1- (match-end 0)))
        (if (match-beginning 3)
            (setq string (replace-match (string (string-to-number