emacs-devel
[Top][All Lists]
Advanced

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

[BUG] EasyPG seems has a bug on saving the encrypted file buffer.


From: stardiviner
Subject: [BUG] EasyPG seems has a bug on saving the encrypted file buffer.
Date: Thu, 4 May 2023 01:09:14 +0800

This is a very long email that contains all steps I tried to reproduce and try to fix the problem but still failed.

Short:

1. gpg encrypt a plain text file into "file.org.gpg" with the command "gpg -e file.org"
2. `$ emacs -Q` press keybinding [C-x C-f] to open the encrypted file "file.org.gpg"
3. modify the file buffer
4. Emacs press [C-x C-s] to save the buffer
5. Emacs suspends lost response. Buffer mode-line status is still "modified".

Long:

The original mailing list thread is here:
https://list.orgmode.org/m2h6stnyo0.fsf@numbchild@gmail.com/T/#m7c6831530da9604219fd01f72584c28d35e688e0

Reproduce:

1. here is EasyPG config

   #+begin_src emacs-lisp
   (use-package epa
     ;; force Emacs to use its own internal password prompt instead of an external
     ;; pinentry program.
     :preface (setenv "GPG_AGENT_INFO" nil)
     :custom ((epa-pinentry-mode 'loopback) ; let EasyPG Assistant to use loopback for pinentry.
              ;; cache passphrase for symmetric encryption.
              ;; For security reasons, this option is turned off by default and
              ;; not recommended to use.  Instead, consider using gpg-agent which
              ;; does the same job in a safer way.
              (epa-file-cache-passphrase-for-symmetric-encryption t)
              (epa-file-inhibit-auto-save t)
              (epa-keyserver "keys.openpgp.org")
              (epa-file-encrypt-to '("stardiviner" "numbchild@gmail.com"))
              (epa-file-select-keys (if (null epa-file-encrypt-to) t nil)))
     :commands (epa-search-keys)
     :init (epa-file-enable)
     (add-to-list 'display-buffer-alist '("^\\*Keys\\*" . (display-buffer-below-selected))))
   #+end_src

2. =[M-x toggle-debug-on-quit]=

3. edit encrypted file "authinfo.gpg" in Emacs, then press =[C-x C-s]= to save file.

4. but Emacs have not actually save file, the mode-line file status is still "modified", and Emacs suspending.

5. I press =[C-g]= to quit got following stacktrace:

#+begin_example
Debugger entered--Lisp error: (quit)
  accept-process-output(#<process epg> 1)
  epg-wait-for-status(#s(epg-context :protocol OpenPGP :program "/opt/homebrew/bin/gpg" :home-directory "/Users/stardiviner/.gnupg" :armor nil :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (epa-file-passphrase-callback-function . "/Users/stardiviner/.config/emacs/secrets/authinfo....") :progress-callback (epa-progress-callback-function . "Encrypting /Users/stardiviner/.config/emacs/secret...") :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  *epg-error*>) ("BEGIN_ENCRYPTION"))
  epg-start-encrypt(#s(epg-context :protocol OpenPGP :program "/opt/homebrew/bin/gpg" :home-directory "/Users/stardiviner/.gnupg" :armor nil :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (epa-file-passphrase-callback-function . "/Users/stardiviner/.config/emacs/secrets/authinfo....") :progress-callback (epa-progress-callback-function . "Encrypting /Users/stardiviner/.config/emacs/secret...") :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  *epg-error*>) #s(epg-data :file nil :string "# -*- epa-file-encrypt-to: (\"stardiviner\") -*-\n\n# ...") (#s(epg-key :owner-trust ultimate :sub-key-list (#s(epg-sub-key :validity ultimate :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "1B5DF1C95AE89AC3" :creation-time 1422686308 :expiration-time nil :fingerprint "F09F650D7D674819892591401B5DF1C95AE89AC3") #s(epg-sub-key :validity ultimate :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "0251FA6886EB6B77" :creation-time 1422686308 :expiration-time nil :fingerprint "32A8581A6E137ABD26DA2F570251FA6886EB6B77")) :user-id-list (#s(epg-user-id :validity ultimate :string "stardiviner (numbchild@gmail.com) <numbchild@gmail..." :signature-list nil) #s(epg-user-id :validity ultimate :string "stardiviner (Christopher Miles) <numbchild@gmail.c..." :signature-list nil))) #s(epg-key :owner-trust none :sub-key-list (#s(epg-sub-key :validity none :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "B8C4B8E547C32433" :creation-time 1330690561 :expiration-time nil :fingerprint "9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433") #s(epg-sub-key :validity none :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "AEDA8A17BB08B786" :creation-time 1330690561 :expiration-time nil :fingerprint "0DEF7425E79FE2E0090B424BAEDA8A17BB08B786")) :user-id-list (#s(epg-user-id :validity none :string "Christopher Miles (stardiviner, numbchild) <numbch..." :signature-list nil)))) nil nil)
  epg-encrypt-string(#s(epg-context :protocol OpenPGP :program "/opt/homebrew/bin/gpg" :home-directory "/Users/stardiviner/.gnupg" :armor nil :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (epa-file-passphrase-callback-function . "/Users/stardiviner/.config/emacs/secrets/authinfo....") :progress-callback (epa-progress-callback-function . "Encrypting /Users/stardiviner/.config/emacs/secret...") :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  *epg-error*>) "# -*- epa-file-encrypt-to: (\"stardiviner\") -*-\n\n# ..." (#s(epg-key :owner-trust ultimate :sub-key-list (#s(epg-sub-key :validity ultimate :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "1B5DF1C95AE89AC3" :creation-time 1422686308 :expiration-time nil :fingerprint "F09F650D7D674819892591401B5DF1C95AE89AC3") #s(epg-sub-key :validity ultimate :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "0251FA6886EB6B77" :creation-time 1422686308 :expiration-time nil :fingerprint "32A8581A6E137ABD26DA2F570251FA6886EB6B77")) :user-id-list (#s(epg-user-id :validity ultimate :string "stardiviner (numbchild@gmail.com) <numbchild@gmail..." :signature-list nil) #s(epg-user-id :validity ultimate :string "stardiviner (Christopher Miles) <numbchild@gmail.c..." :signature-list nil))) #s(epg-key :owner-trust none :sub-key-list (#s(epg-sub-key :validity none :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "B8C4B8E547C32433" :creation-time 1330690561 :expiration-time nil :fingerprint "9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433") #s(epg-sub-key :validity none :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "AEDA8A17BB08B786" :creation-time 1330690561 :expiration-time nil :fingerprint "0DEF7425E79FE2E0090B424BAEDA8A17BB08B786")) :user-id-list (#s(epg-user-id :validity none :string "Christopher Miles (stardiviner, numbchild) <numbch..." :signature-list nil)))))
  epa-file-write-region(nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil)
  apply(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil))
  epa-file-handler(write-region nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil)
  write-region(nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg")
  basic-save-buffer-2()
  basic-save-buffer-1()
  basic-save-buffer(nil)
  save-buffer()
  #f(compiled-function (buffer) #<bytecode 0x8c750db3599e00a>)(#<buffer authinfo.gpg>)
  map-y-or-n-p(#f(compiled-function (buffer) #<bytecode 0x3861ff2c85e5a70>) #f(compiled-function (buffer) #<bytecode 0x8c750db3599e00a>) (#<buffer authinfo.gpg>) ("buffer" "buffers" "save") ((18 #f(compiled-function (buf) #<bytecode -0x13c467336852d4a4>) "view this buffer") (6 #f(compiled-function (buf) #<bytecode 0x81e69c1bf6c6e9c>) "view this buffer and quit") (100 #f(compiled-function (buf) #<bytecode -0x24aad661d8a3566>) "view changes in this buffer")))
  save-some-buffers(:no-prompt #f(compiled-function () #<bytecode 0x11658fcd9d115b5c>))
  apply(save-some-buffers (:no-prompt #f(compiled-function () #<bytecode 0x11658fcd9d115b5c>)))
  timer-event-handler([nil 0 5 0 :repeat save-some-buffers (:no-prompt #f(compiled-function () #<bytecode 0x11658fcd9d115b5c>)) idle 0 nil])
#+end_example

----------------------------------------------------------------------------------------------------

When I save modified "=~/.config/emacs/secrets/authinfo.gpg=", got prompt:

#+begin_example
Untrusted key AEDA8A17BB08B786 Christopher Miles (stardiviner, numbchild) <numbchild@gmail.com>.  Use anyway? (y or n)
#+end_example

If I input "n" for prompt:

#+begin_example
Debugger entered--Lisp error: (file-error "Opening output file" "Encrypt failed" "Unusable public key: B8C4B8E547C32433 (key not tru...")
  apply(debug error (file-error "Opening output file" "Encrypt failed" "Unusable public key: B8C4B8E547C32433 (key not tru..."))
  edebug(error (file-error "Opening output file" "Encrypt failed" "Unusable public key: B8C4B8E547C32433 (key not tru..."))
  signal(file-error ("Opening output file" "Encrypt failed" "Unusable public key: B8C4B8E547C32433 (key not tru..."))
  edebug-signal(file-error ("Opening output file" "Encrypt failed" "Unusable public key: B8C4B8E547C32433 (key not tru..."))
  signal(file-error ("Opening output file" "Encrypt failed" "Unusable public key: B8C4B8E547C32433 (key not tru..."))
  (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after (edebug-before 158) 162 (cons "Opening output file" (edebug-after (edebug-before 159) 161 (cdr (edebug-after 0 160 error)))))))
  (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after (edebug-before 70) 109 (if (edebug-after ... 73 ...) (edebug-after ... 77 ...) (edebug-after ... 86 ...) (edebug-after ... 90 ...) (edebug-after ... 108 ...))) (edebug-after (edebug-before 110) 140 (if (edebug-after ... 126 ...) (edebug-after ... 130 ...) (edebug-after ... 139 ...))))))) (error (edebug-after (edebug-before 143) 145 (epa-display-error (edebug-after 0 144 context))) (edebug-after (edebug-before 146) 156 (if (edebug-after (edebug-before 147) 152 (setq entry (edebug-after (edebug-before 148) 151 (assoc ... ...)))) (edebug-after (edebug-before 153) 155 (setcdr (edebug-after 0 154 entry) nil)))) (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after (edebug-before 158) 162 (cons "Opening output file" (edebug-after (edebug-before 159) 161 (cdr ...))))))))
  (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after (edebug-before 70) 109 (if ... ... ... ... ...)) (edebug-after (edebug-before 110) 140 (if ... ... ...)))))) (error (edebug-after (edebug-before 143) 145 (epa-display-error (edebug-after 0 144 context))) (edebug-after (edebug-before 146) 156 (if (edebug-after (edebug-before 147) 152 (setq entry (edebug-after ... 151 ...))) (edebug-after (edebug-before 153) 155 (setcdr (edebug-after 0 154 entry) nil)))) (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after (edebug-before 158) 162 (cons "Opening output file" (edebug-after ... 161 ...))))))))
  (let* ((coding-system (edebug-after (edebug-before 11) 27 (or (edebug-after 0 12 coding-system-for-write) (edebug-after (edebug-before 13) 26 (if (edebug-after ... 15 ...) (edebug-after ... 24 ...) (edebug-after 0 25 buffer-file-coding-system)))))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ((edebug-after (edebug-before 31) 33 (listp ...)) (edebug-after 0 34 epa-file-encrypt-to)) ((edebug-after (edebug-before 35) 37 (stringp ...)) (edebug-after (edebug-before 38) 40 (list ...)))))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons (edebug-after (edebug-before 45) 46 #'epa-file-passphrase-callback-function) (edebug-after 0 47 file))))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons (edebug-after (edebug-before 53) 54 #'epa-progress-callback-function) (edebug-after (edebug-before 55) 57 (format "Encrypting %s" (edebug-after 0 56 file))))))) (edebug-after (edebug-before 60) 65 (let ((cl-x (edebug-after 0 62 context))) (or (let ((cl-x cl-x)) (progn (and (memq ... cl-struct-epg-context-tags) t))) (signal 'wrong-type-argument (list 'epg-context cl-x))) (let* ((v cl-x)) (edebug-after (edebug-before 61) 63 (aset v 4 (edebug-after 0 64 epa-armor)))))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after ... 109 ...) (edebug-after ... 140 ...))))) (error (edebug-after (edebug-before 143) 145 (epa-display-error (edebug-after 0 144 context))) (edebug-after (edebug-before 146) 156 (if (edebug-after (edebug-before 147) 152 (setq entry ...)) (edebug-after (edebug-before 153) 155 (setcdr ... nil)))) (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after (edebug-before 158) 162 (cons "Opening output file" ...))))))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list (edebug-after 0 169 string) nil (edebug-after 0 170 file) (edebug-after 0 171 append) (edebug-after 0 172 visit) (edebug-after 0 173 lockname) (edebug-after 0 174 mustbenew))))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp 'last-coding-system-used)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used (edebug-after 0 181 coding-system))))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq (edebug-after 0 186 visit) t)) (edebug-after (edebug-before 188) 194 (progn (edebug-after (edebug-before 189) 191 (setq buffer-file-name (edebug-after 0 190 file))) (edebug-after (edebug-before 192) 193 (set-visited-file-modtime)))) (edebug-after (edebug-before 195) 206 (if (edebug-after (edebug-before 196) 198 (stringp (edebug-after 0 197 visit))) (edebug-after (edebug-before 199) 205 (progn (edebug-after ... 201 ...) (edebug-after ... 204 ...))))))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or (edebug-after (edebug-before 210) 212 (eq (edebug-after 0 211 visit) t)) (edebug-after (edebug-before 213) 215 (eq (edebug-after 0 214 visit) nil)) (edebug-after (edebug-before 216) 218 (stringp (edebug-after 0 217 visit))))) (edebug-after (edebug-before 220) 222 (message "Wrote %s" (edebug-after 0 221 buffer-file-name))))))
  (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or (edebug-after 0 12 coding-system-for-write) (edebug-after (edebug-before 13) 26 (if ... ... ...))))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ((edebug-after ... 33 ...) (edebug-after 0 34 epa-file-encrypt-to)) ((edebug-after ... 37 ...) (edebug-after ... 40 ...))))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons (edebug-after (edebug-before 45) 46 #'epa-file-passphrase-callback-function) (edebug-after 0 47 file))))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons (edebug-after (edebug-before 53) 54 #'epa-progress-callback-function) (edebug-after (edebug-before 55) 57 (format "Encrypting %s" ...)))))) (edebug-after (edebug-before 60) 65 (let ((cl-x (edebug-after 0 62 context))) (or (let ((cl-x cl-x)) (progn (and ... t))) (signal 'wrong-type-argument (list 'epg-context cl-x))) (let* ((v cl-x)) (edebug-after (edebug-before 61) 63 (aset v 4 (edebug-after 0 64 epa-armor)))))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string ... ... ...)))) (error (edebug-after (edebug-before 143) 145 (epa-display-error (edebug-after 0 144 context))) (edebug-after (edebug-before 146) 156 (if (edebug-after ... 152 ...) (edebug-after ... 155 ...))) (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after ... 162 ...)))))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list (edebug-after 0 169 string) nil (edebug-after 0 170 file) (edebug-after 0 171 append) (edebug-after 0 172 visit) (edebug-after 0 173 lockname) (edebug-after 0 174 mustbenew))))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp 'last-coding-system-used)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used (edebug-after 0 181 coding-system))))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq (edebug-after 0 186 visit) t)) (edebug-after (edebug-before 188) 194 (progn (edebug-after (edebug-before 189) 191 (setq buffer-file-name ...)) (edebug-after (edebug-before 192) 193 (set-visited-file-modtime)))) (edebug-after (edebug-before 195) 206 (if (edebug-after (edebug-before 196) 198 (stringp ...)) (edebug-after (edebug-before 199) 205 (progn ... ...)))))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or (edebug-after (edebug-before 210) 212 (eq ... t)) (edebug-after (edebug-before 213) 215 (eq ... nil)) (edebug-after (edebug-before 216) 218 (stringp ...)))) (edebug-after (edebug-before 220) 222 (message "Wrote %s" (edebug-after 0 221 buffer-file-name)))))))
  (closure ((mustbenew) (lockname . "~/.config/emacs/secrets/authinfo.gpg") (visit . t) (append) (file . "/Users/stardiviner/.config/emacs/secrets/authinfo....") (end . 1960) (start . 1) t) nil :closure-dont-trim-context (edebug-after (edebug-before 0) 4 (if (edebug-after 0 1 append) (edebug-after (edebug-before 2) 3 (error "Can't append to the file")))) (edebug-after (edebug-before 5) 9 (setq file (edebug-after (edebug-before 6) 8 (expand-file-name (edebug-after 0 7 file))))) (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or (edebug-after 0 12 coding-system-for-write) (edebug-after ... 26 ...)))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond (... ...) (... ...)))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons (edebug-after ... 46 ...) (edebug-after 0 47 file))))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons (edebug-after ... 54 ...) (edebug-after ... 57 ...))))) (edebug-after (edebug-before 60) 65 (let ((cl-x (edebug-after 0 62 context))) (or (let (...) (progn ...)) (signal 'wrong-type-argument (list ... cl-x))) (let* ((v cl-x)) (edebug-after (edebug-before 61) 63 (aset v 4 ...))))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after ... 141 ...))) (error (edebug-after (edebug-before 143) 145 (epa-display-error ...)) (edebug-after (edebug-before 146) 156 (if ... ...)) (edebug-after (edebug-before 157) 163 (signal ... ...))))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list (edebug-after 0 169 string) nil (edebug-after 0 170 file) (edebug-after 0 171 append) (edebug-after 0 172 visit) (edebug-after 0 173 lockname) (edebug-after 0 174 mustbenew))))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp 'last-coding-system-used)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used (edebug-after 0 181 coding-system))))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq (edebug-after 0 186 visit) t)) (edebug-after (edebug-before 188) 194 (progn (edebug-after ... 191 ...) (edebug-after ... 193 ...))) (edebug-after (edebug-before 195) 206 (if (edebug-after ... 198 ...) (edebug-after ... 205 ...))))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or (edebug-after ... 212 ...) (edebug-after ... 215 ...) (edebug-after ... 218 ...))) (edebug-after (edebug-before 220) 222 (message "Wrote %s" (edebug-after 0 221 buffer-file-name))))))))()
  edebug-default-enter(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil) (closure ((mustbenew) (lockname . "~/.config/emacs/secrets/authinfo.gpg") (visit . t) (append) (file . "/Users/stardiviner/.config/emacs/secrets/authinfo....") (end . 1960) (start . 1) t) nil :closure-dont-trim-context (edebug-after (edebug-before 0) 4 (if (edebug-after 0 1 append) (edebug-after (edebug-before 2) 3 (error "Can't append to the file")))) (edebug-after (edebug-before 5) 9 (setq file (edebug-after (edebug-before 6) 8 (expand-file-name (edebug-after 0 7 file))))) (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or ... ...))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ... ...))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons ... ...)))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons ... ...)))) (edebug-after (edebug-before 60) 65 (let ((cl-x ...)) (or (let ... ...) (signal ... ...)) (let* (...) (edebug-after ... 63 ...)))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string ...)) (error (edebug-after ... 145 ...) (edebug-after ... 156 ...) (edebug-after ... 163 ...)))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list ... nil ... ... ... ... ...)))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp ...)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used ...)))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq ... t)) (edebug-after (edebug-before 188) 194 (progn ... ...)) (edebug-after (edebug-before 195) 206 (if ... ...)))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or ... ... ...)) (edebug-after (edebug-before 220) 222 (message "Wrote %s" ...))))))))
  edebug-default-enter(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil) (closure ((mustbenew) (lockname . "~/.config/emacs/secrets/authinfo.gpg") (visit . t) (append) (file . "/Users/stardiviner/.config/emacs/secrets/authinfo....") (end . 1960) (start . 1) t) nil :closure-dont-trim-context (edebug-after (edebug-before 0) 4 (if (edebug-after 0 1 append) (edebug-after (edebug-before 2) 3 (error "Can't append to the file")))) (edebug-after (edebug-before 5) 9 (setq file (edebug-after (edebug-before 6) 8 (expand-file-name (edebug-after 0 7 file))))) (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or ... ...))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ... ...))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons ... ...)))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons ... ...)))) (edebug-after (edebug-before 60) 65 (let ((cl-x ...)) (or (let ... ...) (signal ... ...)) (let* (...) (edebug-after ... 63 ...)))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string ...)) (error (edebug-after ... 145 ...) (edebug-after ... 156 ...) (edebug-after ... 163 ...)))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list ... nil ... ... ... ... ...)))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp ...)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used ...)))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq ... t)) (edebug-after (edebug-before 188) 194 (progn ... ...)) (edebug-after (edebug-before 195) 206 (if ... ...)))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or ... ... ...)) (edebug-after (edebug-before 220) 222 (message "Wrote %s" ...))))))))
  edebug-enter(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil) (closure ((mustbenew) (lockname . "~/.config/emacs/secrets/authinfo.gpg") (visit . t) (append) (file . "/Users/stardiviner/.config/emacs/secrets/authinfo....") (end . 1960) (start . 1) t) nil :closure-dont-trim-context (edebug-after (edebug-before 0) 4 (if (edebug-after 0 1 append) (edebug-after (edebug-before 2) 3 (error "Can't append to the file")))) (edebug-after (edebug-before 5) 9 (setq file (edebug-after (edebug-before 6) 8 (expand-file-name (edebug-after 0 7 file))))) (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or ... ...))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ... ...))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons ... ...)))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons ... ...)))) (edebug-after (edebug-before 60) 65 (let ((cl-x ...)) (or (let ... ...) (signal ... ...)) (let* (...) (edebug-after ... 63 ...)))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string ...)) (error (edebug-after ... 145 ...) (edebug-after ... 156 ...) (edebug-after ... 163 ...)))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list ... nil ... ... ... ... ...)))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp ...)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used ...)))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq ... t)) (edebug-after (edebug-before 188) 194 (progn ... ...)) (edebug-after (edebug-before 195) 206 (if ... ...)))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or ... ... ...)) (edebug-after (edebug-before 220) 222 (message "Wrote %s" ...))))))))
  epa-file-write-region(nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil)
  apply(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil))
  (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args))
  (let ((op (get operation 'epa-file))) (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args)))
  (progn (let ((op (get operation 'epa-file))) (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args))))
  (unwind-protect (progn (let ((op (get operation 'epa-file))) (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args)))) (set-match-data saved-match-data t))
  (let ((saved-match-data (match-data))) (unwind-protect (progn (let ((op (get operation 'epa-file))) (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args)))) (set-match-data saved-match-data t)))
  epa-file-handler(write-region nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil)
  write-region(nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg")
  basic-save-buffer-2()
  basic-save-buffer-1()
  basic-save-buffer(nil)
  save-buffer()
  #f(compiled-function (buffer) #<bytecode 0x8c750db3599e00a>)(#<buffer authinfo.gpg>)
  map-y-or-n-p(#f(compiled-function (buffer) #<bytecode 0x3861ff2c85e5a70>) #f(compiled-function (buffer) #<bytecode 0x8c750db3599e00a>) (#<buffer authinfo.gpg>) ("buffer" "buffers" "save") ((18 #f(compiled-function (buf) #<bytecode -0x13c467336852d4a4>) "view this buffer") (6 #f(compiled-function (buf) #<bytecode 0x81e69c1bf6c6e9c>) "view this buffer and quit") (100 #f(compiled-function (buf) #<bytecode -0x24aad661d8a3566>) "view changes in this buffer")))
  save-some-buffers(:no-prompt #f(compiled-function () #<bytecode 0x11658fcd9d115b5c>))
  apply(save-some-buffers (:no-prompt #f(compiled-function () #<bytecode 0x11658fcd9d115b5c>)))
  timer-event-handler([t 0 5 0 :repeat save-some-buffers (:no-prompt #f(compiled-function () #<bytecode 0x11658fcd9d115b5c>)) idle 0 nil])
  recursive-edit()
  edebug--recursive-edit(after)
  edebug--display-1((#s(epg-key :owner-trust ultimate :sub-key-list (#s(epg-sub-key :validity ultimate :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "1B5DF1C95AE89AC3" :creation-time 1422686308 :expiration-time nil :fingerprint "F09F650D7D674819892591401B5DF1C95AE89AC3") #s(epg-sub-key :validity ultimate :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "0251FA6886EB6B77" :creation-time 1422686308 :expiration-time nil :fingerprint "32A8581A6E137ABD26DA2F570251FA6886EB6B77")) :user-id-list (#s(epg-user-id :validity ultimate :string "stardiviner (numbchild@gmail.com) <numbchild@gmail..." :signature-list nil) #s(epg-user-id :validity ultimate :string "stardiviner (Christopher Miles) <numbchild@gmail.c..." :signature-list nil))) #s(epg-key :owner-trust none :sub-key-list (#s(epg-sub-key :validity none :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "B8C4B8E547C32433" :creation-time 1330690561 :expiration-time nil :fingerprint "9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433") #s(epg-sub-key :validity none :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "AEDA8A17BB08B786" :creation-time 1330690561 :expiration-time nil :fingerprint "0DEF7425E79FE2E0090B424BAEDA8A17BB08B786")) :user-id-list (#s(epg-user-id :validity none :string "Christopher Miles (stardiviner, numbchild) <numbch..." :signature-list nil)))) 137 after)
  edebug--display((#s(epg-key :owner-trust ultimate :sub-key-list (#s(epg-sub-key :validity ultimate :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "1B5DF1C95AE89AC3" :creation-time 1422686308 :expiration-time nil :fingerprint "F09F650D7D674819892591401B5DF1C95AE89AC3") #s(epg-sub-key :validity ultimate :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "0251FA6886EB6B77" :creation-time 1422686308 :expiration-time nil :fingerprint "32A8581A6E137ABD26DA2F570251FA6886EB6B77")) :user-id-list (#s(epg-user-id :validity ultimate :string "stardiviner (numbchild@gmail.com) <numbchild@gmail..." :signature-list nil) #s(epg-user-id :validity ultimate :string "stardiviner (Christopher Miles) <numbchild@gmail.c..." :signature-list nil))) #s(epg-key :owner-trust none :sub-key-list (#s(epg-sub-key :validity none :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "B8C4B8E547C32433" :creation-time 1330690561 :expiration-time nil :fingerprint "9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433") #s(epg-sub-key :validity none :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "AEDA8A17BB08B786" :creation-time 1330690561 :expiration-time nil :fingerprint "0DEF7425E79FE2E0090B424BAEDA8A17BB08B786")) :user-id-list (#s(epg-user-id :validity none :string "Christopher Miles (stardiviner, numbchild) <numbch..." :signature-list nil)))) 137 after)
  edebug-debugger(137 after (#s(epg-key :owner-trust ultimate :sub-key-list (#s(epg-sub-key :validity ultimate :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "1B5DF1C95AE89AC3" :creation-time 1422686308 :expiration-time nil :fingerprint "F09F650D7D674819892591401B5DF1C95AE89AC3") #s(epg-sub-key :validity ultimate :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "0251FA6886EB6B77" :creation-time 1422686308 :expiration-time nil :fingerprint "32A8581A6E137ABD26DA2F570251FA6886EB6B77")) :user-id-list (#s(epg-user-id :validity ultimate :string "stardiviner (numbchild@gmail.com) <numbchild@gmail..." :signature-list nil) #s(epg-user-id :validity ultimate :string "stardiviner (Christopher Miles) <numbchild@gmail.c..." :signature-list nil))) #s(epg-key :owner-trust none :sub-key-list (#s(epg-sub-key :validity none :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "B8C4B8E547C32433" :creation-time 1330690561 :expiration-time nil :fingerprint "9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433") #s(epg-sub-key :validity none :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "AEDA8A17BB08B786" :creation-time 1330690561 :expiration-time nil :fingerprint "0DEF7425E79FE2E0090B424BAEDA8A17BB08B786")) :user-id-list (#s(epg-user-id :validity none :string "Christopher Miles (stardiviner, numbchild) <numbch..." :signature-list nil)))))
  edebug-after(134 137 (#s(epg-key :owner-trust ultimate :sub-key-list (#s(epg-sub-key :validity ultimate :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "1B5DF1C95AE89AC3" :creation-time 1422686308 :expiration-time nil :fingerprint "F09F650D7D674819892591401B5DF1C95AE89AC3") #s(epg-sub-key :validity ultimate :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "0251FA6886EB6B77" :creation-time 1422686308 :expiration-time nil :fingerprint "32A8581A6E137ABD26DA2F570251FA6886EB6B77")) :user-id-list (#s(epg-user-id :validity ultimate :string "stardiviner (numbchild@gmail.com) <numbchild@gmail..." :signature-list nil) #s(epg-user-id :validity ultimate :string "stardiviner (Christopher Miles) <numbchild@gmail.c..." :signature-list nil))) #s(epg-key :owner-trust none :sub-key-list (#s(epg-sub-key :validity none :capability (sign certify) :secret-p nil :algorithm 1 :length 2048 :id "B8C4B8E547C32433" :creation-time 1330690561 :expiration-time nil :fingerprint "9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433") #s(epg-sub-key :validity none :capability (encrypt) :secret-p nil :algorithm 1 :length 2048 :id "AEDA8A17BB08B786" :creation-time 1330690561 :expiration-time nil :fingerprint "0DEF7425E79FE2E0090B424BAEDA8A17BB08B786")) :user-id-list (#s(epg-user-id :validity none :string "Christopher Miles (stardiviner, numbchild) <numbch..." :signature-list nil)))))
  (epg--filter-revoked-keys (edebug-after (edebug-before 134) 137 (epg-list-keys (edebug-after 0 135 context) (edebug-after 0 136 recipients))))
  (edebug-after (edebug-before 133) 138 (epg--filter-revoked-keys (edebug-after (edebug-before 134) 137 (epg-list-keys (edebug-after 0 135 context) (edebug-after 0 136 recipients)))))
  (if (edebug-after 0 132 epa-file-encrypt-to) (edebug-after (edebug-before 133) 138 (epg--filter-revoked-keys (edebug-after (edebug-before 134) 137 (epg-list-keys (edebug-after 0 135 context) (edebug-after 0 136 recipients))))))
  (edebug-after (edebug-before 131) 139 (if (edebug-after 0 132 epa-file-encrypt-to) (edebug-after (edebug-before 133) 138 (epg--filter-revoked-keys (edebug-after (edebug-before 134) 137 (epg-list-keys (edebug-after 0 135 context) (edebug-after 0 136 recipients)))))))
  (if (edebug-after (edebug-before 111) 126 (or (edebug-after (edebug-before 112) 114 (eq (edebug-after 0 113 epa-file-select-keys) t)) (edebug-after (edebug-before 115) 125 (and (edebug-after (edebug-before 116) 118 (null (edebug-after 0 117 epa-file-select-keys))) (edebug-after (edebug-before 119) 124 (not (edebug-after ... 123 ...))))))) (edebug-after (edebug-before 127) 130 (epa-select-keys (edebug-after 0 128 context) "Select recipients for encryption.\nIf no one is sel..." (edebug-after 0 129 recipients))) (edebug-after (edebug-before 131) 139 (if (edebug-after 0 132 epa-file-encrypt-to) (edebug-after (edebug-before 133) 138 (epg--filter-revoked-keys (edebug-after (edebug-before 134) 137 (epg-list-keys (edebug-after 0 135 context) (edebug-after 0 136 recipients))))))))
  (edebug-after (edebug-before 110) 140 (if (edebug-after (edebug-before 111) 126 (or (edebug-after (edebug-before 112) 114 (eq (edebug-after 0 113 epa-file-select-keys) t)) (edebug-after (edebug-before 115) 125 (and (edebug-after (edebug-before 116) 118 (null ...)) (edebug-after (edebug-before 119) 124 (not ...)))))) (edebug-after (edebug-before 127) 130 (epa-select-keys (edebug-after 0 128 context) "Select recipients for encryption.\nIf no one is sel..." (edebug-after 0 129 recipients))) (edebug-after (edebug-before 131) 139 (if (edebug-after 0 132 epa-file-encrypt-to) (edebug-after (edebug-before 133) 138 (epg--filter-revoked-keys (edebug-after (edebug-before 134) 137 (epg-list-keys ... ...))))))))
  (epg-encrypt-string (edebug-after 0 69 context) (edebug-after (edebug-before 70) 109 (if (edebug-after (edebug-before 71) 73 (stringp (edebug-after 0 72 start))) (edebug-after (edebug-before 74) 77 (encode-coding-string (edebug-after 0 75 start) (edebug-after 0 76 coding-system))) (edebug-after (edebug-before 78) 86 (if (edebug-after 0 79 start) nil (edebug-after (edebug-before 80) 85 (progn (setq start ...) (setq end ...))))) (edebug-after (edebug-before 87) 90 (setq buffer (edebug-after (edebug-before 88) 89 (current-buffer)))) (edebug-after (edebug-before 91) 108 (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...))))))) (edebug-after (edebug-before 110) 140 (if (edebug-after (edebug-before 111) 126 (or (edebug-after (edebug-before 112) 114 (eq (edebug-after 0 113 epa-file-select-keys) t)) (edebug-after (edebug-before 115) 125 (and (edebug-after ... 118 ...) (edebug-after ... 124 ...))))) (edebug-after (edebug-before 127) 130 (epa-select-keys (edebug-after 0 128 context) "Select recipients for encryption.\nIf no one is sel..." (edebug-after 0 129 recipients))) (edebug-after (edebug-before 131) 139 (if (edebug-after 0 132 epa-file-encrypt-to) (edebug-after (edebug-before 133) 138 (epg--filter-revoked-keys (edebug-after ... 137 ...))))))))
  (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after (edebug-before 70) 109 (if (edebug-after (edebug-before 71) 73 (stringp (edebug-after 0 72 start))) (edebug-after (edebug-before 74) 77 (encode-coding-string (edebug-after 0 75 start) (edebug-after 0 76 coding-system))) (edebug-after (edebug-before 78) 86 (if (edebug-after 0 79 start) nil (edebug-after (edebug-before 80) 85 (progn ... ...)))) (edebug-after (edebug-before 87) 90 (setq buffer (edebug-after (edebug-before 88) 89 (current-buffer)))) (edebug-after (edebug-before 91) 108 (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...)))))) (edebug-after (edebug-before 110) 140 (if (edebug-after (edebug-before 111) 126 (or (edebug-after (edebug-before 112) 114 (eq ... t)) (edebug-after (edebug-before 115) 125 (and ... ...)))) (edebug-after (edebug-before 127) 130 (epa-select-keys (edebug-after 0 128 context) "Select recipients for encryption.\nIf no one is sel..." (edebug-after 0 129 recipients))) (edebug-after (edebug-before 131) 139 (if (edebug-after 0 132 epa-file-encrypt-to) (edebug-after (edebug-before 133) 138 (epg--filter-revoked-keys ...))))))))
  (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after (edebug-before 70) 109 (if (edebug-after (edebug-before 71) 73 (stringp (edebug-after 0 72 start))) (edebug-after (edebug-before 74) 77 (encode-coding-string (edebug-after 0 75 start) (edebug-after 0 76 coding-system))) (edebug-after (edebug-before 78) 86 (if (edebug-after 0 79 start) nil (edebug-after ... 85 ...))) (edebug-after (edebug-before 87) 90 (setq buffer (edebug-after ... 89 ...))) (edebug-after (edebug-before 91) 108 (let (...) (save-current-buffer ... ...))))) (edebug-after (edebug-before 110) 140 (if (edebug-after (edebug-before 111) 126 (or (edebug-after ... 114 ...) (edebug-after ... 125 ...))) (edebug-after (edebug-before 127) 130 (epa-select-keys (edebug-after 0 128 context) "Select recipients for encryption.\nIf no one is sel..." (edebug-after 0 129 recipients))) (edebug-after (edebug-before 131) 139 (if (edebug-after 0 132 epa-file-encrypt-to) (edebug-after ... 138 ...))))))))
  (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after (edebug-before 70) 109 (if (edebug-after (edebug-before 71) 73 (stringp ...)) (edebug-after (edebug-before 74) 77 (encode-coding-string ... ...)) (edebug-after (edebug-before 78) 86 (if ... nil ...)) (edebug-after (edebug-before 87) 90 (setq buffer ...)) (edebug-after (edebug-before 91) 108 (let ... ...)))) (edebug-after (edebug-before 110) 140 (if (edebug-after (edebug-before 111) 126 (or ... ...)) (edebug-after (edebug-before 127) 130 (epa-select-keys ... "Select recipients for encryption.\nIf no one is sel..." ...)) (edebug-after (edebug-before 131) 139 (if ... ...))))))))
  (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after (edebug-before 70) 109 (if (edebug-after ... 73 ...) (edebug-after ... 77 ...) (edebug-after ... 86 ...) (edebug-after ... 90 ...) (edebug-after ... 108 ...))) (edebug-after (edebug-before 110) 140 (if (edebug-after ... 126 ...) (edebug-after ... 130 ...) (edebug-after ... 139 ...))))))) (error (edebug-after (edebug-before 143) 145 (epa-display-error (edebug-after 0 144 context))) (edebug-after (edebug-before 146) 156 (if (edebug-after (edebug-before 147) 152 (setq entry (edebug-after (edebug-before 148) 151 (assoc ... ...)))) (edebug-after (edebug-before 153) 155 (setcdr (edebug-after 0 154 entry) nil)))) (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after (edebug-before 158) 162 (cons "Opening output file" (edebug-after (edebug-before 159) 161 (cdr ...))))))))
  (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after (edebug-before 70) 109 (if ... ... ... ... ...)) (edebug-after (edebug-before 110) 140 (if ... ... ...)))))) (error (edebug-after (edebug-before 143) 145 (epa-display-error (edebug-after 0 144 context))) (edebug-after (edebug-before 146) 156 (if (edebug-after (edebug-before 147) 152 (setq entry (edebug-after ... 151 ...))) (edebug-after (edebug-before 153) 155 (setcdr (edebug-after 0 154 entry) nil)))) (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after (edebug-before 158) 162 (cons "Opening output file" (edebug-after ... 161 ...))))))))
  (let* ((coding-system (edebug-after (edebug-before 11) 27 (or (edebug-after 0 12 coding-system-for-write) (edebug-after (edebug-before 13) 26 (if (edebug-after ... 15 ...) (edebug-after ... 24 ...) (edebug-after 0 25 buffer-file-coding-system)))))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ((edebug-after (edebug-before 31) 33 (listp ...)) (edebug-after 0 34 epa-file-encrypt-to)) ((edebug-after (edebug-before 35) 37 (stringp ...)) (edebug-after (edebug-before 38) 40 (list ...)))))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons (edebug-after (edebug-before 45) 46 #'epa-file-passphrase-callback-function) (edebug-after 0 47 file))))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons (edebug-after (edebug-before 53) 54 #'epa-progress-callback-function) (edebug-after (edebug-before 55) 57 (format "Encrypting %s" (edebug-after 0 56 file))))))) (edebug-after (edebug-before 60) 65 (let ((cl-x (edebug-after 0 62 context))) (or (let ((cl-x cl-x)) (progn (and (memq ... cl-struct-epg-context-tags) t))) (signal 'wrong-type-argument (list 'epg-context cl-x))) (let* ((v cl-x)) (edebug-after (edebug-before 61) 63 (aset v 4 (edebug-after 0 64 epa-armor)))))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string (edebug-after 0 69 context) (edebug-after ... 109 ...) (edebug-after ... 140 ...))))) (error (edebug-after (edebug-before 143) 145 (epa-display-error (edebug-after 0 144 context))) (edebug-after (edebug-before 146) 156 (if (edebug-after (edebug-before 147) 152 (setq entry ...)) (edebug-after (edebug-before 153) 155 (setcdr ... nil)))) (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after (edebug-before 158) 162 (cons "Opening output file" ...))))))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list (edebug-after 0 169 string) nil (edebug-after 0 170 file) (edebug-after 0 171 append) (edebug-after 0 172 visit) (edebug-after 0 173 lockname) (edebug-after 0 174 mustbenew))))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp 'last-coding-system-used)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used (edebug-after 0 181 coding-system))))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq (edebug-after 0 186 visit) t)) (edebug-after (edebug-before 188) 194 (progn (edebug-after (edebug-before 189) 191 (setq buffer-file-name (edebug-after 0 190 file))) (edebug-after (edebug-before 192) 193 (set-visited-file-modtime)))) (edebug-after (edebug-before 195) 206 (if (edebug-after (edebug-before 196) 198 (stringp (edebug-after 0 197 visit))) (edebug-after (edebug-before 199) 205 (progn (edebug-after ... 201 ...) (edebug-after ... 204 ...))))))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or (edebug-after (edebug-before 210) 212 (eq (edebug-after 0 211 visit) t)) (edebug-after (edebug-before 213) 215 (eq (edebug-after 0 214 visit) nil)) (edebug-after (edebug-before 216) 218 (stringp (edebug-after 0 217 visit))))) (edebug-after (edebug-before 220) 222 (message "Wrote %s" (edebug-after 0 221 buffer-file-name))))))
  (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or (edebug-after 0 12 coding-system-for-write) (edebug-after (edebug-before 13) 26 (if ... ... ...))))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ((edebug-after ... 33 ...) (edebug-after 0 34 epa-file-encrypt-to)) ((edebug-after ... 37 ...) (edebug-after ... 40 ...))))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons (edebug-after (edebug-before 45) 46 #'epa-file-passphrase-callback-function) (edebug-after 0 47 file))))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons (edebug-after (edebug-before 53) 54 #'epa-progress-callback-function) (edebug-after (edebug-before 55) 57 (format "Encrypting %s" ...)))))) (edebug-after (edebug-before 60) 65 (let ((cl-x (edebug-after 0 62 context))) (or (let ((cl-x cl-x)) (progn (and ... t))) (signal 'wrong-type-argument (list 'epg-context cl-x))) (let* ((v cl-x)) (edebug-after (edebug-before 61) 63 (aset v 4 (edebug-after 0 64 epa-armor)))))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after (edebug-before 68) 141 (epg-encrypt-string ... ... ...)))) (error (edebug-after (edebug-before 143) 145 (epa-display-error (edebug-after 0 144 context))) (edebug-after (edebug-before 146) 156 (if (edebug-after ... 152 ...) (edebug-after ... 155 ...))) (edebug-after (edebug-before 157) 163 (signal 'file-error (edebug-after ... 162 ...)))))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list (edebug-after 0 169 string) nil (edebug-after 0 170 file) (edebug-after 0 171 append) (edebug-after 0 172 visit) (edebug-after 0 173 lockname) (edebug-after 0 174 mustbenew))))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp 'last-coding-system-used)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used (edebug-after 0 181 coding-system))))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq (edebug-after 0 186 visit) t)) (edebug-after (edebug-before 188) 194 (progn (edebug-after (edebug-before 189) 191 (setq buffer-file-name ...)) (edebug-after (edebug-before 192) 193 (set-visited-file-modtime)))) (edebug-after (edebug-before 195) 206 (if (edebug-after (edebug-before 196) 198 (stringp ...)) (edebug-after (edebug-before 199) 205 (progn ... ...)))))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or (edebug-after (edebug-before 210) 212 (eq ... t)) (edebug-after (edebug-before 213) 215 (eq ... nil)) (edebug-after (edebug-before 216) 218 (stringp ...)))) (edebug-after (edebug-before 220) 222 (message "Wrote %s" (edebug-after 0 221 buffer-file-name)))))))
  (closure ((mustbenew) (lockname . "~/.config/emacs/secrets/authinfo.gpg") (visit . t) (append) (file . "/Users/stardiviner/.config/emacs/secrets/authinfo....") (end . 1960) (start . 1) t) nil :closure-dont-trim-context (edebug-after (edebug-before 0) 4 (if (edebug-after 0 1 append) (edebug-after (edebug-before 2) 3 (error "Can't append to the file")))) (edebug-after (edebug-before 5) 9 (setq file (edebug-after (edebug-before 6) 8 (expand-file-name (edebug-after 0 7 file))))) (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or (edebug-after 0 12 coding-system-for-write) (edebug-after ... 26 ...)))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond (... ...) (... ...)))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons (edebug-after ... 46 ...) (edebug-after 0 47 file))))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons (edebug-after ... 54 ...) (edebug-after ... 57 ...))))) (edebug-after (edebug-before 60) 65 (let ((cl-x (edebug-after 0 62 context))) (or (let (...) (progn ...)) (signal 'wrong-type-argument (list ... cl-x))) (let* ((v cl-x)) (edebug-after (edebug-before 61) 63 (aset v 4 ...))))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string (edebug-after ... 141 ...))) (error (edebug-after (edebug-before 143) 145 (epa-display-error ...)) (edebug-after (edebug-before 146) 156 (if ... ...)) (edebug-after (edebug-before 157) 163 (signal ... ...))))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list (edebug-after 0 169 string) nil (edebug-after 0 170 file) (edebug-after 0 171 append) (edebug-after 0 172 visit) (edebug-after 0 173 lockname) (edebug-after 0 174 mustbenew))))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp 'last-coding-system-used)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used (edebug-after 0 181 coding-system))))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq (edebug-after 0 186 visit) t)) (edebug-after (edebug-before 188) 194 (progn (edebug-after ... 191 ...) (edebug-after ... 193 ...))) (edebug-after (edebug-before 195) 206 (if (edebug-after ... 198 ...) (edebug-after ... 205 ...))))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or (edebug-after ... 212 ...) (edebug-after ... 215 ...) (edebug-after ... 218 ...))) (edebug-after (edebug-before 220) 222 (message "Wrote %s" (edebug-after 0 221 buffer-file-name))))))))()
  edebug-default-enter(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil) (closure ((mustbenew) (lockname . "~/.config/emacs/secrets/authinfo.gpg") (visit . t) (append) (file . "/Users/stardiviner/.config/emacs/secrets/authinfo....") (end . 1960) (start . 1) t) nil :closure-dont-trim-context (edebug-after (edebug-before 0) 4 (if (edebug-after 0 1 append) (edebug-after (edebug-before 2) 3 (error "Can't append to the file")))) (edebug-after (edebug-before 5) 9 (setq file (edebug-after (edebug-before 6) 8 (expand-file-name (edebug-after 0 7 file))))) (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or ... ...))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ... ...))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons ... ...)))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons ... ...)))) (edebug-after (edebug-before 60) 65 (let ((cl-x ...)) (or (let ... ...) (signal ... ...)) (let* (...) (edebug-after ... 63 ...)))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string ...)) (error (edebug-after ... 145 ...) (edebug-after ... 156 ...) (edebug-after ... 163 ...)))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list ... nil ... ... ... ... ...)))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp ...)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used ...)))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq ... t)) (edebug-after (edebug-before 188) 194 (progn ... ...)) (edebug-after (edebug-before 195) 206 (if ... ...)))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or ... ... ...)) (edebug-after (edebug-before 220) 222 (message "Wrote %s" ...))))))))
  edebug-default-enter(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil) (closure ((mustbenew) (lockname . "~/.config/emacs/secrets/authinfo.gpg") (visit . t) (append) (file . "/Users/stardiviner/.config/emacs/secrets/authinfo....") (end . 1960) (start . 1) t) nil :closure-dont-trim-context (edebug-after (edebug-before 0) 4 (if (edebug-after 0 1 append) (edebug-after (edebug-before 2) 3 (error "Can't append to the file")))) (edebug-after (edebug-before 5) 9 (setq file (edebug-after (edebug-before 6) 8 (expand-file-name (edebug-after 0 7 file))))) (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or ... ...))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ... ...))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons ... ...)))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons ... ...)))) (edebug-after (edebug-before 60) 65 (let ((cl-x ...)) (or (let ... ...) (signal ... ...)) (let* (...) (edebug-after ... 63 ...)))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string ...)) (error (edebug-after ... 145 ...) (edebug-after ... 156 ...) (edebug-after ... 163 ...)))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list ... nil ... ... ... ... ...)))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp ...)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used ...)))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq ... t)) (edebug-after (edebug-before 188) 194 (progn ... ...)) (edebug-after (edebug-before 195) 206 (if ... ...)))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or ... ... ...)) (edebug-after (edebug-before 220) 222 (message "Wrote %s" ...))))))))
  edebug-enter(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil) (closure ((mustbenew) (lockname . "~/.config/emacs/secrets/authinfo.gpg") (visit . t) (append) (file . "/Users/stardiviner/.config/emacs/secrets/authinfo....") (end . 1960) (start . 1) t) nil :closure-dont-trim-context (edebug-after (edebug-before 0) 4 (if (edebug-after 0 1 append) (edebug-after (edebug-before 2) 3 (error "Can't append to the file")))) (edebug-after (edebug-before 5) 9 (setq file (edebug-after (edebug-before 6) 8 (expand-file-name (edebug-after 0 7 file))))) (edebug-after (edebug-before 10) 224 (let* ((coding-system (edebug-after (edebug-before 11) 27 (or ... ...))) (context (edebug-after (edebug-before 28) 29 (epg-make-context))) (coding-system-for-write 'binary) string entry (recipients (edebug-after (edebug-before 30) 41 (cond ... ...))) buffer) (edebug-after (edebug-before 42) 49 (epg-context-set-passphrase-callback (edebug-after 0 43 context) (edebug-after (edebug-before 44) 48 (cons ... ...)))) (edebug-after (edebug-before 50) 59 (epg-context-set-progress-callback (edebug-after 0 51 context) (edebug-after (edebug-before 52) 58 (cons ... ...)))) (edebug-after (edebug-before 60) 65 (let ((cl-x ...)) (or (let ... ...) (signal ... ...)) (let* (...) (edebug-after ... 63 ...)))) (edebug-after (edebug-before 66) 164 (condition-case error (edebug-after (edebug-before 67) 142 (setq string ...)) (error (edebug-after ... 145 ...) (edebug-after ... 156 ...) (edebug-after ... 163 ...)))) (edebug-after (edebug-before 165) 176 (epa-file-run-real-handler (edebug-after (edebug-before 166) 167 #'write-region) (edebug-after (edebug-before 168) 175 (list ... nil ... ... ... ... ...)))) (edebug-after (edebug-before 177) 183 (if (edebug-after (edebug-before 178) 179 (boundp ...)) (edebug-after (edebug-before 180) 182 (setq last-coding-system-used ...)))) (edebug-after (edebug-before 184) 207 (if (edebug-after (edebug-before 185) 187 (eq ... t)) (edebug-after (edebug-before 188) 194 (progn ... ...)) (edebug-after (edebug-before 195) 206 (if ... ...)))) (edebug-after (edebug-before 208) 223 (if (edebug-after (edebug-before 209) 219 (or ... ... ...)) (edebug-after (edebug-before 220) 222 (message "Wrote %s" ...))))))))
  epa-file-write-region(nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil)
  apply(epa-file-write-region (nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil))
  (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args))
  (let ((op (get operation 'epa-file))) (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args)))
  (progn (let ((op (get operation 'epa-file))) (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args))))
  (unwind-protect (progn (let ((op (get operation 'epa-file))) (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args)))) (set-match-data saved-match-data t))
  (let ((saved-match-data (match-data))) (unwind-protect (progn (let ((op (get operation 'epa-file))) (if (and op (not epa-inhibit)) (apply op args) (epa-file-run-real-handler operation args)))) (set-match-data saved-match-data t)))
  epa-file-handler(write-region nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg" nil)
  write-region(nil nil "/Users/stardiviner/.config/emacs/secrets/authinfo...." nil t "~/.config/emacs/secrets/authinfo.gpg")
  basic-save-buffer-2()
  basic-save-buffer-1()
  basic-save-buffer(t)
  save-buffer(1)
  funcall-interactively(save-buffer 1)
  call-interactively(save-buffer nil nil)
  command-execute(save-buffer)
#+end_example

Environment:

#+begin_src sh :eval no
$ gpg --version
gpg (GnuPG) 2.4.1
libgcrypt 1.10.2
Copyright (C) 2023 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/stardiviner/.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
#+end_src

#+begin_src emacs-lisp
(emacs-version)
#+end_src

#+RESULTS[(2023-05-02 10:57:56) ad277f3210da682b9a8f2b15d7843ef0163e6cf2]:
: GNU Emacs 30.0.50 (build 1, aarch64-apple-darwin22.4.0, NS appkit-2299.50 Version 13.3.1 (Build 22E261))
:  of 2023-04-27

Here is what I tried some troubleshooting:


- [X] troubleshooting
  + [X] uninstall newly installed Emacs packages "chatgpt-shell" etc.
  + [X] check out GnuPG config files
  + [X] redo encrypt & sign =authinfo.gpg= file
  + [X] emacs minimal config for reproduce -> confirmed problem
- [X] search
  + [X] https://superuser.com/questions/366035/how-can-i-disable-prompt-about-trust-when-encrypting-file-with-gpg-in-emacs
  + [X] https://superuser.com/questions/1204820/emacs-easypg-asks-what-key-to-use-although-epa-file-encrypt-to-already-specified
- [X] troubleshooting
  - [X] src_emacs-lisp{(getenv "DISPLAY")} {{{results(=ssh-askpass=)}}}
- [X] edebug
  + [X] save-buffer
    - [X] epa-file-handler
      + [X] epa-file-write-region
        - [X] epg-encrypt-string
          + [X] epg-start-encrypt
            - [X] epg-wait-for-status
              + [X] accept-process-output -> the process seems return 1 exit code?

- [X] epg context

#+begin_src emacs-lisp
(epg-make-context)
#+end_src

#+RESULTS[(2023-05-02 09:42:28) ff5134e662dc53f52cd8e5807acefe25a94cc5c3]:
: #s(epg-context :protocol OpenPGP :program "/opt/homebrew/bin/gpg" :home-directory "/Users/stardiviner/.gnupg" :armor nil :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (epa-passphrase-callback-function) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process nil :output-file nil :result nil :operation nil :pinentry-mode loopback :error-output "" :error-buffer nil)

- [X] find bellowing two key ID belongs where

Untrusted key "AEDA8A17BB08B786" ---> fingerprint "0DEF7425E79FE2E0090B424BAEDA8A17BB08B786" --> my old key
((invalid-recipient (reason . 10) (requested . "B8C4B8E547C32433"))) --> "F09F650D7D674819892591401B5DF1C95AE89AC3" --> my current new gnupg key

Question: I don't know why my current gnupg key and old gnupg key are together.

#+begin_src sh
gpg --list-public-keys 0DEF7425E79FE2E0090B424BAEDA8A17BB08B786
#+end_src

#+RESULTS[(2023-05-02 10:28:48) 8315506b0a6956294dbacb0276a25b482a834e5c]:
: pub   rsa2048 2012-03-02 [SC]
:       9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433
: uid           [ultimate] Christopher Miles (stardiviner, numbchild) <numbchild@gmail.com>
: sub   rsa2048 2012-03-02 [E]
:

#+begin_src sh :eval no
gpg --edit-key 0DEF7425E79FE2E0090B424BAEDA8A17BB08B786
#+end_src

- [X] downgrade macOS Homebrew installed GnuPG version
  Formula: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gnupg.rb
  History: https://github.com/Homebrew/homebrew-core/commits/c72069733f8b12857afe9a9cdd1c9a73bc16f4a8/Formula/gnupg.rb
  #+begin_src sh
  brew install gnupg@2.2
  #+end_src
- [X] restart macOS system

- [X] =$ emacs-minimal-init=
  + [X] open and save modified "authinfo.gpg" file success

- [X] try to re-install gnupg broken version, re-install emacs@30 through Homebrew -> still have
  problem, so I think problem is not on Emacs side.

- [X] testing decrypt & encrypting in terminal and Emacs shell with gpg command.
  + [X] test decrypt & encrypt in terminal with gpg command is fine.
  + [X] test decrypt & encrypt in Emacs =[M-x shell]= with gpg command is fine.
    #+begin_example
    bash-5.2$ bash-5.2$
    bash-5.2$ pwd
    /Users/stardiviner/.config/emacs/secrets
    bash-5.2$ gpg -d authinfo.gpg > authinfo
    gpg: encrypted with rsa2048 key, ID 0251FA6886EB6B77, created 2015-01-31
          "stardiviner (numbchild@gmail.com) <numbchild@gmail.com>"
    gpg: encrypted with rsa2048 key, ID AEDA8A17BB08B786, created 2012-03-02
          "Christopher Miles (stardiviner, numbchild) <numbchild@gmail.com>"
    gpg: using "F09F650D7D674819892591401B5DF1C95AE89AC3" as default secret key for signing
    bash-5.2$ ls
    accounts.json.gpg authinfo authinfo.gpg
    bash-5.2$
    #+end_example
  + [X] test decrypt & encrypt in Emacs with ~start-process~ -> works fine
    #+begin_src emacs-lisp :dir "~/.config/emacs/secrets/" :results output
    (let ((output-buffer "*gnupg-decrypt*"))
      (pwd)
      (when (get-buffer output-buffer)
        (with-current-buffer (get-buffer output-buffer)
          (erase-buffer)))
      (start-process
       "gnupg-testing"
       output-buffer
       "gpg"
       "--decrypt" "authinfo.gpg"
       ;; ">" "authinfo"
       )
      (sleep-for 2)
      (print
       (with-current-buffer (get-buffer output-buffer)
         (buffer-substring-no-properties (point-min) (point-max)))))
    #+end_src

- [X] This reminds me of https://orgmode.org/list/2023-01-22T18-32-17@devnull.Karl-Voit.at
  Check out my private key info:
  #+begin_src sh
  # gpg -K
  gpg --list-secret-keys --verbose --with-subkey-fingerprints
  #+end_src

  #+RESULTS[(2023-05-03 01:41:09) 80ae7b09060704481af2e01ae6f6086262d4a05c]:
  #+begin_example
  /Users/stardiviner/.gnupg/pubring.kbx
  -------------------------------------
  sec   rsa2048 2015-01-31 [SC]
        F09F650D7D674819892591401B5DF1C95AE89AC3
  uid           [ultimate] stardiviner (numbchild@gmail.com) <numbchild@gmail.com>
  uid           [ultimate] stardiviner (Christopher Miles) <numbchild@gmail.com>
  uid           [ultimate] [jpeg image of size 3384]
  ssb   rsa2048 2015-01-31 [E]
        32A8581A6E137ABD26DA2F570251FA6886EB6B77

  #+end_example

- [X] [[mu4e:msgid:87354esdhk.fsf@localhost][The further step we can try is following what epg does.]]

  I am now looking into ~epg--start~ source code and I note ~epg-debug~ variable, which might provide
  some more info to think about. Also, note the ~make-process~ call in ~epg--start~ - you may try to run
  it manually, similar to ~start-process~ and check if it fails. (For me, ~:connection-type 'pipe~ part
  is a bit fishy - I recall there were some quirks related to it;
  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44824 ... but it was the opposite to having
  ~'pipe~ AFAIR).

- [X] toggle option ~epg-debug~

  #+begin_src emacs-lisp
  (setq epg-debug t)
  #+end_src

  #+begin_example :file "*epg-debug*"
  GPG_AGENT_INFO is not set
  /opt/homebrew/bin/gpg --no-tty --status-fd 1 --yes --enable-progress-filter --command-fd 0 --output /var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T/epg-outputMMP3Zp --pinentry-mode loopback --decrypt -- /Users/stardiviner/.config/emacs/secrets/authinfo.gpg
  [GNUPG:] PROGRESS /Users/stardiviner/. ? 0 1204 B
  [GNUPG:] ENC_TO AEDA8A17BB08B786 1 0
  [GNUPG:] ENC_TO 0251FA6886EB6B77 1 0
  [GNUPG:] KEY_CONSIDERED F09F650D7D674819892591401B5DF1C95AE89AC3 0
  [GNUPG:] KEY_CONSIDERED 9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433 0
  [GNUPG:] KEY_CONSIDERED F09F650D7D674819892591401B5DF1C95AE89AC3 0
  [GNUPG:] KEY_CONSIDERED F09F650D7D674819892591401B5DF1C95AE89AC3 0
  [GNUPG:] DECRYPTION_KEY 32A8581A6E137ABD26DA2F570251FA6886EB6B77 F09F650D7D674819892591401B5DF1C95AE89AC3 u
  [GNUPG:] NO_SECKEY AEDA8A17BB08B786
  [GNUPG:] BEGIN_DECRYPTION
  [GNUPG:] DECRYPTION_INFO 2 7 0
  [GNUPG:] PROGRESS /Users/stardiviner/. ? 1204 1204 B
  [GNUPG:] PLAINTEXT 62 1682998161
  [GNUPG:] DECRYPTION_OKAY
  [GNUPG:] GOODMDC
  [GNUPG:] END_DECRYPTION
  GPG_AGENT_INFO is not set
  /opt/homebrew/bin/gpg --no-tty --status-fd 1 --yes --enable-progress-filter --command-fd 0 --output /var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T/epg-outputE3zoeh --pinentry-mode loopback --encrypt -r 1B5DF1C95AE89AC3 -r B8C4B8E547C32433
  [GNUPG:] KEY_CONSIDERED F09F650D7D674819892591401B5DF1C95AE89AC3 0
  [GNUPG:] KEY_CONSIDERED 9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433 0
  [GNUPG:] KEY_CONSIDERED F09F650D7D674819892591401B5DF1C95AE89AC3 0
  GPG_AGENT_INFO is not set
  /opt/homebrew/bin/gpg --no-tty --status-fd 1 --yes --enable-progress-filter --command-fd 0 --output /var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T/epg-outputxPZRrb --pinentry-mode loopback --encrypt -r 1B5DF1C95AE89AC3 -r B8C4B8E547C32433
  [GNUPG:] KEY_CONSIDERED F09F650D7D674819892591401B5DF1C95AE89AC3 0
  [GNUPG:] KEY_CONSIDERED 9BAA92BCCDDDB9EF3B36CB99B8C4B8E547C32433 0
  [GNUPG:] KEY_CONSIDERED F09F650D7D674819892591401B5DF1C95AE89AC3 0
  #+end_example

- [X] test the debug output buffer printed full command in terminal. (remove =--output= option to see the output)

  #+begin_src sh :eval no
  gpg --no-tty --status-fd 1 --yes --enable-progress-filter --command-fd 0 --pinentry-mode loopback --decrypt -- /Users/stardiviner/.config/emacs/secrets/authinfo.gpg
  # after input password, it decrypted success
  #+end_src
   
  The encrypt command seems missing input file.

  #+begin_src sh :eval no
  gpg --no-tty --status-fd 1 --yes --enable-progress-filter --command-fd 0 --pinentry-mode loopback --encrypt -r 1B5DF1C95AE89AC3 -r B8C4B8E547C32433
  #+end_src

- [X] I look into ~epg--start~ source code. note the ~make-process~ call in ~epg--start~ - you may try to
  run it manually, similar to ~start-process~ and check if it fails. (For me, ~:connection-type 'pipe~
  part is a bit fishy.)

  #+begin_src emacs-lisp :eval no
  ;;; `epg-start-encrypt' -> `epg--start'
  (let ((context
         #s(epg-context :protocol OpenPGP :program "/opt/homebrew/bin/gpg" :home-directory nil :armor nil :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (epa-file-passphrase-callback-function . "/Users/stardiviner/.config/emacs/secrets/authinfo.gpg") :progress-callback (epa-progress-callback-function . "Encrypting /Users/stardiviner/.config/emacs/secrets/authinfo.gpg") :edit-callback nil :signers nil :sender nil :sig-notations nil :process nil :output-file "/var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T/epg-outputsyLCLb" :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer nil))
        (args '("--encrypt" #1="-r" "1B5DF1C95AE89AC3" #1# "B8C4B8E547C32433"))
        (error-process (make-pipe-process :name "epg-error"
                                          :buffer (generate-new-buffer " *epg-error*")
                                          ;; Suppress "XXX finished" line.
                                          :sentinel #'ignore
                                          :noquery t)))
    (make-process
     :name "epg"
     :buffer (generate-new-buffer " *epg*")
     :command (cons (epg-context-program context) args)
     :connection-type 'pipe
     :coding 'raw-text
     :filter #'epg--process-filter
     :stderr error-process
     :noquery t))
  #+end_src

[stardiviner]           <Hack this world!>      GPG key ID: 47C32433
IRC(freeenode): stardiviner                     Twitter:  @numbchild
Key fingerprint = 9BAA 92BC CDDD B9EF 3B36  CB99 B8C4 B8E5 47C3 2433
Blog: http://stardiviner.github.io/

reply via email to

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