;;; Commentary:
+;; RFC 2015 is updated by RFC 3156, this file should be compatible
+;; with both.
+
;;; Code:
(eval-when-compile (require 'cl))
'((trust-undefined . nil)
(trust-none . nil)
(trust-marginal . t)
- (trust-fully . t)
+ (trust-full . t)
(trust-ultimate . t))
"Trust boundaries for a signer's GnuPG key.
This alist contains pairs of the form (trust-symbol . boolean), with
(defun mml2015-fix-micalg (alg)
(and alg
- (upcase (if (string-match "^pgp-" alg)
+ ;; Mutt/1.2.5i has seen sending micalg=php-sha1
+ (upcase (if (string-match "^p[gh]p-" alg)
(substring alg (match-end 0))
alg))))
(buffer-string)))
(set-buffer cipher)
(erase-buffer)
- (insert-buffer plain)))
+ (insert-buffer plain)
+ (goto-char (point-min))
+ (while (search-forward "\r\n" nil t)
+ (replace-match "\n" t t))))
'(t)
;; Some wrong with the return value, check plain text buffer.
(if (> (point-max) (point-min))
(defun mml2015-gpg-pretty-print-fpr (fingerprint)
(let* ((result "")
- (fpr-length (string-width fingerprint))
- (n-slice 0)
- slice)
+ (fpr-length (string-width fingerprint))
+ (n-slice 0)
+ slice)
(setq fingerprint (string-to-list fingerprint))
(while fingerprint
(setq fpr-length (- fpr-length 4))
(setq fingerprint (nthcdr 4 fingerprint))
(setq n-slice (1+ n-slice))
(setq result
- (concat
- result
- (case n-slice
- (1 slice)
- (otherwise (concat " " slice))))))
+ (concat
+ result
+ (case n-slice
+ (1 slice)
+ (otherwise (concat " " slice))))))
result))
-
+
(defun mml2015-gpg-extract-signature-details ()
(goto-char (point-min))
(if (boundp 'gpg-unabbrev-trust-alist)
"^\\[GNUPG:\\] GOODSIG [0-9A-Za-z]* \\(.*\\)$"
nil t)
(match-string 1)))
- (fprint (and (re-search-forward
- "^\\[GNUPG:\\] VALIDSIG \\([0-9a-zA-Z]*\\) "
+ (fprint (and (re-search-forward
+ "^\\[GNUPG:\\] VALIDSIG \\([0-9a-zA-Z]*\\) "
nil t)
- (match-string 1)))
- (trust (and (re-search-forward "^\\[GNUPG:\\] \\(TRUST_.*\\)$" nil t)
- (match-string 1)))
- (trust-good-enough-p
- (cdr (assoc (cdr (assoc trust gpg-unabbrev-trust-alist))
+ (match-string 1)))
+ (trust (and (re-search-forward "^\\[GNUPG:\\] \\(TRUST_.*\\)$" nil t)
+ (match-string 1)))
+ (trust-good-enough-p
+ (cdr (assoc (cdr (assoc trust gpg-unabbrev-trust-alist))
mml2015-trust-boundaries-alist))))
(if (and signer trust fprint)
(concat signer
(unless trust-good-enough-p
(concat "\nUntrusted, Fingerprint: "
(mml2015-gpg-pretty-print-fpr fprint))))
- (error "From unknown user")))
+ "From unknown user"))
(if (re-search-forward "^gpg: Good signature from \"\\(.*\\)\"$" nil t)
(match-string 1)
"From unknown user")))
(with-temp-buffer
(setq message (current-buffer))
(insert part)
+ ;; Convert <LF> to <CR><LF> in verify mode. Sign and
+ ;; clearsign use --textmode. The conversion is not necessary.
+ ;; In clearverify, the conversion is not necessary either.
+ (goto-char (point-min))
+ (end-of-line)
+ (while (not (eobp))
+ (unless (eq (char-before) ?\r)
+ (insert "\r"))
+ (forward-line)
+ (end-of-line))
(with-temp-buffer
(setq signature (current-buffer))
(unless (setq part (mm-find-part-by-type
(error
(mm-set-handle-multipart-parameter
mm-security-handle 'gnus-details (mml2015-format-error err))
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Error.")
- (setq info-is-set-p t)
+ (mm-set-handle-multipart-parameter
+ mm-security-handle 'gnus-info "Error.")
+ (setq info-is-set-p t)
nil)
(quit
(mm-set-handle-multipart-parameter
mm-security-handle 'gnus-details "Quit.")
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Quit.")
- (setq info-is-set-p t)
+ (mm-set-handle-multipart-parameter
+ mm-security-handle 'gnus-info "Quit.")
+ (setq info-is-set-p t)
nil))
- (unless info-is-set-p
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Failed"))
+ (unless info-is-set-p
+ (mm-set-handle-multipart-parameter
+ mm-security-handle 'gnus-info "Failed"))
(throw 'error handle)))
(mm-set-handle-multipart-parameter
mm-security-handle 'gnus-info