;ELC   
;;; compiled by amu@mit.edu on Wed Dec 30 12:35:30 1998
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/mailcrypt-3.5.1/mc-pgp.el
;;; emacs version 19.34.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`mc-pgp.el' was compiled for Emacs 19.29 or later"))


(require (quote mailcrypt))
#@35 *PGP ID of your default identity.
(defvar mc-pgp-user-id (user-login-name) (#$ . -517))
#@22 *The PGP executable.
(defvar mc-pgp-path "pgp" (#$ . -611))
#@57 *If t, pop up the PGP output window when snarfing keys.
(defvar mc-pgp-display-snarf-output nil (#$ . -677))
#@44 *Public keyring to use instead of default.
(defvar mc-pgp-alternate-keyring nil (#$ . -792))
#@83 *Comment field to appear in ASCII armor output.  If nil, let PGP
use its default.
(defvar mc-pgp-comment (format "Processed by Mailcrypt %s, an Emacs/PGP interface" mc-version) (#$ . -891))
#@42 Text for start of PGP message delimiter.
(defconst mc-pgp-msg-begin-line "-----BEGIN PGP MESSAGE-----" (#$ . 1087))
#@40 Text for end of PGP message delimiter.
(defconst mc-pgp-msg-end-line "-----END PGP MESSAGE-----\n?" (#$ . 1209))
#@40 Text for start of PGP signed messages.
(defconst mc-pgp-signed-begin-line "-----BEGIN PGP SIGNED MESSAGE-----" (#$ . 1328))
#@38 Text for end of PGP signed messages.
(defconst mc-pgp-signed-end-line "-----END PGP SIGNATURE-----" (#$ . 1458))
#@35 Text for start of PGP public key.
(defconst mc-pgp-key-begin-line "^-----BEGIN PGP PUBLIC KEY BLOCK-----?$" (#$ . 1577))
#@33 Text for end of PGP public key.
(defconst mc-pgp-key-end-line "^-----END PGP PUBLIC KEY BLOCK-----?$" (#$ . 1705))
#@47 Regular expression matching an error from PGP
(defconst mc-pgp-error-re "^\\(ERROR:\\|WARNING:\\).*" (#$ . 1827))
#@64 Regular expression matching a PGP signature validation message
(defconst mc-pgp-sigok-re "^.*Good signature.*" (#$ . 1947))
#@53 Regular expression matching a PGP key snarf message
(defconst mc-pgp-newkey-re "^[ 	]*\\(No\\|[0-9]+\\) +new [ku].*" (#$ . 2077))
#@56 Regular expression matching a PGP missing-key messsage
(defconst mc-pgp-nokey-re "Cannot find the public key matching userid '\\(.+\\)'$" (#$ . 2213))
(byte-code "ÀÁ\nBÁ‡" ["Key matching expected Key ID \\(\\S +\\) not found" mc-pgp-key-expected-re current-load-list] 2)
#@41 Directory in which keyrings are stored.
(defvar mc-pgp-keydir nil (#$ . 2492))
(defalias 'mc-get-pgp-keydir #[nil "„- ÁÂ!pÅŽÆÈ\fÈÉÊËÌ&ˆ\fqˆebˆÍÎ!ˆÏÐÑ”Ñ•\"!+‡" [mc-pgp-keydir generate-new-buffer " *mailcrypt temp*" obuf buffer ((byte-code "qˆÁ\n!‡" [obuf kill-buffer buffer] 2)) call-process mc-pgp-path nil "+verbose=1" "+language=en" "-kv" "XXXXXXXXXX" re-search-forward "^Key ring:\\s *'\\(.*\\)'" file-name-directory buffer-substring-no-properties 1] 9])
#@143 Association list mapping PGP IDs to canonical "keys".  A "key"
is a pair (USER-ID . KEY-ID) which identifies the canonical IDs of the
PGP ID.
(defvar mc-pgp-key-cache nil (#$ . 2966))
(defalias 'mc-pgp-lookup-key #[(str) "Áš?…’ Â ÃPÄ\"£ÆÇpÈ	\n\f„Ž ÏŽÐÑ!	ÒÈ	ÈÔÕ&ˆ	qˆebˆ„� Ö\fÈ×#ƒ� ØÙ”Ù•\"ÚØÛ”Û•\"PBÜ”Ü•Œ}ˆebˆÖÈ×#ƒ‚ È‚‰ BB)‚B ).‡" [str "***** CONVENTIONAL *****" mc-get-pgp-keydir "secring" assoc mc-pgp-key-cache "^\\(\\(pub\\|sec\\)\\s +[^/]+/\\(\\S *\\)\\s +\\S +\\s +\\(.*\\)\\)$" "REVOKED" nil buffer obuf revoke-regexp key-regexp result keyring ((byte-code "ƒ Á!ˆ\nq‡" [buffer kill-buffer obuf] 2)) generate-new-buffer " *mailcrypt temp" call-process mc-pgp-path "+language=en" "-kv" re-search-forward t buffer-substring-no-properties 4 "0x" 3 1 key-start key-end] 9])
(defalias 'mc-pgp-generic-parser #[(result) "Àebˆ\nÃ=„' ÀÄÅp\"ƒ ÆÇ!ˆ‚Y ÄpÉÊ\n\"#ˆ‚Y Ë\fÀÇ#ƒ4 À‚Y eb…Y ËÍÀÇ#…Y Ã”‰…Y db…Y ÎÏÀÇ#…Y 	Ã•B)‡" [nil start result 0 mc-message "^Error: +Bad pass phrase\\.$" mc-deactivate-passwd t mc-pgp-error-re format "PGP exited with status %d" re-search-forward mc-pgp-nokey-re "-----BEGIN PGP.*-----$" re-search-backward "^-----END PGP.*-----\n"] 7])
(defalias 'mc-pgp-encrypt-region #[(recipients start end &optional id sign) "Á\n!pÄ‰‰‰‰‰‰	\n\fÎÏÐÑF	ƒ0 Ó‚1 ÔÕÖ\"\nƒE ×	B	ƒT ÕÙ\"	B	ƒe Û	ÕÜ\"C\"	Ý=„¼ „z „z ßà!ƒ¼ áâ#†„ $!‰„� åæ!ˆçAÕè@A#\"	éêAE¤	ëìí\"ˆÕî@#\n‚¾ Ý„É â$!ƒÛ /ƒÛ ABÛ	\"	ðñ\n\"ˆò345	ö&Šqˆebˆ÷8Äá#ƒUƒåù!ˆúû”û•\"<Ý=„H<„1ßÕý\"!ƒHþÄB!ˆ\fqˆÿ34#$‚c�@ 8\"ˆÄ‚c…cð�A \n\"ˆá.\f‡" [process-environment get-buffer-create mc-buffer-name mc-pgp-always-sign nil pgp-id result passwd key args msg action obuf buffer "+encrypttoself=off +verbose=1" "+batchmode" "+language=en" "-fat" recipients "Encrypting" "Armoring" format "%s..." "-e" mc-pgp-comment "+comment=%s" mc-pgp-alternate-keyring append "+pubring=%s" never sign y-or-n-p "Sign the message? " t mc-pgp-lookup-key id mc-pgp-user-id error "No key available for signing." mc-activate-passwd "PGP passphrase for %s (%s): " "-s" "-u" setenv "PGPPASSFD" "0" "%s+signing as %s ..." mc-encrypt-for-me message "%s" mc-process-region start end mc-pgp-path mc-pgp-generic-parser re-search-forward mc-pgp-nokey-re "This should never happen." buffer-substring-no-properties 1 mc-pgp-always-fetch "Key for '%s' not found; try to fetch? " mc-pgp-fetch-key mc-pgp-encrypt-region mc-message "%s Done."] 12])
(defalias 'mc-pgp-decrypt-parser #[(result) "ebˆÁ=ƒ ÂÃ!ˆÄÅ!ƒ Á•bˆ`dB‡Æ=ƒH ÂÇ!ˆÈ”È•=ƒ: ÄÉ!ƒD Á•bˆ‚D ÄÊ!ƒD Á•bˆ`dB‡Ë‡" [result 0 re-search-forward "^Signature made.*\n" looking-at "\nWARNING:  Because this public key.*\n.*\n.*\n" 1 "\\(\\(^File is conven.*\\)?Just a moment\\.+\\)\\|\\(^\\.\\)" 2 "\nFile has signature.*\\(\n.*\n\\)*\nWARNING:.*\n" "Pass phrase appears good\\. \\." nil] 2])
(defalias 'mc-pgp-decrypt-region #[(start end &optional id) "Á\n!Ã‰‰‰‰‰	\nË ˆÌ†\" !‰ƒ? ÏA…; ÐÑ@A#\"‚D ÏÒ\"‰ƒO ÓÔÕ\"ˆÖ	ƒc Ø	ÐÙ\"C\"	ÚÛ!ˆÜ	à\n&‰ƒÝ Úá!ˆŠ\nqˆebˆâ#Ãä#ƒš åæç”ç•\"P)\fƒÎ (é=„Î („´ êÐë\f\"!ƒÎ ìÃ\fB!ƒÎ í ˆîç!ˆï#‚cð#\n\"ˆäñ=B‚cŠ\nq…\feb…\fâòÃä#…\fÌåæç”ç•\"P!‰…\f…š?)ƒïA#‚cŠ\nq…-eb…-âóÃä#)ƒD„:ôä!ˆïõ#‚cö\n!ˆð÷\n\"ƒXôä!ˆ‚`ð8\nù#ˆÃ‰B.‡" [process-environment get-buffer-create mc-buffer-name nil pgp-id result passwd new-key key args buffer undo-boundary mc-pgp-lookup-key id mc-pgp-user-id mc-activate-passwd format "PGP passphrase for %s (%s): " "PGP passphrase for conventional decryption: " setenv "PGPPASSFD" "0" ("+verbose=1" "+batchmode" "+language=en" "-f") mc-pgp-alternate-keyring append "+pubring=%s" message "Decrypting..." mc-process-region start end mc-pgp-path mc-pgp-decrypt-parser "Decrypting... Done." re-search-forward mc-pgp-key-expected-re t "0x" buffer-substring-no-properties 1 mc-pgp-always-fetch never y-or-n-p "Key %s not found; attempt to fetch? " mc-pgp-fetch-key undo-start undo-more mc-pgp-decrypt-region mc-message 0 "^Key for user ID:.*\n.*Key ID \\([0-9A-F]+\\)" "^File is conventionally encrypted" mc-deactivate-passwd "***** CONVENTIONAL *****" mc-display-buffer "^Error: +Bad pass phrase\\.$" mc-pgp-error-re "Error decrypting buffer"] 9])
(defalias 'mc-pgp-sign-region #[(start end &optional id unclear) "Á\n!Ã‰‰È	† \n!‰„  ËÌ!ˆÍ\fAÎÏ\f@\fA#\"ÐÑÒ\"ˆÓÔÕÎÖƒ@ Ø‚A Ù\"ÚÛ\fA¯ƒV ÎÝ\"BÞß\f@\"ˆà!\"#ä&…u Þå\f@\"ˆæ-‡" [process-environment get-buffer-create mc-buffer-name nil key args passwd buffer mc-pgp-lookup-key id mc-pgp-user-id error "No key available for signing." mc-activate-passwd format "PGP passphrase for %s (%s): " setenv "PGPPASSFD" "0" "-fast" "+verbose=1" "+language=en" "+clearsig=%s" unclear "off" "on" "+batchmode" "-u" mc-pgp-comment "+comment=%s" message "Signing as %s ..." mc-process-region start end mc-pgp-path mc-pgp-generic-parser "Signing as %s ... Done." t] 9])
(defalias 'mc-pgp-verify-parser #[(result) "Á=ƒ ÂpÄ#ˆÅ‡Æ=ƒ ÂpÈ#ˆÉ‡ÂpÊË\"#ˆÉ‡" [result 0 mc-message mc-pgp-sigok-re "Good signature" t 1 mc-pgp-error-re "Bad signature" nil format "PGP exited with status %d"] 6])
(defalias 'mc-pgp-verify-region #[(start end &optional no-fetch) "À	!pÂ‰Çƒ É\fÊË\"C\"ÌÍ!ˆÎÂ\fÒ&ƒ5 Ó‚� Šqˆebˆ„„ ÕÂÓ#ƒ„ ×ØÙ”Ù•\"P‰ƒ„ Û=„„ „m ÜÊÝ\"!ƒ„ ÞÂB!ƒ„ qƒ„ ßÓ#‚Œ à!\"ˆÂ),‡" [get-buffer-create mc-buffer-name nil pgp-id args obuf buffer ("+verbose=1" "+batchmode" "+language=en" "-f") mc-pgp-alternate-keyring append format "+pubring=%s" message "Verifying..." mc-process-region start end mc-pgp-path mc-pgp-verify-parser t no-fetch re-search-forward mc-pgp-key-expected-re "0x" buffer-substring-no-properties 1 mc-pgp-always-fetch never y-or-n-p "Key %s not found; attempt to fetch? " mc-pgp-fetch-key mc-pgp-verify-region mc-message mc-pgp-error-re] 8])
(defalias 'mc-pgp-insert-public-key #[(&optional id) "À	!Â†\f ÇÈÉÊ¯ƒ\" ÌÍ\"Bƒ1 ÏÌÐ\"C\"Ñ``ÂÓ\f&…E ÔÕ\f\"ˆÖ*‡" [get-buffer-create mc-buffer-name nil args buffer id mc-pgp-user-id "+verbose=1" "+batchmode" "+language=en" "-kxaf" mc-pgp-comment format "+comment=%s" mc-pgp-alternate-keyring append "+pubring=%s" mc-process-region mc-pgp-path mc-pgp-generic-parser mc-message "Key for user ID: .*" t] 8])
(defalias 'mc-pgp-snarf-parser #[(result) "Á=‡" [result 0] 2])
(defalias 'mc-pgp-snarf-keys #[(start end) "À	!Â‰Æƒ ÈÉÊ\"C\"ËÌ!ˆÍÂÑ&ƒ_ ŠqˆebˆÒÂÔ#…[ ƒF Ö!ˆ×Ø”Ø•\"‰ÙšƒW Ú‚[ Û\f!@)‚k Ö!ˆÜÞ#ˆÚ+‡" [get-buffer-create mc-buffer-name nil args tmpstr buffer ("+verbose=1" "+batchmode" "+language=en" "-kaf") mc-pgp-alternate-keyring append format "+pubring=%s" message "Snarfing..." mc-process-region start end mc-pgp-path mc-pgp-snarf-parser re-search-forward mc-pgp-newkey-re t mc-pgp-display-snarf-output mc-display-buffer buffer-substring-no-properties 1 "No" 0 read-from-string mc-message mc-pgp-error-re "Error snarfing PGP keys"] 9])
(defalias 'mc-scheme-pgp #[nil "ÀÁBÂÃBÄÅBÆÇBÈÉBÊËBÌBÎBÐBÒBÔBÖBØB¯‡" [encryption-func mc-pgp-encrypt-region decryption-func mc-pgp-decrypt-region signing-func mc-pgp-sign-region verification-func mc-pgp-verify-region key-insertion-func mc-pgp-insert-public-key snarf-func mc-pgp-snarf-keys msg-begin-line mc-pgp-msg-begin-line msg-end-line mc-pgp-msg-end-line signed-begin-line mc-pgp-signed-begin-line signed-end-line mc-pgp-signed-end-line key-begin-line mc-pgp-key-begin-line key-end-line mc-pgp-key-end-line user-id mc-pgp-user-id] 14])
#@72 *If t, always attempt to fetch missing keys, or never fetch if
'never.
(defvar mc-pgp-always-fetch nil (#$ . -10534))
#@35 The URL to pass to the keyserver.
(defvar mc-pgp-keyserver-url-template "/pks/lookup?op=get&search=%s" (#$ . 10658))
#@25 Host name of keyserver.
(defvar mc-pgp-keyserver-address "pgp.ai.mit.edu" (#$ . 10781))
#@50 Port on which the keyserver's HTTP daemon lives.
(defvar mc-pgp-keyserver-port 11371 (#$ . 10875))
#@63 *Timeout, in seconds, for any particular key fetch operation.
(defvar mc-pgp-fetch-timeout 20 (#$ . -10980))
#@87 *List of strings which are filenames of public keyrings to search
when fetching keys.
(defvar mc-pgp-fetch-keyring-list nil (#$ . -11095))
#@70 Return the first key block in BUF as a string, or nil if none found.
(defalias 'mc-pgp-buffer-get-key #[(buf) "ŠÀ\nqˆebˆÃ\fÀÅ#…& Æ”‰…& ÃÀÅ#…& È	Æ•\"*‡" [nil start buf re-search-forward mc-pgp-key-begin-line t 0 mc-pgp-key-end-line buffer-substring-no-properties] 4 (#$ . 11240)])
(put (quote mc-pgp-buffer-get-key) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'mc-pgp-fetch-from-keyrings #[(id) "Á‰‰ÆŽÇÈ	A† 	@\"ˆ\n„… ƒ… ÊË!ÌÍ\fÏÐÑÒÓ@\"	A†9 	@&ÔÕ\"ˆÖ!×=ƒQ ØÙ\"ˆ‚A \fŠÁ\fqˆebˆÛÁÝ#…} Þ”‰…} ÛÁÝ#…} àÞ•\"+A‚ \n-‡" [mc-pgp-fetch-keyring-list nil key proc buf keyring-list ((byte-code "ƒ Á!ˆ\nƒ Ã\n!Ä=ƒ Å\n!ˆÁ‡" [buf kill-buffer proc process-status run interrupt-process] 2)) message "Fetching %s from keyrings..." id generate-new-buffer " *mailcrypt temp*" start-process "*PGP*" mc-pgp-path "-kxaf" "+verbose=0" "+batchmode" format "+pubring=%s" process-send-string "\n" process-status run accept-process-output 5 start re-search-forward mc-pgp-key-begin-line t 0 mc-pgp-key-end-line buffer-substring-no-properties] 10])
(defalias 'mc-pgp-fetch-from-http #[(id) "À‰ÃŽÄÅA† @#ˆÈÉ!ÊË\n\f$Í	ÎÏA†1 @\"ÑQ\"ˆÒ	!Ó=ƒF Ô	\"„6 \nŠÀ\nqˆebˆ×ÀÙ#…r Ú”‰…r ×ÀÙ#…r ÜÚ•\".‡" [nil connection buf ((byte-code "ƒ Á!ˆ\nƒ Ã\n!ˆÁ‡" [buf kill-buffer connection delete-process] 2)) message "Fetching %s via HTTP to %s..." id mc-pgp-keyserver-address generate-new-buffer " *mailcrypt temp*" open-network-stream "*key fetch*" mc-pgp-keyserver-port process-send-string "GET " format mc-pgp-keyserver-url-template "\n" process-status open accept-process-output mc-pgp-fetch-timeout start re-search-forward mc-pgp-key-begin-line t 0 mc-pgp-key-end-line buffer-substring-no-properties] 6])
(defalias 'mc-pgp-fetch-from-finger #[(id) "À‰‰‰ÅŽ@…: ÇÈ@\"…: ÉÊ@\"ˆ@Ë”Ë•O@Ì”Ì•OÍÎ!ÀÏÐ�-‡" [nil host user connection buf ((byte-code "ƒ Á!ˆ\nƒ Ã\n!ˆÁ‡" [buf kill-buffer connection delete-process] 2)) id string-match "^\\(.+\\)@\\([^@]+\\)$" message "Trying finger %s..." 1 2 generate-new-buffer " *mailcrypt temp*" (byte-code "ÀÁ\nÄ$ÆÇÉQ\"ˆÊ!Ë=ƒ  Ì\"„ \nŠÎ\nqˆebˆÐÎÒ#…L Ó”‰…L ÐÎÒ#…L ÕÓ•\"+‡" [open-network-stream "*key fetch*" buf host 79 connection process-send-string "/W " user "\n" process-status open accept-process-output mc-pgp-fetch-timeout nil start re-search-forward mc-pgp-key-begin-line t 0 mc-pgp-key-end-line buffer-substring-no-properties] 5) ((error))] 4])
#@202 List of methods to try when attempting to fetch a key.  Each
element is a function to call with an ID as argument.  See the
documentation for the function mc-pgp-fetch-key for a description of
the ID.
(defvar mc-pgp-fetch-methods (quote (mc-pgp-fetch-from-keyrings mc-pgp-fetch-from-finger mc-pgp-fetch-from-http)) (#$ . 13722))
#@428 Attempt to fetch a key for addition to PGP keyring.  Interactively,
prompt for string matching key to fetch.

Non-interactively, ID must be a pair.  The CAR must be a bare Email
address and the CDR a keyID (with "0x" prefix).  Either, but not
both, may be nil.

Return t if we think we were successful; nil otherwise.  Note that nil
is not necessarily an error, since we may have merely fired off an Email
request for the key.
(defalias 'mc-pgp-fetch-key #[(&optional id) "Á‰‰‰‰„ ÉÊ!ÁB„2 ƒ2 @!A‚ ;„? ËÌ!ˆÁ‚D ÍŽÎ‹).‡" [mc-pgp-fetch-methods nil args buf proc key process-connection-type methods id read-string "Fetch key for: " message "Key not found." ((byte-code "ƒ Á!ˆÁ‡" [buf kill-buffer] 2)) ((byte-code "ÀÁ!Ã\n!ˆÄ Å Æ¥Wƒ ÇÅ Æ¥Ä Z!ˆÈ	\nƒ0 Ë	ÌÍ\n\"C\"	ÎÏÐ\n	%ÓÔ\"ˆÓ\"ˆÓÔ\"ˆÖ!ˆ\nqˆ×!Ø=ƒk ÙÚ\"ˆebˆ‚V ÛÜ!…® Ë	Ý\"	ÎÏÐ\n	%ÓÔ\"ˆÓ\"ˆÓÔ\"ˆÖ!ˆ×!Ø=ƒ­ ÙÚ\"ˆ‚› Þ‡" [generate-new-buffer " *PGP Key Info*" buf pop-to-buffer window-height frame-height 2 enlarge-window ("-f" "+verbose=0" "+batchmode") args mc-pgp-alternate-keyring append format "+pubring=%s" apply start-process "*PGP*" mc-pgp-path proc process-send-string "\n" key process-send-eof process-status run accept-process-output 5 y-or-n-p "Add this key to keyring? " ("-ka") t] 6))] 6 (#$ . 14058) nil])
