X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fmml2015.el;h=389b522aec8dd77ec1ed220d02004c35c11fa837;hb=d35146fa43e9e2d8d346073c3c0692162abf4759;hp=39bce23e76ca3f9ac3267ee4554966510209cdaf;hpb=8f34815d386264b0b7b6e79a99dd8848a076faa9;p=gnus diff --git a/lisp/mml2015.el b/lisp/mml2015.el index 39bce23e7..389b522ae 100644 --- a/lisp/mml2015.el +++ b/lisp/mml2015.el @@ -47,6 +47,9 @@ (config &optional minimum-version)) (declare-function epg-configuration "ext:epg-config" ()) +;; Maybe this should be in eg mml-sec.el (and have a different name). +;; Then mml1991 would not need to require mml2015, and mml1991-use +;; could be removed. (defvar mml2015-use (or (condition-case nil (progn @@ -143,6 +146,12 @@ If set, it overrides the setting of `mml2015-sign-with-sender'." :group 'mime-security :type 'boolean) +(defcustom mml2015-maximum-key-image-dimension 64 + "The maximum dimension (width or height) of any key images." + :version "24.4" + :group 'mime-security + :type 'integer) + ;; Extract plaintext from cleartext signature. IMO, this kind of task ;; should be done by GnuPG rather than Elisp, but older PGP backends ;; (such as Mailcrypt, and PGG) discard the output from GnuPG. @@ -870,13 +879,20 @@ If set, it overrides the setting of `mml2015-sign-with-sender'." (insert (substring data 16)) (create-image (buffer-string) nil t))))) +(autoload 'gnus-rescale-image "gnus-util") + (defun mml2015-epg-key-image-to-string (key-id) "Return a string with the image of a key, if any" (let* ((result "") (key-image (mml2015-epg-key-image key-id))) (when key-image (setq result " ") - (put-text-property 1 2 'display key-image result)) + (put-text-property + 1 2 'display + (gnus-rescale-image key-image + (cons mml2015-maximum-key-image-dimension + mml2015-maximum-key-image-dimension)) + result)) result)) (defun mml2015-epg-signature-to-string (signature) @@ -1082,6 +1098,10 @@ If no one is selected, default secret key is used. " (epg-context-set-passphrase-callback context #'mml2015-epg-passphrase-callback)) + ;; Signed data must end with a newline (RFC 3156, 5). + (goto-char (point-max)) + (unless (bolp) + (insert "\n")) (condition-case error (setq signature (epg-sign-string context (buffer-string) t) mml2015-epg-secret-key-id-list nil) @@ -1106,7 +1126,7 @@ If no one is selected, default secret key is used. " (insert (format "\n--%s\n" boundary)) (goto-char (point-max)) (insert (format "\n--%s\n" boundary)) - (insert "Content-Type: application/pgp-signature\n\n") + (insert "Content-Type: application/pgp-signature; name=\"signature.asc\"\n\n") (insert signature) (goto-char (point-max)) (insert (format "--%s--\n" boundary))