diff options
Diffstat (limited to 'bits/bbdb-pgp.el')
-rw-r--r-- | bits/bbdb-pgp.el | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/bits/bbdb-pgp.el b/bits/bbdb-pgp.el deleted file mode 100644 index 3599138..0000000 --- a/bits/bbdb-pgp.el +++ /dev/null @@ -1,211 +0,0 @@ -;;; bbdb-pgp.el --- use BBDB to store PGP preferences - -;; Copyright (C) 1997,1999 Kevin Davidson - -;; Author: Kevin Davidson tkld@quadstone.com -;; Maintainer: Kevin Davidson tkld@quadstone.com -;; Created: 10 Nov 1997 -;; Keywords: PGP BBDB message mailcrypt - - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; A copy of the GNU General Public License can be obtained from this -;; program's author (send electronic mail to tkld@quadstone.com) or -;; from the Free Software Foundation, Inc.,59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;; LCD Archive Entry: -;; bbdb-pgp|Kevin Davidson|tkld@quadstone.com -;; |Use BBDB to store PGP preferences -;; |Date|Revision|~/packages/bbdb-pgp.el - -;;; Commentary: -;; -;; It is believed that encrypted mail works best if all mail between -;; individuals is encrypted - even concerning matters that are not -;; confidential. The reasoning is that confidential messages cannot -;; then be easily spotted and decryption efforts concentrated on them. -;; Some people therefore prefer to have all their email encrypted. -;; This package allows you to mark the BBDB entries for those -;; individuals so that messages will be encrypted when they are sent. -;; -;; These packages are required: BBDB, mailcrypt, message -;; -;; message.el is included with recent versions of Emacs. -;; You can use mail-mode as well as message-mode to send mail. - -;;; Usage: -;; (require 'bbdb-pgp) -;; -;; Then for all users who you want to send encrypted mail to, add the field -;; pgp-mail with the value `encrypt'. Alternatively you can add the value -;; `sign' if you just want to send signed messages. -;; -;; and possibly (if you do not want the PGP field printed out) -;; (add-hook 'bbdb-print-elide bbdb-pgp-field) -;; -;; The variable bbdb/pgp-default-action defines what to do if the recipient -;; is not in the BBDB. - -;;; TODO -;; Spot incoming PGP mail by hooking into mc-verify/decrypt and adding pgp-mail -;; field to BBDB entry (creating one if necessary); like bbdb-sc.el maintains -;; attribution prefs. - -;;; PGP Public Key -;; The author's public key is available from any public PGP keyserver -;; eg http://www.pgp.net/pgpnet/ -;; Fingerprint: 1F A9 3F 3E 90 F7 85 64 55 35 32 C8 75 91 3A E3 - - -;;; Code: - -(require 'message) -(require 'bbdb) -(condition-case nil (require 'mailcrypt) (error nil)) - -;;;###autoload -(defgroup bbdb-utilities-pgp nil - "Automatically sign and/or encrypt outgoing messages." - :link '(emacs-library-link :tag "Lisp Source File" "bbdb-pgp.el") - :group 'bbdb-utilities) - - -(defcustom bbdb/pgp-field 'pgp-mail - "*Field to use in BBDB to store PGP preferences. - -If this field's value in a record is \"encrypt\" then messages are -encrypted. If it is \"sign\" then messages are signed." - :type 'symbol - :tag "BBDB Field" - :require 'bbdb - :group 'bbdb-utilities-pgp) - -(defcustom bbdb/pgp-method 'mailcrypt - "*How to sign or encrypt messages. - -'mailcrypt means use Mailcrypt. -'mml-pgp means add MML tags for Message to use old PGP format -'mml-pgpmime means add MML tags for Message to use PGP/MIME -'mml-smime means add MML tags for Message to use S/MIME" - :type '(choice - (const :tag "Mailcrypt" mailcrypt :require 'mailcrypt) - (const :tag "MML PGP" mml-pgp :require 'mml) - (const :tag "MML PGP/MIME" mml-pgpmime :require 'mml) - (const :tag "MML S/MIME" mml-smime :require 'mml)) - :tag "Signing/Encryption Method" - :group 'bbdb-utilities-pgp) - -(defcustom bbdb/pgp-default-action nil - "*Default action when sending a message and the recipient is not in BBDB. - -nil means do nothing. -'encrypt means encrypt message. -'sign means sign message." - :type '(choice - (const :tag "Do Nothing") - (const :tag "Encrypt" encrypt) - (const :tag "Sign" sign)) - :tag "Default Action" - :group 'bbdb-utilities-pgp) - -(defcustom bbdb/pgp-quiet nil - "*Do not ask for confirmation on pgp-action. - -nil means normal messages/questions. -'t means to be quiet." - :type '(choice - (const :tag "normal") - (const :tag "quiet" t)) - :tag "Quietness" - :group 'bbdb-utilities-pgp) - -(defun bbdb/pgp-get-pgp (name address) - "Look up user NAME and ADDRESS in BBDB and return the PGP preference." - (let* ((record (bbdb-search-simple name address)) - (pgp (and record - (bbdb-record-getprop record bbdb/pgp-field)))) - pgp)) - -(defun bbdb/pgp-sign () - "Sign a message. -bbdb/pgp-method controls the method used." - (cond - ((eq bbdb/pgp-method 'mailcrypt) - (mc-sign 0)) - ((eq bbdb/pgp-method 'mml-pgp) - (mml-secure-message-sign-pgp)) - ((eq bbdb/pgp-method 'mml-pgpmime) - (mml-secure-message-sign-pgpmime)) - ((eq bbdb/pgp-method 'mml-smime) - (mml-secure-message-sign-smime)) - (t - (error 'invalid-state "bbdb/pgp-method")))) - -(defun bbdb/pgp-encrypt () - "Encrypt and sign a message. -bbdb/pgp-method controls the method used." - (cond - ((eq bbdb/pgp-method 'mailcrypt) - (mc-encrypt 0)) - ((eq bbdb/pgp-method 'mml-pgp) - (mml-secure-message-encrypt-pgp)) - ((eq bbdb/pgp-method 'mml-pgpmime) - (mml-secure-message-encrypt-pgpmime)) - ((eq bbdb/pgp-method 'mml-smime) - (mml-secure-message-encrypt-smime)) - (t - (error 'invalid-state "bbdb/pgp-method")))) - -(defun bbdb/pgp-hook-fun () - "Function to be added to message-send-hook -Uses PGP to encrypt messages to users marked in the BBDB with the -field `bbdb/pgp-field'. -The user is prompted before encryption or signing." - (save-restriction - (save-excursion - (message-narrow-to-headers) - (and (featurep 'mailalias) - (not (featurep 'mailabbrev)) - mail-aliases - (expand-mail-aliases (point-min) (point-max))) - (let* ((to-field (mail-fetch-field "To" nil t)) - (address (mail-extract-address-components (or to-field "")))) - (widen) - (if (not (equal address '(nil nil))) - (let ((pgp-p (bbdb/pgp-get-pgp (car address) (car (cdr address))))) - (cond - ((string= "encrypt" pgp-p) - (and (or bbdb/pgp-quiet - (y-or-n-p "Encrypt message? ")) - (bbdb/pgp-encrypt))) - ((string= "sign" pgp-p) - (and (or bbdb/pgp-quiet - (y-or-n-p "Sign message? ")) - (bbdb/pgp-sign))) - (t - (cond - ((eq bbdb/pgp-default-action 'encrypt) - (and (y-or-n-p "Encrypt message? ") - (bbdb/pgp-encrypt))) - ((eq bbdb/pgp-default-action 'sign) - (and (y-or-n-p "Sign message? ") - (bbdb/pgp-sign))) - (t - nil)))))))))) - -(add-hook 'message-send-hook 'bbdb/pgp-hook-fun) -(add-hook 'mail-send-hook 'bbdb/pgp-hook-fun) - -(provide 'bbdb-pgp) - -;;; bbdb-pgp.el ends here |