;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\302\303\304\305\306\307%\210\310\311\304\312\313\314\306\303&\210\310\315\311\316\313\317\306\303&\210\310\320\304\321\313\322\306\303&\207" [require sha1 custom-declare-group canlock nil "The Cancel-Lock feature." :group news custom-declare-variable canlock-password "Password to use when signing a Cancel-Lock or a Cancel-Key header." :type (radio (const :format "Not specified " nil) (string :tag "Password")) canlock-password-for-verify "Password to use when verifying a Cancel-Lock or a Cancel-Key header." (radio (const :format "Not specified " nil) (string :tag "Password")) canlock-force-insert-header "If non-nil, insert a Cancel-Lock or a Cancel-Key header even if the\nbuffer does not look like a news message." boolean] 8) #@72 Make a SHA-1 digest of MESSAGE as a unibyte string of length 20 bytes. (defalias 'canlock-sha1 #[(message) "\301\302\211\303$\207" [message sha1 nil binary] 5 (#$ . 1172)]) #@27 Make a Cancel-Key header. (defalias 'canlock-make-cancel-key #[(message-id password) "G\304V\203 \305!\306\307GZ\310\"P\311\312\313#\311\314\313#\315\305 \305\n P!P!!*\207" [password opad ipad message-id 20 canlock-sha1 make-string 64 0 mapconcat #[(byte) "\301\302\303\"!\207" [byte char-to-string logxor 54] 4] "" #[(byte) "\301\302\303\"!\207" [byte char-to-string logxor 92] 4] base64-encode-string] 6 (#$ . 1352)]) #@47 Narrow the buffer to the head of the message. (defalias 'canlock-narrow-to-header #[nil "\302eb\303\304\305\306 !\"\302\307#\203\310\224\202db})\207" [case-fold-search mail-header-separator nil re-search-forward format "^$\\|^%s$" regexp-quote t 0] 6 (#$ . 1791)]) #@66 Delete Cancel-Key or Cancel-Lock headers in the narrowed buffer. (defalias 'canlock-delete-headers #[nil "\301eb\210\302\303\304\301#\205#\305\224\302\306\304\301#\203\305\224b\202d|\210\202)\207" [case-fold-search t re-search-forward "^Cancel-\\(Key\\|Lock\\):" nil 0 "^[^ ]"] 5 (#$ . 2067)]) #@184 Return a list of the values of Cancel-Lock header. If KEY is non-nil, look for a Cancel-Key header instead. The buffer is expected to be narrowed to just the headers of the message. (defalias 'canlock-fetch-fields #[(&optional key) "\305\203 \306\202\n\307!\310\211\311\211\2058\312\f\313\" \2036\314\315 \211A\242\211\"\203\316\f\317\"\nB\202\n\237,\207" [key case-fold-search rest fields field mail-fetch-field "Cancel-Key" "Cancel-Lock" nil t split-string "[ \n ,]+" string-match "^sha1:" substring 5] 5 (#$ . 2377)]) #@137 Return a Message-ID in Cancel, Supersedes or Replaces header. The buffer is expected to be narrowed to just the headers of the message. (defalias 'canlock-fetch-id-for-key #[nil "\301\302!\211\205\303\304\"\205\305\306\")\206 \301\307!\206 \301\310!\207" [cancel mail-fetch-field "Control" string-match "^cancel[ ]+\\(<[^ \n @<>]+@[^ \n @<>]+>\\)" match-string 1 "Supersedes" "Replaces"] 4 (#$ . 2924)]) #@62 Insert a Cancel-Key and/or a Cancel-Lock header if possible. (defalias 'canlock-insert-header #[(&optional id-for-key id-for-lock password) "\306\211\211\211\212\214\307 \210\f\206\310\311!\211\203E \204 \312 \310\313!\211\2035\314\315\n\"\2035\306\202?\204?\310\316!\317 \210db\210) \205\267 \204Y\204Y\320\321!\202\267\204h\206f\322\323!;\203vG\324U\203|\320\325!\202\267 \205\205\326 \"\205\221\326\" \204\240\204\240\320\327!\202\267 \203\252\330 \331\261\210\205\267\332\333\334!!\331\261-\207" [key-for-lock key-for-key control news canlock-force-insert-header id-for-key nil canlock-narrow-to-header mail-fetch-field "Newsgroups" canlock-fetch-id-for-key "Control" string-match "^cancel[ ]+<[^ \n @<>]+@[^ \n @<>]+>" "Message-ID" canlock-delete-headers message "There are no Message-ID(s)" read-passwd "Password for Canlock: " 0 "Password for Canlock is bad" canlock-make-cancel-key "Couldn't insert Canlock header" "Cancel-Key: sha1:" "\n" "Cancel-Lock: sha1:" base64-encode-string canlock-sha1 id-for-lock password canlock-password] 4 (#$ . 3344)]) #@124 Verify Cancel-Lock or Cancel-Key in BUFFER. If BUFFER is nil, the current buffer is assumed. Signal an error if it fails. (defalias 'canlock-verify #[(&optional buffer) "\306\211\211\211\211\211\211\211\211 \212!\203!q\210\214~\210\307 \210\310\311! \310  \204>\204>\312\202P\313 \314\315! \204P\f\204P\316*\203^\317\320\"\202\"\206f\321\322!\211;\203s G\323U\203y\317\324!\202 \203\250 \203\235\325 \" \203\235\204\235\n \211A \242\230\202\207\203\245\326\202\246\327 \306\203\332\f\203\317\330\331\325\f \"!!\203\317\204\317 \211A\242\230\203\327\326\202\330\327\327 D\235\205\345\327 \203\372\203\372\332\333 #\210\202\203\332\334\"\210\202 \203\332\335 \"\210. \207" [match key-for-lock key-for-key password id-for-lock id-for-key nil canlock-narrow-to-header canlock-fetch-fields key "There are neither Cancel-Lock nor Cancel-Key headers" canlock-fetch-id-for-key mail-fetch-field "Message-ID" "There are no Message-ID(s)" error "%s" read-passwd "Password for Canlock: " 0 "Password for Canlock is bad" canlock-make-cancel-key "good" "bad" base64-encode-string canlock-sha1 message "Cancel-Key is %s, Cancel-Lock is %s" "Cancel-Lock is %s" "Cancel-Key is %s" errmsg locks keys buffer canlock-password-for-verify] 10 (#$ . 4474) nil]) (provide 'canlock)