(setq epg-pending-status-list nil))
(if (and symbol
(fboundp symbol))
- (funcall symbol process string)))))
+ (funcall symbol epg-context string)))))
(forward-line))
(setq epg-read-point (point)))))
(file-exists-p (epg-context-output-file context)))
(delete-file (epg-context-output-file context))))
-(defun epg--status-USERID_HINT (process string)
+(defun epg--status-USERID_HINT (context string)
(if (string-match "\\`\\([^ ]+\\) \\(.*\\)" string)
(let* ((key-id (match-string 1 string))
(user-id (match-string 2 string))
(setq epg-user-id-alist (cons (cons key-id user-id)
epg-user-id-alist))))))
-(defun epg--status-NEED_PASSPHRASE (process string)
+(defun epg--status-NEED_PASSPHRASE (context string)
(if (string-match "\\`\\([^ ]+\\)" string)
(setq epg-key-id (match-string 1 string))))
-(defun epg--status-NEED_PASSPHRASE_SYM (process string)
+(defun epg--status-NEED_PASSPHRASE_SYM (context string)
(setq epg-key-id 'SYM))
-(defun epg--status-NEED_PASSPHRASE_PIN (process string)
+(defun epg--status-NEED_PASSPHRASE_PIN (context string)
(setq epg-key-id 'PIN))
-(defun epg--status-GET_HIDDEN (process string)
+(defun epg--status-GET_HIDDEN (context string)
(if (and epg-key-id
(string-match "\\`passphrase\\." string))
(let (inhibit-quit
(progn
(setq passphrase
(funcall
- (if (consp (epg-context-passphrase-callback
- epg-context))
- (car (epg-context-passphrase-callback
- epg-context))
- (epg-context-passphrase-callback epg-context))
- epg-context
+ (if (consp (epg-context-passphrase-callback context))
+ (car (epg-context-passphrase-callback context))
+ (epg-context-passphrase-callback context))
+ context
epg-key-id
- (if (consp (epg-context-passphrase-callback
- epg-context))
- (cdr (epg-context-passphrase-callback
- epg-context)))))
+ (if (consp (epg-context-passphrase-callback context))
+ (cdr (epg-context-passphrase-callback context)))))
(when passphrase
(setq passphrase-with-new-line (concat passphrase "\n"))
(fillarray passphrase 0)
(setq passphrase nil)
- (process-send-string process passphrase-with-new-line)))
+ (process-send-string (epg-context-process context)
+ passphrase-with-new-line)))
(quit
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons '(quit)
- (epg-context-result-for epg-context 'error)))
- (delete-process process)))
+ (epg-context-result-for context 'error)))
+ (delete-process (epg-context-process context))))
(if passphrase
(fillarray passphrase 0))
(if passphrase-with-new-line
(fillarray passphrase-with-new-line 0))))))
-(defun epg--status-GET_BOOL (process string)
+(defun epg--status-GET_BOOL (context string)
(let ((entry (assoc string epg-prompt-alist))
inhibit-quit)
(condition-case nil
(if (y-or-n-p (if entry (cdr entry) (concat string "? ")))
- (process-send-string process "y\n")
- (process-send-string process "n\n"))
+ (process-send-string (epg-context-process context) "y\n")
+ (process-send-string (epg-context-process context) "n\n"))
(quit
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons '(quit)
- (epg-context-result-for epg-context 'error)))
- (delete-process process)))))
+ (epg-context-result-for context 'error)))
+ (delete-process (epg-context-process context))))))
-(defun epg--status-GET_LINE (process string)
+(defun epg--status-GET_LINE (context string)
(let ((entry (assoc string epg-prompt-alist))
inhibit-quit)
(condition-case nil
- (process-send-string
- process
- (concat (read-string (if entry (cdr entry) (concat string ": ")))
- "\n"))
+ (process-send-string (epg-context-process context)
+ (concat (read-string
+ (if entry
+ (cdr entry)
+ (concat string ": ")))
+ "\n"))
(quit
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons '(quit)
- (epg-context-result-for epg-context 'error)))
- (delete-process process)))))
+ (epg-context-result-for context 'error)))
+ (delete-process (epg-context-process context))))))
-(defun epg--status-*SIG (status string)
+(defun epg--status-*SIG (context status string)
(if (string-match "\\`\\([^ ]+\\) \\(.*\\)" string)
(let* ((key-id (match-string 1 string))
(user-id (match-string 2 string))
(entry (assoc key-id epg-user-id-alist)))
(epg-context-set-result-for
- epg-context
+ context
'verify
(cons (epg-make-signature status key-id)
- (epg-context-result-for epg-context 'verify)))
- (if (eq (epg-context-protocol epg-context) 'CMS)
+ (epg-context-result-for context 'verify)))
+ (if (eq (epg-context-protocol context) 'CMS)
(condition-case nil
(setq user-id (epg-dn-from-string user-id))
(error)))
(setq epg-user-id-alist
(cons (cons key-id user-id) epg-user-id-alist))))
(epg-context-set-result-for
- epg-context
+ context
'verify
(cons (epg-make-signature status)
- (epg-context-result-for epg-context 'verify)))))
+ (epg-context-result-for context 'verify)))))
-(defun epg--status-GOODSIG (process string)
- (epg--status-*SIG 'good string))
+(defun epg--status-GOODSIG (context string)
+ (epg--status-*SIG context 'good string))
-(defun epg--status-EXPSIG (process string)
- (epg--status-*SIG 'expired string))
+(defun epg--status-EXPSIG (context string)
+ (epg--status-*SIG context 'expired string))
-(defun epg--status-EXPKEYSIG (process string)
- (epg--status-*SIG 'expired-key string))
+(defun epg--status-EXPKEYSIG (context string)
+ (epg--status-*SIG context 'expired-key string))
-(defun epg--status-REVKEYSIG (process string)
- (epg--status-*SIG 'revoked-key string))
+(defun epg--status-REVKEYSIG (context string)
+ (epg--status-*SIG context 'revoked-key string))
-(defun epg--status-BADSIG (process string)
- (epg--status-*SIG 'bad string))
+(defun epg--status-BADSIG (context string)
+ (epg--status-*SIG context 'bad string))
-(defun epg--status-NO_PUBKEY (process string)
- (let ((signature (car (epg-context-result-for epg-context 'verify))))
+(defun epg--status-NO_PUBKEY (context string)
+ (let ((signature (car (epg-context-result-for context 'verify))))
(if (and signature
- (eq (epg-signature-status signature) 'error))
+ (eq (epg-signature-status signature) 'error)
+ (equal (epg-signature-key-id signature) string))
(epg-signature-set-status signature 'no-pubkey))))
-(defun epg--status-ERRSIG (process string)
+(defun epg--status-ERRSIG (context string)
(if (string-match "\\`\\([^ ]+\\) \\([0-9]+\\) \\([0-9]+\\) \
\\([0-9A-Fa-f][0-9A-Fa-f]\\) \\([^ ]+\\) \\([0-9]+\\)"
string)
(let ((signature (epg-make-signature 'error)))
- (epg-context-set-result-for epg-context 'verify (list signature))
+ (epg-context-set-result-for context 'verify (list signature))
(epg-signature-set-key-id
signature
(match-string 1 string))
signature
(match-string 5 string)))))
-(defun epg--status-VALIDSIG (process string)
- (let ((signature (car (epg-context-result-for epg-context 'verify))))
+(defun epg--status-VALIDSIG (context string)
+ (let ((signature (car (epg-context-result-for context 'verify))))
(when (and signature
(eq (epg-signature-status signature) 'good)
(string-match "\\`\\([^ ]+\\) [^ ]+ \\([^ ]+\\) \\([^ ]+\\) \
signature
(string-to-number (match-string 7 string) 16)))))
-(defun epg--status-TRUST_UNDEFINED (process string)
- (let ((signature (car (epg-context-result-for epg-context 'verify))))
+(defun epg--status-TRUST_UNDEFINED (context string)
+ (let ((signature (car (epg-context-result-for context 'verify))))
(if (and signature
(eq (epg-signature-status signature) 'good))
(epg-signature-set-validity signature 'undefined))))
-(defun epg--status-TRUST_NEVER (process string)
- (let ((signature (car (epg-context-result-for epg-context 'verify))))
+(defun epg--status-TRUST_NEVER (context string)
+ (let ((signature (car (epg-context-result-for context 'verify))))
(if (and signature
(eq (epg-signature-status signature) 'good))
(epg-signature-set-validity signature 'never))))
-(defun epg--status-TRUST_MARGINAL (process string)
- (let ((signature (car (epg-context-result-for epg-context 'verify))))
+(defun epg--status-TRUST_MARGINAL (context string)
+ (let ((signature (car (epg-context-result-for context 'verify))))
(if (and signature
(eq (epg-signature-status signature) 'marginal))
(epg-signature-set-validity signature 'marginal))))
-(defun epg--status-TRUST_FULLY (process string)
- (let ((signature (car (epg-context-result-for epg-context 'verify))))
+(defun epg--status-TRUST_FULLY (context string)
+ (let ((signature (car (epg-context-result-for context 'verify))))
(if (and signature
(eq (epg-signature-status signature) 'good))
(epg-signature-set-validity signature 'full))))
-(defun epg--status-TRUST_ULTIMATE (process string)
- (let ((signature (car (epg-context-result-for epg-context 'verify))))
+(defun epg--status-TRUST_ULTIMATE (context string)
+ (let ((signature (car (epg-context-result-for context 'verify))))
(if (and signature
(eq (epg-signature-status signature) 'good))
(epg-signature-set-validity signature 'ultimate))))
-(defun epg--status-PROGRESS (process string)
+(defun epg--status-PROGRESS (context string)
(if (string-match "\\`\\([^ ]+\\) \\([^ ]\\) \\([0-9]+\\) \\([0-9]+\\)"
string)
- (funcall (if (consp (epg-context-progress-callback epg-context))
- (car (epg-context-progress-callback epg-context))
- (epg-context-progress-callback epg-context))
- epg-context
+ (funcall (if (consp (epg-context-progress-callback context))
+ (car (epg-context-progress-callback context))
+ (epg-context-progress-callback context))
+ context
(match-string 1 string)
(match-string 2 string)
(string-to-number (match-string 3 string))
(string-to-number (match-string 4 string))
- (if (consp (epg-context-progress-callback epg-context))
- (cdr (epg-context-progress-callback epg-context))))))
+ (if (consp (epg-context-progress-callback context))
+ (cdr (epg-context-progress-callback context))))))
-(defun epg--status-DECRYPTION_FAILED (process string)
+(defun epg--status-DECRYPTION_FAILED (context string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons '(decryption-failed)
- (epg-context-result-for epg-context 'error))))
+ (epg-context-result-for context 'error))))
-(defun epg--status-NODATA (process string)
+(defun epg--status-NODATA (context string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons (list 'no-data (cons 'reason (string-to-number string)))
- (epg-context-result-for epg-context 'error))))
+ (epg-context-result-for context 'error))))
-(defun epg--status-UNEXPECTED (process string)
+(defun epg--status-UNEXPECTED (context string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons (list 'unexpected (cons 'reason (string-to-number string)))
- (epg-context-result-for epg-context 'error))))
+ (epg-context-result-for context 'error))))
-(defun epg--status-KEYEXPIRED (process string)
+(defun epg--status-KEYEXPIRED (context string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons (list 'key-expired (cons 'expiration-time string))
- (epg-context-result-for epg-context 'error))))
+ (epg-context-result-for context 'error))))
-(defun epg--status-KEYREVOKED (process string)
+(defun epg--status-KEYREVOKED (context string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons '(key-revoked)
- (epg-context-result-for epg-context 'error))))
+ (epg-context-result-for context 'error))))
-(defun epg--status-BADARMOR (process string)
+(defun epg--status-BADARMOR (context string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons '(bad-armor)
- (epg-context-result-for epg-context 'error))))
+ (epg-context-result-for context 'error))))
-(defun epg--status-INV_RECP (process string)
+(defun epg--status-INV_RECP (context string)
(if (string-match "\\`\\([0-9]+\\) \\(.*\\)" string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons (list 'invalid-recipient
(cons 'reason
(string-to-number (match-string 1 string)))
(cons 'requested-recipient
(match-string 2 string)))
- (epg-context-result-for epg-context 'error)))))
+ (epg-context-result-for context 'error)))))
-(defun epg--status-NO_RECP (process string)
+(defun epg--status-NO_RECP (context string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons '(no-recipients)
- (epg-context-result-for epg-context 'error))))
+ (epg-context-result-for context 'error))))
-(defun epg--status-DELETE_PROBLEM (process string)
+(defun epg--status-DELETE_PROBLEM (context string)
(if (string-match "\\`\\([0-9]+\\)" string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons (list 'delete-problem
(cons 'reason (string-to-number (match-string 1 string))))
- (epg-context-result-for epg-context 'error)))))
+ (epg-context-result-for context 'error)))))
-(defun epg--status-SIG_CREATED (process string)
+(defun epg--status-SIG_CREATED (context string)
(if (string-match "\\`\\([DCS]\\) \\([0-9]+\\) \\([0-9]+\\) \
\\([0-9A-Fa-F][0-9A-Fa-F]\\) \\(.*\\) " string)
(epg-context-set-result-for
- epg-context 'sign
+ context 'sign
(cons (epg-make-new-signature
(cdr (assq (aref (match-string 1 string) 0)
epg-new-signature-type-alist))
(string-to-number (match-string 4 string) 16)
(match-string 5 string)
(substring string (match-end 0)))
- (epg-context-result-for epg-context 'sign)))))
+ (epg-context-result-for context 'sign)))))
-(defun epg--status-KEY_CREATED (process string)
+(defun epg--status-KEY_CREATED (context string)
(if (string-match "\\`\\([BPS]\\) \\([^ ]+\\)" string)
(epg-context-set-result-for
- epg-context 'generate-key
+ context 'generate-key
(cons (list (cons 'type (string-to-char (match-string 1 string)))
(cons 'fingerprint (match-string 2 string)))
- (epg-context-result-for epg-context 'generate-key)))))
+ (epg-context-result-for context 'generate-key)))))
-(defun epg--status-KEY_NOT_CREATED (process string)
+(defun epg--status-KEY_NOT_CREATED (context string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons '(key-not-created)
- (epg-context-result-for epg-context 'error))))
+ (epg-context-result-for context 'error))))
-(defun epg--status-IMPORTED (process string)
+(defun epg--status-IMPORTED (context string)
(if (string-match "\\`\\([^ ]+\\) \\(.*\\)" string)
(let* ((key-id (match-string 1 string))
(user-id (match-string 2 string))
(setq epg-user-id-alist (cons (cons key-id user-id)
epg-user-id-alist)))
(epg-context-set-result-for
- epg-context 'import
+ context 'import
(cons (list (cons 'key-id key-id)
(cons 'user-id user-id))
- (epg-context-result-for epg-context 'import))))))
+ (epg-context-result-for context 'import))))))
-(defun epg--status-IMPORT_OK (process string)
- (let ((result (epg-context-result-for epg-context 'import)))
+(defun epg--status-IMPORT_OK (context string)
+ (let ((result (epg-context-result-for context 'import)))
(if (and result
(string-match "\\`\\([0-9]+\\)\\( \\(.+\\)\\)?" string))
(setcar result
(match-string 3 string))))
(car result))))))
-(defun epg--status-IMPORT_PROBLEM (process string)
+(defun epg--status-IMPORT_PROBLEM (context string)
(if (string-match "\\`\\([0-9]+\\)\\( \\(.+\\)\\)?" string)
(epg-context-set-result-for
- epg-context 'error
+ context 'error
(cons (cons 'import-problem
(append (list (cons 'reason
(string-to-number
(if (match-beginning 2)
(list (cons 'fingerprint
(match-string 3 string))))))
- (epg-context-result-for epg-context 'error)))))
+ (epg-context-result-for context 'error)))))
(defun epg-passphrase-callback-function (context key-id handback)
(if (eq key-id 'SYM)