bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#69116: 29.1; plstore.el failed when save using EasyPG


From: LdBeth
Subject: bug#69116: 29.1; plstore.el failed when save using EasyPG
Date: Tue, 13 Feb 2024 23:37:23 -0600
User-agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (Gojō) APEL-LB/10.8 EasyPG/1.0.0 Emacs/29.1 (x86_64-apple-darwin20.6.0) MULE/6.0 (HANACHIRUSATO)

It seems to be the residue of bug #63256, with GnuPG 2.4.4 and set epg
to use loopback pinentry the plstore.el still failed to encrypt file.
The result below is produced without using init file on macOS.

$ gpg2 --version
gpg (GnuPG) 2.4.4
libgcrypt 1.10.3
Copyright (C) 2024 g10 Code GmbH
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /Users/ldbeth/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

$ cat .gnupg/gpg-agent.conf 
allow-loopback-pinentry
default-cache-ttl 34560000
max-cache-ttl 34560000


(setq epg-pinentry-mode 'loopback)
(require 'plstore)
(setq store (plstore-open (expand-file-name "~/foo")))

(plstore-put store "as" '(:host "bar.example.kk") '(:user "ba"))
(plstore-save store)

Debugger entered--Lisp error: (error "Process epg not running: exited 
abnormally with co...")
  process-send-string(#<process epg> "abcdef\n")
  (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string 
passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq 
encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line 
(coding-system-change-eol-conversion epg-passphrase-coding-system 'unix))) 
(clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) 
(progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq 
passphrase-with-new-line nil))) (process-send-string (progn (or (progn (and 
(memq (type-of context) cl-struct-epg-context-tags) t)) (signal 
'wrong-type-argument (list 'epg-context context))) (aref context 16)) 
encoded-passphrase-with-new-line))
  (if passphrase (progn (setq passphrase-with-new-line (concat passphrase 
"\n")) (clear-string passphrase) (setq passphrase nil) (if 
epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line 
(encode-coding-string passphrase-with-new-line 
(coding-system-change-eol-conversion epg-passphrase-coding-system 'unix))) 
(clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) 
(progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq 
passphrase-with-new-line nil))) (process-send-string (progn (or (progn (and 
(memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 
'epg-context context))) (aref context 16)) encoded-passphrase-with-new-line)))
  (progn (setq passphrase (funcall (car (progn (or (progn (and ... t)) (signal 
'wrong-type-argument (list ... context))) (aref context 10))) context 
epg-key-id (cdr (progn (or (progn (and ... t)) (signal 'wrong-type-argument 
(list ... context))) (aref context 10))))) (if passphrase (progn (setq 
passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) 
(setq passphrase nil) (if epg-passphrase-coding-system (progn (setq 
encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line 
(coding-system-change-eol-conversion epg-passphrase-coding-system ...))) 
(clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) 
(progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq 
passphrase-with-new-line nil))) (process-send-string (progn (or (progn (and ... 
t)) (signal 'wrong-type-argument (list ... context))) (aref context 16)) 
encoded-passphrase-with-new-line))))
  (condition-case nil (progn (setq passphrase (funcall (car (progn (or (progn 
...) (signal ... ...)) (aref context 10))) context epg-key-id (cdr (progn (or 
(progn ...) (signal ... ...)) (aref context 10))))) (if passphrase (progn (setq 
passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) 
(setq passphrase nil) (if epg-passphrase-coding-system (progn (setq 
encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line 
...)) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line 
nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) 
(setq passphrase-with-new-line nil))) (process-send-string (progn (or (progn 
...) (signal ... ...)) (aref context 16)) encoded-passphrase-with-new-line)))) 
(quit (epg-context-set-result-for context 'error (cons '(quit) 
(epg-context-result-for context 'error))) (delete-process (progn (or (progn 
(and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument 
(list 'epg-
 context context))) (aref context 16)))))
  (unwind-protect (condition-case nil (progn (setq passphrase (funcall (car 
(progn (or ... ...) (aref context 10))) context epg-key-id (cdr (progn (or ... 
...) (aref context 10))))) (if passphrase (progn (setq passphrase-with-new-line 
(concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if 
epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line ...) 
(clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) 
(progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq 
passphrase-with-new-line nil))) (process-send-string (progn (or ... ...) (aref 
context 16)) encoded-passphrase-with-new-line)))) (quit 
(epg-context-set-result-for context 'error (cons '(quit) 
(epg-context-result-for context 'error))) (delete-process (progn (or (progn 
(and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 
16))))) (if passphrase (clear-string passphrase)) (if passphrase-with-new-line 
(clear-string passphrase-w
 ith-new-line)) (if encoded-passphrase-with-new-line (clear-string 
encoded-passphrase-with-new-line)))
  (let (inhibit-quit passphrase passphrase-with-new-line 
encoded-passphrase-with-new-line) (unwind-protect (condition-case nil (progn 
(setq passphrase (funcall (car (progn ... ...)) context epg-key-id (cdr (progn 
... ...)))) (if passphrase (progn (setq passphrase-with-new-line (concat 
passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if 
epg-passphrase-coding-system (progn ... ... ...) (progn ... ...)) 
(process-send-string (progn ... ...) encoded-passphrase-with-new-line)))) (quit 
(epg-context-set-result-for context 'error (cons '(quit) 
(epg-context-result-for context 'error))) (delete-process (progn (or (progn 
...) (signal ... ...)) (aref context 16))))) (if passphrase (clear-string 
passphrase)) (if passphrase-with-new-line (clear-string 
passphrase-with-new-line)) (if encoded-passphrase-with-new-line (clear-string 
encoded-passphrase-with-new-line))))
  (progn (if (progn (or (progn (and (memq (type-of context) 
cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context 
context))) (aref context 10)) nil (error "Variable `passphrase-callback' not 
set")) (let (inhibit-quit passphrase passphrase-with-new-line 
encoded-passphrase-with-new-line) (unwind-protect (condition-case nil (progn 
(setq passphrase (funcall (car ...) context epg-key-id (cdr ...))) (if 
passphrase (progn (setq passphrase-with-new-line ...) (clear-string passphrase) 
(setq passphrase nil) (if epg-passphrase-coding-system ... ...) 
(process-send-string ... encoded-passphrase-with-new-line)))) (quit 
(epg-context-set-result-for context 'error (cons '... (epg-context-result-for 
context ...))) (delete-process (progn (or ... ...) (aref context 16))))) (if 
passphrase (clear-string passphrase)) (if passphrase-with-new-line 
(clear-string passphrase-with-new-line)) (if encoded-passphrase-with-new-line 
(clear-string encoded-passphrase-with-new-line)))))
  (if (and epg-key-id (string-match "\\`passphrase\\." string)) (progn (if 
(progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 
'wrong-type-argument (list 'epg-context context))) (aref context 10)) nil 
(error "Variable `passphrase-callback' not set")) (let (inhibit-quit passphrase 
passphrase-with-new-line encoded-passphrase-with-new-line) (unwind-protect 
(condition-case nil (progn (setq passphrase (funcall ... context epg-key-id 
...)) (if passphrase (progn ... ... ... ... ...))) (quit 
(epg-context-set-result-for context 'error (cons ... ...)) (delete-process 
(progn ... ...)))) (if passphrase (clear-string passphrase)) (if 
passphrase-with-new-line (clear-string passphrase-with-new-line)) (if 
encoded-passphrase-with-new-line (clear-string 
encoded-passphrase-with-new-line))))))
  epg--status-GET_HIDDEN(#s(epg-context :protocol OpenPGP :program 
"/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs 
nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil 
:passphrase-callback (plstore-passphrase-callback-function . [#<buffer  plstore 
/Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" 
:user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback 
nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process 
#<process epg> :output-file 
"/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation 
encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  
*epg-error*>) "passphrase.enter")
  funcall(epg--status-GET_HIDDEN #s(epg-context :protocol OpenPGP :program 
"/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs 
nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil 
:passphrase-callback (plstore-passphrase-callback-function . [#<buffer  plstore 
/Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" 
:user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback 
nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process 
#<process epg> :output-file 
"/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation 
encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  
*epg-error*>) "passphrase.enter")
  (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))
  (if (eq (progn (or (progn (and (memq (type-of epg-context) 
cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context 
epg-context))) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or 
(progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 
'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 12))) 
epg-context status string (cdr (progn (or (progn (and (memq ... 
cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context 
epg-context))) (aref epg-context 12)))) (setq symbol (intern-soft (concat 
"epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol 
epg-context string)))
  (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member 
status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq 
(progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 
'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 19)) 
'edit-key) (funcall (car (progn (or (progn (and ... t)) (signal 
'wrong-type-argument (list ... epg-context))) (aref epg-context 12))) 
epg-context status string (cdr (progn (or (progn (and ... t)) (signal 
'wrong-type-argument (list ... epg-context))) (aref epg-context 12)))) (setq 
symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp 
symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons 
status string)))
  (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status 
(match-string 1)) (string (match-string 2)) symbol) (if (member status 
epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or 
(progn (and ... t)) (signal 'wrong-type-argument (list ... epg-context))) (aref 
epg-context 19)) 'edit-key) (funcall (car (progn (or (progn ...) (signal ... 
...)) (aref epg-context 12))) epg-context status string (cdr (progn (or (progn 
...) (signal ... ...)) (aref epg-context 12)))) (setq symbol (intern-soft 
(concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall 
symbol epg-context string))) (setq epg-last-status (cons status string))))
  (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) 
?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) 
(if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) 
(if (eq (progn (or (progn ...) (signal ... ...)) (aref epg-context 19)) 
'edit-key) (funcall (car (progn (or ... ...) (aref epg-context 12))) 
epg-context status string (cdr (progn (or ... ...) (aref epg-context 12)))) 
(setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol 
(fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status 
(cons status string)))) (forward-line) (setq epg-read-point (point)))
  (let ((epg-process-filter-running t)) (goto-char epg-read-point) 
(beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] 
\\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 
2)) symbol) (if (member status epg-pending-status-list) (setq 
epg-pending-status-list nil)) (if (eq (progn (or ... ...) (aref epg-context 
19)) 'edit-key) (funcall (car (progn ... ...)) epg-context status string (cdr 
(progn ... ...))) (setq symbol (intern-soft (concat "epg--status-" status))) 
(if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq 
epg-last-status (cons status string)))) (forward-line) (setq epg-read-point 
(point))))
  (if epg-process-filter-running nil (let ((epg-process-filter-running t)) 
(goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if 
(looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 
1)) (string (match-string 2)) symbol) (if (member status 
epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn ... 
...) 'edit-key) (funcall (car ...) epg-context status string (cdr ...)) (setq 
symbol (intern-soft ...)) (if (and symbol ...) (funcall symbol epg-context 
string))) (setq epg-last-status (cons status string)))) (forward-line) (setq 
epg-read-point (point)))))
  (save-excursion (goto-char (point-max)) (insert input) (if 
epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char 
epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at 
"\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status ...) (string ...) symbol) 
(if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) 
(if (eq ... ...) (funcall ... epg-context status string ...) (setq symbol ...) 
(if ... ...)) (setq epg-last-status (cons status string)))) (forward-line) 
(setq epg-read-point (point))))))
  (save-current-buffer (set-buffer (process-buffer process)) (save-excursion 
(goto-char (point-max)) (insert input) (if epg-process-filter-running nil (let 
((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) 
(while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) 
?\\(.*\\)") (let (... ... symbol) (if ... ...) (if ... ... ... ...) (setq 
epg-last-status ...))) (forward-line) (setq epg-read-point (point)))))))
  (if (buffer-live-p (process-buffer process)) (save-current-buffer (set-buffer 
(process-buffer process)) (save-excursion (goto-char (point-max)) (insert 
input) (if epg-process-filter-running nil (let ((epg-process-filter-running t)) 
(goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if 
(looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ... ... ... ...)) 
(forward-line) (setq epg-read-point (point))))))))
  epg--process-filter(#<process epg> "[GNUPG:] NEED_PASSPHRASE_SYM 9 3 
8\n[GNUPG:] INQUIR...")
  accept-process-output(#<process epg> 1)
  (while (eq (process-status (progn (or (progn (and (memq ... 
cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context 
context))) (aref context 16))) 'run) (accept-process-output (progn (or (progn 
(and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 
'wrong-type-argument (list 'epg-context context))) (aref context 16)) 1))
  epg-wait-for-completion(#s(epg-context :protocol OpenPGP :program 
"/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs 
nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil 
:passphrase-callback (plstore-passphrase-callback-function . [#<buffer  plstore 
/Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" 
:user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback 
nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process 
#<process epg> :output-file 
"/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation 
encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  
*epg-error*>))
  (progn (progn (or (progn (and (memq (type-of context) 
cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context 
context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) 
(write-region plain nil input-file nil 'quiet) (epg-start-encrypt context 
(record 'epg-data input-file nil) recipients sign always-trust) 
(epg-wait-for-completion context) (let ((errors (epg-context-result-for context 
'error))) (if (and sign (not (epg-context-result-for context 'sign))) (signal 
'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors 
(signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) 
(epg-read-output context))
  (unwind-protect (progn (progn (or (progn (and (memq (type-of context) 
cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context 
context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) 
(write-region plain nil input-file nil 'quiet) (epg-start-encrypt context 
(record 'epg-data input-file nil) recipients sign always-trust) 
(epg-wait-for-completion context) (let ((errors (epg-context-result-for context 
'error))) (if (and sign (not (epg-context-result-for context 'sign))) (signal 
'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors 
(signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) 
(epg-read-output context)) (epg-delete-output-file context) (delete-file 
input-file) (epg-reset context))
  (let ((input-file (make-temp-file "epg-input")) (coding-system-for-write 
'binary)) (unwind-protect (progn (progn (or (progn (and (memq ... 
cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context 
context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) 
(write-region plain nil input-file nil 'quiet) (epg-start-encrypt context 
(record 'epg-data input-file nil) recipients sign always-trust) 
(epg-wait-for-completion context) (let ((errors (epg-context-result-for context 
'error))) (if (and sign (not (epg-context-result-for context ...))) (signal 
'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors 
(signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) 
(epg-read-output context)) (epg-delete-output-file context) (delete-file 
input-file) (epg-reset context)))
  epg-encrypt-string(#s(epg-context :protocol OpenPGP :program 
"/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs 
nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil 
:passphrase-callback (plstore-passphrase-callback-function . [#<buffer  plstore 
/Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" 
:user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback 
nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process 
#<process epg> :output-file 
"/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation 
encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  
*epg-error*>) "((\"as\" :user \"ba\"))\n" nil)
  (setq cipher (epg-encrypt-string context (pp-to-string 
(plstore--get-secret-alist plstore)) (if (or (eq plstore-select-keys t) (and 
(null plstore-select-keys) (not (local-variable-p 'plstore-encrypt-to 
(current-buffer))))) (epa-select-keys context "Select recipients for 
encryption.\nIf no one is sel..." recipients) (if plstore-encrypt-to 
(epg-list-keys context recipients)))))
  (let ((context (epg-make-context 'OpenPGP)) (pp-escape-newlines nil) 
(recipients (cond ((listp plstore-encrypt-to) plstore-encrypt-to) ((stringp 
plstore-encrypt-to) (list plstore-encrypt-to)))) cipher) (progn (or (progn (and 
(memq (type-of context) cl-struct-epg-context-tags) t)) (signal 
'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 
4 t))) (epg-context-set-passphrase-callback context (cons 
#'plstore-passphrase-callback-function plstore)) (setq cipher 
(epg-encrypt-string context (pp-to-string (plstore--get-secret-alist plstore)) 
(if (or (eq plstore-select-keys t) (and (null plstore-select-keys) (not 
(local-variable-p ... ...)))) (epa-select-keys context "Select recipients for 
encryption.\nIf no one is sel..." recipients) (if plstore-encrypt-to 
(epg-list-keys context recipients))))) (goto-char (point-max)) (insert ";;; 
secret entries\n" (pp-to-string cipher)))
  (if (plstore--get-secret-alist plstore) (let ((context (epg-make-context 
'OpenPGP)) (pp-escape-newlines nil) (recipients (cond ((listp 
plstore-encrypt-to) plstore-encrypt-to) ((stringp plstore-encrypt-to) (list 
plstore-encrypt-to)))) cipher) (progn (or (progn (and (memq (type-of context) 
cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context 
context))) (let* ((v context)) (aset v 4 t))) 
(epg-context-set-passphrase-callback context (cons 
#'plstore-passphrase-callback-function plstore)) (setq cipher 
(epg-encrypt-string context (pp-to-string (plstore--get-secret-alist plstore)) 
(if (or (eq plstore-select-keys t) (and (null plstore-select-keys) (not ...))) 
(epa-select-keys context "Select recipients for encryption.\nIf no one is 
sel..." recipients) (if plstore-encrypt-to (epg-list-keys context 
recipients))))) (goto-char (point-max)) (insert ";;; secret entries\n" 
(pp-to-string cipher))))
  plstore--insert-buffer([#<buffer  plstore /Users/ldbeth/foo> (("as" 
:secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user 
"ba" :host "bar.example.kk"))])
  (save-current-buffer (set-buffer (plstore--get-buffer plstore)) 
(erase-buffer) (plstore--insert-buffer plstore) (save-buffer))
  plstore-save([#<buffer  plstore /Users/ldbeth/foo> (("as" :secret-user t 
:host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host 
"bar.example.kk"))])
  eval((plstore-save store) nil)
  elisp--eval-last-sexp(nil)
  eval-last-sexp(nil)
  funcall-interactively(eval-last-sexp nil)
  call-interactively(eval-last-sexp nil nil)
  command-execute(eval-last-sexp)






reply via email to

[Prev in Thread] Current Thread [Next in Thread]