mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-25 07:28:20 +00:00
Split EasyPG libraries into outline sections
* lisp/epa-dired.el: lisp/epa-file.el: lisp/epa-hook.el: lisp/epa-mail.el: lisp/epa.el: lisp/epg-config.el: lisp/epg.el: Split into outline sections. * lisp/epg.el (epg-error): Move definition.
This commit is contained in:
parent
562bbd0a36
commit
c5b9d2a4b4
@ -1,4 +1,5 @@
|
||||
;;; epa-dired.el --- the EasyPG Assistant, dired extension -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Daiki Ueno <ueno@unixuser.org>
|
||||
|
@ -1,4 +1,5 @@
|
||||
;;; epa-file.el --- the EasyPG Assistant, transparent file encryption -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Daiki Ueno <ueno@unixuser.org>
|
||||
@ -21,10 +22,13 @@
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Code:
|
||||
;;; Dependencies
|
||||
|
||||
(require 'epa)
|
||||
(require 'epa-hook)
|
||||
|
||||
;;; Options
|
||||
|
||||
(defcustom epa-file-cache-passphrase-for-symmetric-encryption nil
|
||||
"If non-nil, cache passphrase for symmetric encryption.
|
||||
|
||||
@ -49,6 +53,8 @@ encryption is used."
|
||||
(const :tag "Don't ask" silent))
|
||||
:group 'epa-file)
|
||||
|
||||
;;; Other
|
||||
|
||||
(defvar epa-file-passphrase-alist nil)
|
||||
|
||||
(defun epa-file-passphrase-callback-function (context key-id file)
|
||||
@ -72,6 +78,8 @@ encryption is used."
|
||||
passphrase))))
|
||||
(epa-passphrase-callback-function context key-id file)))
|
||||
|
||||
;;; File Handler
|
||||
|
||||
(defvar epa-inhibit nil
|
||||
"Non-nil means don't try to decrypt .gpg files when operating on them.")
|
||||
|
||||
@ -311,6 +319,8 @@ If no one is selected, symmetric encryption will be performed. "
|
||||
(message "Wrote %s" buffer-file-name))))
|
||||
(put 'write-region 'epa-file 'epa-file-write-region)
|
||||
|
||||
;;; Commands
|
||||
|
||||
(defun epa-file-select-keys ()
|
||||
"Select recipients for encryption."
|
||||
(interactive)
|
||||
|
@ -1,4 +1,5 @@
|
||||
;;; epa-hook.el --- preloaded code to enable epa-file.el -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Daiki Ueno <ueno@unixuser.org>
|
||||
|
@ -1,4 +1,5 @@
|
||||
;;; epa-mail.el --- the EasyPG Assistant, minor-mode for mail composer -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Daiki Ueno <ueno@unixuser.org>
|
||||
@ -21,10 +22,13 @@
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Code:
|
||||
;;; Dependencies
|
||||
|
||||
(require 'epa)
|
||||
(require 'mail-utils)
|
||||
|
||||
;;; Local Mode
|
||||
|
||||
(defvar epa-mail-mode-map
|
||||
(let ((keymap (make-sparse-keymap)))
|
||||
(define-key keymap "\C-c\C-ed" 'epa-mail-decrypt)
|
||||
@ -50,6 +54,8 @@
|
||||
"A minor-mode for composing encrypted/clearsigned mails."
|
||||
nil " epa-mail" epa-mail-mode-map)
|
||||
|
||||
;;; Utilities
|
||||
|
||||
(defun epa-mail--find-usable-key (keys usage)
|
||||
"Find a usable key from KEYS for USAGE.
|
||||
USAGE would be `sign' or `encrypt'."
|
||||
@ -64,6 +70,8 @@ USAGE would be `sign' or `encrypt'."
|
||||
(setq pointer (cdr pointer))))
|
||||
(setq keys (cdr keys)))))
|
||||
|
||||
;;; Commands
|
||||
|
||||
;;;###autoload
|
||||
(defun epa-mail-decrypt ()
|
||||
"Decrypt OpenPGP armors in the current buffer.
|
||||
@ -241,6 +249,8 @@ The buffer is expected to contain a mail message."
|
||||
(interactive)
|
||||
(epa-import-armor-in-region (point-min) (point-max)))
|
||||
|
||||
;;; Global Mode
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode epa-global-mail-mode
|
||||
"Minor mode to hook EasyPG into Mail mode."
|
||||
|
24
lisp/epa.el
24
lisp/epa.el
@ -21,6 +21,7 @@
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Code:
|
||||
;;; Dependencies
|
||||
|
||||
(require 'epg)
|
||||
(require 'font-lock)
|
||||
@ -30,6 +31,8 @@
|
||||
(require 'wid-edit))
|
||||
(require 'derived)
|
||||
|
||||
;;; Options
|
||||
|
||||
(defgroup epa nil
|
||||
"The EasyPG Assistant"
|
||||
:version "23.1"
|
||||
@ -73,6 +76,8 @@ The command `epa-mail-encrypt' uses this."
|
||||
:group 'epa
|
||||
:version "24.4")
|
||||
|
||||
;;; Faces
|
||||
|
||||
(defgroup epa-faces nil
|
||||
"Faces for epa-mode."
|
||||
:version "23.1"
|
||||
@ -146,6 +151,8 @@ The command `epa-mail-encrypt' uses this."
|
||||
:type '(repeat (cons symbol face))
|
||||
:group 'epa-faces)
|
||||
|
||||
;;; Variables
|
||||
|
||||
(defvar epa-font-lock-keywords
|
||||
'(("^\\*"
|
||||
(0 'epa-mark))
|
||||
@ -252,6 +259,8 @@ You should bind this variable with `let', but do not set it globally.")
|
||||
|
||||
(defvar epa-exit-buffer-function #'quit-window)
|
||||
|
||||
;;; Key Widget
|
||||
|
||||
(define-widget 'epa-key 'push-button
|
||||
"Button for representing an epg-key object."
|
||||
:format "%[%v%]"
|
||||
@ -293,6 +302,8 @@ You should bind this variable with `let', but do not set it globally.")
|
||||
(epg-sub-key-id (car (epg-key-sub-key-list
|
||||
(widget-get widget :value))))))
|
||||
|
||||
;;; Modes
|
||||
|
||||
(define-derived-mode epa-key-list-mode special-mode "EPA Keys"
|
||||
"Major mode for `epa-list-keys'."
|
||||
(buffer-disable-undo)
|
||||
@ -316,6 +327,9 @@ You should bind this variable with `let', but do not set it globally.")
|
||||
(setq truncate-lines t
|
||||
buffer-read-only t))
|
||||
|
||||
;;; Commands
|
||||
;;;; Marking
|
||||
|
||||
(defun epa-mark-key (&optional arg)
|
||||
"Mark a key on the current line.
|
||||
If ARG is non-nil, unmark the key."
|
||||
@ -338,11 +352,15 @@ If ARG is non-nil, mark the key."
|
||||
(interactive "P")
|
||||
(epa-mark-key (not arg)))
|
||||
|
||||
;;;; Quitting
|
||||
|
||||
(defun epa-exit-buffer ()
|
||||
"Exit the current buffer using `epa-exit-buffer-function'."
|
||||
(interactive)
|
||||
(funcall epa-exit-buffer-function))
|
||||
|
||||
;;;; Listing and Selecting
|
||||
|
||||
(defun epa--insert-keys (keys)
|
||||
(save-excursion
|
||||
(save-restriction
|
||||
@ -505,6 +523,8 @@ If SECRET is non-nil, list secret keys instead of public keys."
|
||||
(let ((keys (epg-list-keys context names secret)))
|
||||
(epa--select-keys prompt keys)))
|
||||
|
||||
;;;; Key Details
|
||||
|
||||
(defun epa-show-key ()
|
||||
"Show a key on the current line."
|
||||
(interactive)
|
||||
@ -591,6 +611,8 @@ If SECRET is non-nil, list secret keys instead of public keys."
|
||||
(goto-char (point-min))
|
||||
(pop-to-buffer (current-buffer))))
|
||||
|
||||
;;;; Encryption and Signatures
|
||||
|
||||
(defun epa-display-info (info)
|
||||
(if epa-popup-info-window
|
||||
(save-selected-window
|
||||
@ -1182,6 +1204,8 @@ If no one is selected, symmetric encryption will be performed. ")
|
||||
'start-open t
|
||||
'end-open t)))))
|
||||
|
||||
;;;; Key Management
|
||||
|
||||
;;;###autoload
|
||||
(defun epa-delete-keys (keys &optional allow-secret)
|
||||
"Delete selected KEYS."
|
||||
|
@ -22,6 +22,7 @@
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Code:
|
||||
;;; Prelude
|
||||
|
||||
(eval-when-compile (require 'cl-lib))
|
||||
|
||||
@ -34,6 +35,8 @@
|
||||
(define-obsolete-variable-alias 'epg-bug-report-address
|
||||
'report-emacs-bug-address "27.1")
|
||||
|
||||
;;; Options
|
||||
|
||||
(defgroup epg ()
|
||||
"Interface to the GNU Privacy Guard (GnuPG)."
|
||||
:tag "EasyPG"
|
||||
@ -106,6 +109,8 @@ through the minibuffer, instead of external Pinentry program."
|
||||
Note that the buffer name starts with a space."
|
||||
:type 'boolean)
|
||||
|
||||
;;; Constants
|
||||
|
||||
(defconst epg-gpg-minimum-version "1.4.3")
|
||||
(defconst epg-gpg2-minimum-version "2.1.6")
|
||||
|
||||
@ -133,6 +138,8 @@ The first element of each entry is protocol symbol, which is
|
||||
either `OpenPGP' or `CMS'. The second element is a function
|
||||
which constructs a configuration object (actually a plist).")
|
||||
|
||||
;;; "Configuration"
|
||||
|
||||
(defvar epg--configurations nil)
|
||||
|
||||
;;;###autoload
|
||||
|
27
lisp/epg.el
27
lisp/epg.el
@ -1,4 +1,5 @@
|
||||
;;; epg.el --- the EasyPG Library -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 1999-2000, 2002-2020 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Daiki Ueno <ueno@unixuser.org>
|
||||
@ -21,10 +22,15 @@
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Code:
|
||||
;;; Prelude
|
||||
|
||||
(require 'epg-config)
|
||||
(eval-when-compile (require 'cl-lib))
|
||||
|
||||
(define-error 'epg-error "GPG error")
|
||||
|
||||
;;; Variables
|
||||
|
||||
(defvar epg-user-id nil
|
||||
"GnuPG ID of your default identity.")
|
||||
|
||||
@ -41,6 +47,8 @@
|
||||
(defvar epg-agent-file nil)
|
||||
(defvar epg-agent-mtime nil)
|
||||
|
||||
;;; Enums
|
||||
|
||||
;; from gnupg/common/openpgpdefs.h
|
||||
(defconst epg-cipher-algorithm-alist
|
||||
'((0 . "NONE")
|
||||
@ -169,7 +177,8 @@
|
||||
|
||||
(defvar epg-prompt-alist nil)
|
||||
|
||||
(define-error 'epg-error "GPG error")
|
||||
;;; Structs
|
||||
;;;; Data Struct
|
||||
|
||||
(cl-defstruct (epg-data
|
||||
(:constructor nil)
|
||||
@ -180,6 +189,8 @@
|
||||
(file nil :read-only t)
|
||||
(string nil :read-only t))
|
||||
|
||||
;;;; Context Struct
|
||||
|
||||
(cl-defstruct (epg-context
|
||||
(:constructor nil)
|
||||
(:constructor epg-context--make
|
||||
@ -218,6 +229,8 @@
|
||||
(error-output "")
|
||||
error-buffer)
|
||||
|
||||
;;;; Context Methods
|
||||
|
||||
;; This is not an alias, just so we can mark it as autoloaded.
|
||||
;;;###autoload
|
||||
(defun epg-make-context (&optional protocol armor textmode include-certs
|
||||
@ -281,6 +294,8 @@ callback data (if any)."
|
||||
(declare (obsolete setf "25.1"))
|
||||
(setf (epg-context-signers context) signers))
|
||||
|
||||
;;;; Other Structs
|
||||
|
||||
(cl-defstruct (epg-signature
|
||||
(:constructor nil)
|
||||
(:constructor epg-make-signature
|
||||
@ -385,6 +400,8 @@ callback data (if any)."
|
||||
secret-unchanged not-imported
|
||||
imports)
|
||||
|
||||
;;; Functions
|
||||
|
||||
(defun epg-context-result-for (context name)
|
||||
"Return the result of CONTEXT associated with NAME."
|
||||
(cdr (assq name (epg-context-result context))))
|
||||
@ -850,6 +867,8 @@ callback data (if any)."
|
||||
(format "Untrusted key %s %s. Use anyway? " key-id user-id))
|
||||
"Use untrusted key anyway? ")))
|
||||
|
||||
;;; Status Functions
|
||||
|
||||
(defun epg--status-GET_BOOL (context string)
|
||||
(let (inhibit-quit)
|
||||
(condition-case nil
|
||||
@ -1225,6 +1244,8 @@ callback data (if any)."
|
||||
(epg-context-result-for context 'import-status)))
|
||||
(epg-context-set-result-for context 'import-status nil)))
|
||||
|
||||
;;; Functions
|
||||
|
||||
(defun epg-passphrase-callback-function (context key-id _handback)
|
||||
(declare (obsolete epa-passphrase-callback-function "23.1"))
|
||||
(if (eq key-id 'SYM)
|
||||
@ -1294,6 +1315,8 @@ callback data (if any)."
|
||||
(if (aref line 6)
|
||||
(epg--time-from-seconds (aref line 6)))))
|
||||
|
||||
;;; Public Functions
|
||||
|
||||
(defun epg-list-keys (context &optional name mode)
|
||||
"Return a list of epg-key objects matched with NAME.
|
||||
If MODE is nil or `public', only public keyring should be searched.
|
||||
@ -2023,6 +2046,8 @@ If you are unsure, use synchronous version of this function
|
||||
(epg-errors-to-string errors))))))
|
||||
(epg-reset context)))
|
||||
|
||||
;;; Decode Functions
|
||||
|
||||
(defun epg--decode-percent-escape (string)
|
||||
(setq string (encode-coding-string string 'raw-text))
|
||||
(let ((index 0))
|
||||
|
Loading…
Reference in New Issue
Block a user