Function: canlock-insert-header
canlock-insert-header is an autoloaded and byte-compiled function
defined in canlock.el.gz.
Signature
(canlock-insert-header &optional ID-FOR-KEY ID-FOR-LOCK PASSWORD)
Documentation
Insert a Cancel-Key and/or a Cancel-Lock header if possible.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/canlock.el.gz
;;;###autoload
(defun canlock-insert-header (&optional id-for-key id-for-lock password)
"Insert a Cancel-Key and/or a Cancel-Lock header if possible."
(let (news control key-for-key key-for-lock)
(save-excursion
(save-restriction
(canlock-narrow-to-header)
(when (setq news (or canlock-force-insert-header
(mail-fetch-field "Newsgroups")))
(unless id-for-key
(setq id-for-key (canlock-fetch-id-for-key)))
(if (and (setq control (mail-fetch-field "Control"))
(string-match "^cancel[\t ]+<[^\t\n @<>]+@[^\t\n @<>]+>"
control))
(setq id-for-lock nil)
(unless id-for-lock
(setq id-for-lock (mail-fetch-field "Message-ID"))))
(canlock-delete-headers)
(goto-char (point-max))))
(when news
(if (not (or id-for-key id-for-lock))
(message "There are no Message-ID(s)")
(unless password
(setq password (or canlock-password
(read-passwd
"Password for Canlock: "))))
(if (or (not (stringp password)) (zerop (length password)))
(message "Password for Canlock is bad")
(setq key-for-key (when id-for-key
(canlock-make-cancel-key
id-for-key password))
key-for-lock (when id-for-lock
(canlock-make-cancel-key
id-for-lock password)))
(if (not (or key-for-key key-for-lock))
(message "Couldn't insert Canlock header")
(when key-for-key
(insert "Cancel-Key: sha1:" key-for-key "\n"))
(when key-for-lock
(insert "Cancel-Lock: sha1:"
(base64-encode-string (canlock-sha1 key-for-lock))
"\n")))))))))