(install-package): Install info.
[elisp/epg.git] / epg.el
diff --git a/epg.el b/epg.el
index 59cedc5..1b58162 100644 (file)
--- a/epg.el
+++ b/epg.el
@@ -1737,23 +1737,30 @@ 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")
+       ;; 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))))
+       (condition-case nil
+           (setq string (epg--decode-coding-string
+                         (car (read-from-string (concat "\"" string "\"")))
+                         'utf-8))
+         (error
+          (setq string (aref (car lines) 9))))
        (epg-key-set-user-id-list
         (car keys)
         (cons (epg-make-user-id
                (if (aref (car lines) 1)
                    (cdr (assq (string-to-char (aref (car lines) 1))
                               epg-key-validity-alist)))
-               (condition-case nil
-                   (if cert
-                       (epg-dn-from-string (aref (car lines) 9))
-                     (setq string (copy-sequence (aref (car lines) 9)))
-                     (while (string-match "\"" string index)
-                       (setq string (replace-match "\\\"" t t string)
-                             index (1+ (match-end 0))))
-                     (epg--decode-coding-string
-                      (car (read-from-string (concat "\"" string "\"")))
-                      'utf-8))
-                 (error (aref (car lines) 9))))
+               (if cert
+                   (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)))
@@ -2552,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