(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)))
(setq string (replace-match (string (string-to-number
(match-string 0 string) 16))
t t string)
- index (+ index 4)))
+ index (1- (match-end 0))))
string))
(defun epg--decode-quotedstring (string)
\\([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