Annotation of pgp/contrib/emacs/pgp.el3, revision 1.1

1.1     ! root        1: Newsgroups: alt.security.pgp
        !             2: From: [email protected] (Michael P. Frank)
        !             3: Subject: New version of Emacs interface to PGP
        !             4: In-Reply-To: [email protected]'s message of Wed, 3 Mar 1993 14:06:47 +0000
        !             5: Organization: MIT Laboratory for Computer Science
        !             6: Distribution: alt
        !             7: Date: Thu, 4 Mar 1993 22:01:03 GMT
        !             8: 
        !             9: Here's a somewhat improved version of my Emacs interface to PGP,
        !            10: pgp.el-0.2.
        !            11: 
        !            12: Some bugs are fixed since the last version. The main improvement is
        !            13: that if you have ange-ftp loaded, then pgp-set-passphrase will use it
        !            14: to prompt for your passphrase invisibly.
        !            15: 
        !            16: After loading this up, type C-c p h for a usage summary.
        !            17: 
        !            18: Consider this a beta release. Some egregious known bugs are:
        !            19: 
        !            20:        * Other users on the system can see your pass phrase using
        !            21:                "ps" and fortuitous timing.
        !            22:        * After decrypting, pgp's output "Pass phrase is good." is
        !            23:                stuck on the beginning of the plaintext.
        !            24: 
        !            25: Mike
        !            26: ========== cut here =============
        !            27: ;;;
        !            28: ;;; pgp.el-0.2 -- Emacs support for PGP 2.1
        !            29: ;;;
        !            30: ;;; Changes from 0.1:
        !            31: ;;;   pgp-clear-passphrase bug fixed.
        !            32: ;;;   If ange-ftp is loaded, password is entered invisibly.
        !            33: ;;;   On-line help.
        !            34: ;;;   Immediately after signing in place, C-c p k can be used to delete
        !            35: ;;;     pgp status garbage.
        !            36: ;;;
        !            37: ;;; 0.1 Changes from 0.0:
        !            38: ;;;   Inconsistent naming of pgp-set-passphrase fixed.
        !            39: ;;;
        !            40: ;;;          WARNING: Security Holes!
        !            41: ;;;
        !            42: ;;; People can see your PGP passphrase if:
        !            43: ;;; * You don't have ange-ftp and they see you typing in your passphrase.
        !            44: ;;; * They (intentionally or accidentally) do a "ps" (with appropriate options)
        !            45: ;;;     on your machine while you're decrypting/signing.
        !            46: ;;; * They type C-h v pgp-passphrase after you've entered it.
        !            47: ;;;
        !            48: ;;; Plus the system suffers from all the normal Unix and X-windows
        !            49: ;;; security holes.
        !            50: ;;; 
        !            51: ;;; Please report any bugs to [email protected].
        !            52: ;;; You can finger me for my public key.
        !            53: ;;;
        !            54: 
        !            55: (defvar pgp-passphrase nil
        !            56:   "Variable used internally by the Emacs PGP interface to hold
        !            57: the user's pass phrase.")
        !            58: 
        !            59: (defun pgp-set-passphrase ()
        !            60:   "Prompts for PGP pass phrase. If ange-ftp is loaded, password is invisible."
        !            61:   (interactive)
        !            62:   (setq pgp-passphrase
        !            63:        (if (boundp 'ange-ftp-version)
        !            64:            (ange-ftp-read-passwd "PGP pass phrase (invisible): ")
        !            65:          (read-string "PGP pass phrase (not invisible): "))))
        !            66: 
        !            67: (defun pgp-clear-passphrase ()
        !            68:   "Clears the PGP pass phrase."
        !            69:   (interactive)
        !            70:   (setq pgp-passphrase nil))
        !            71: 
        !            72: (defun pgp-ensure-passphrase ()
        !            73:   "Not an interactive command. If the passphrase is not set, prompts for it."
        !            74:   (if (not pgp-passphrase)
        !            75:       (call-interactively 'pgp-set-passphrase)))
        !            76: 
        !            77: (defun pgp-encrypt-region (start end pgp-user-id &optional flag)
        !            78:   "Encrypt the region using PGP. Prompts for a PGP user ID.
        !            79: With prefix arg, puts result in serparate window.
        !            80: Noninteractive args are START, END, PGP-USER-ID, and optional FLAG."
        !            81:   (interactive "r\nsUser ID to encrypt to: \nP")
        !            82:   (shell-command-on-region start end (concat "pgp -fea " pgp-user-id)
        !            83:                           (not flag)))
        !            84: 
        !            85: (defun pgp-decrypt-region (start end &optional flag)
        !            86:   "Decrypt the region using PGP. Prompts for the user's pass phrase,
        !            87: if not already known.  With prefix arg, puts result in separate window.
        !            88: Noninteractive args are START and END and optional FLAG."
        !            89:   (interactive "r\nP")
        !            90:   (pgp-ensure-passphrase)
        !            91:   (shell-command-on-region start end
        !            92:                           (concat "pgp -f -z \"" pgp-passphrase "\"")
        !            93:                           (not flag)))
        !            94: 
        !            95: (defun pgp-sign-and-encrypt-region (start end pgp-user-id &optional flag)
        !            96:   "Sign and encrypt the region using PGP. Prompts for a user to
        !            97: encrypt to and a pass phrase, if not already known.
        !            98: With prefix arg puts result in separate window. 
        !            99: Noninteractive args are START, END, and PGP-USER-ID, and optional FLAG."
        !           100:   (interactive "r\nsUser ID to encrypt to: \nP")
        !           101:   (pgp-ensure-passphrase)
        !           102:   (shell-command-on-region start end (concat "pgp -safe " pgp-user-id
        !           103:                                             " -z \"" pgp-passphrase "\"")
        !           104:                           (not flag)))
        !           105: 
        !           106: (defun pgp-sign-region (start end &optional flag)
        !           107:   "Sign the region using PGP. Prompts for a pass phrase, if not already
        !           108: Known. With prefix arg puts result in separate window.
        !           109: Noninteractive args are START and END and optional FLAG."
        !           110:   (interactive "r\nP")
        !           111:   (pgp-ensure-passphrase)
        !           112:   (shell-command-on-region start end (concat "pgp -saft +clearsig=on"
        !           113:                                             " -z \"" pgp-passphrase "\"")
        !           114:                           (not flag)))
        !           115: 
        !           116: (defun pgp-verify-region (start end)
        !           117:   "Verify the signature on the text in the given region using PGP."
        !           118:   (interactive "r")
        !           119:   (shell-command-on-region start end "pgp -f"))
        !           120: 
        !           121: ;; kill the status information immediately after running PGP on a region
        !           122: ;; (not very robust yet).
        !           123: (fset 'pgp-kill-status
        !           124:    "-----
        !           125: 
        !           126: (defun pgp-describe ()
        !           127:   "Describe the PGP package.
        !           128: 
        !           129: Quick usage summary:
        !           130: 
        !           131: Default
        !           132: Key
        !           133: Binding  Command name                 Description
        !           134: =======  ===========================  =========================================
        !           135: C-c p p  pgp-set-passphrase           Prompts for entry of passphrase. With
        !           136:                                        ange-ftp loaded, this is invisible.
        !           137: C-c p c  pgp-clear-passphrase         Clears the passphrase from emacs memory.
        !           138:                                        (Not very thoroughly; see below.)
        !           139: C-c p e  pgp-encrypt-region           Prompts for recipient. Output in place
        !           140:                                        unless prefixed.
        !           141: C-c p d  pgp-decrypt-region           Prompts for passphrase if unknown.
        !           142:                                        Output in place unless prefixed.
        !           143: C-c p s  pgp-sign-region              Uses CLEARSIG. Prompts for passphrase
        !           144:                                        if unknown. Output in place unless C-u.
        !           145: C-c p S  pgp-sign-and-encrypt-region  Prompts for recipient and passphrase if
        !           146:                                        unknown. Output in place unless C-u.
        !           147: C-c p v  pgp-verify-region            Checks signature for validity. Output in
        !           148:                                        separate window.
        !           149: C-c p k  pgp-kill-status              Done immediately after C-c p s,
        !           150:                                        kills the PGP status information.
        !           151: C-c p h  pgp-describe                 Show this documentation.
        !           152: 
        !           153: WARNING: Security Holes:
        !           154: People can see your PGP passphrase if:
        !           155: * You don't have ange-ftp and they see you typing in your passphrase.
        !           156: * They (intentionally or accidentally) do a \"ps\" (with appropriate options)
        !           157:     on your machine while you're decrypting/signing.
        !           158: * They type C-h v pgp-passphrase after you've entered it.
        !           159: 
        !           160: Plus the system suffers from all the normal Unix and X-windows
        !           161: security holes.
        !           162: 
        !           163: More documentation to come."
        !           164:   (interactive)
        !           165:   (describe-function 'pgp-describe))
        !           166: 
        !           167: (global-set-key "\C-cpp" 'pgp-set-passphrase)
        !           168: (global-set-key "\C-cpc" 'pgp-clear-passphrase)
        !           169: (global-set-key "\C-cpe" 'pgp-encrypt-region)
        !           170: (global-set-key "\C-cpd" 'pgp-decrypt-region)
        !           171: (global-set-key "\C-cps" 'pgp-sign-region)
        !           172: (global-set-key "\C-cpS" 'pgp-sign-and-encrypt-region)
        !           173: (global-set-key "\C-cpv" 'pgp-verify-region)
        !           174: (global-set-key "\C-cpk" 'pgp-kill-status)
        !           175: (global-set-key "\C-cph" 'pgp-describe)
        !           176: (global-set-key "\C-cp?" 'pgp-describe)
        !           177: --
        !           178:    , ,                       __               MIT Lab for Computer Science
        !           179:   /|/| .  _ |_   _   _  |   |_  _  _  ,_  |,  [email protected]
        !           180:  / | | | (_ | | (_| (-' |   |  |  (_| | | |\  (Finger for PGP Public Key)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.