branch: elpa/age
commit 7389f9c1fddb80d5b7453a830aa962d660973b99
Author: Bas Alberts <[email protected]>
Commit: Bas Alberts <[email protected]>

    update README for v0.1 release
---
 README.org | 131 ++++++++++++++++++++++++++++---------------------------------
 1 file changed, 61 insertions(+), 70 deletions(-)

diff --git a/README.org b/README.org
index 678141bb9ce..2c2a4f7a68f 100644
--- a/README.org
+++ b/README.org
@@ -101,19 +101,6 @@ which rage does support.
    '("~/.ssh/age_yubikey.pub"
      "~/.ssh/age_recovery.pub"))
   :config
-  ;; bind identity and recipient to nil for temporary passphrase mode
-  (defun my/age-open-with-passphrase (file)
-    (interactive "fPassphrase encrypted age file: ")
-    (cl-letf (((symbol-value 'age-default-identity) nil)
-              ((symbol-value 'age-default-recipient) nil))
-      (find-file file)))
-
-  (defun my/age-save-with-passphrase ()
-    (interactive)
-    (cl-letf (((symbol-value 'age-default-identity) nil)
-              ((symbol-value 'age-default-recipient) nil))
-      (save-buffer)))
-
   (age-file-enable))
 
 (provide 'my-age-init)
@@ -125,7 +112,9 @@ has the following patches applied:
 https://patch-diff.githubusercontent.com/raw/org-roam/org-roam/pull/2302.patch
 
 This patch enables ~.org.age~ discoverability in ~org-roam~ and beyond that
-everything just works the same as you're used to with ~.org.gpg~ files.
+everything just works the same as you're used to with ~.org.gpg~ files. This
+patch was merged into org-roam ~main~ on Dec 31, 2022, so any org-roam release
+post that date should provide you with age support out of the box.
 
 * Other fun examples
 
@@ -167,40 +156,58 @@ I'm also using this as a way to get a good feel for just 
how much Emacs is
 interacting with my encrypted data.
 
 #+begin_src emacs-lisp
-  (require 'notifications)
-
-  (defun my/age-notify (msg)
-    (cond ((eq system-type 'gnu/linux)
-           (notifications-notify
-            :title "age.el"
-            :body (format "%s" msg)
-            :urgency 'low
-            :timeout 800))
-          ((eq system-type 'darwin)
-           (do-applescript
-            (format "display notification \"%s\" with title \"age.el\"" msg)))
-          (t
-           (message (format "age.el: %s" msg)))))
-
-  (defun my/age-notify-decrypt (&rest args)
-    (my/age-notify "decrypt"))
-
-  (defun my/age-notify-encrypt (&rest args)
-    (my/age-notify "encrypt"))
-
-  (advice-add #'age-start-decrypt :before #'my/age-notify-decrypt)
-  (advice-add #'age-start-encrypt :before #'my/age-notify-encrypt)
+(require 'notifications)
+
+(defun my/age-notify (msg)
+  (cond ((eq system-type 'gnu/linux)
+         (notifications-notify
+          :title "age.el"
+          :body (format "%s" msg)
+          :urgency 'low
+          :timeout 800))
+        ((eq system-type 'darwin)
+         (do-applescript
+          (format "display notification \"%s\" with title \"age.el\"" msg)))
+        (t
+         (message (format "age.el: %s" msg)))))
+
+(defun my/age-notify-decrypt (&rest args)
+  (my/age-notify "decrypt"))
+
+(defun my/age-notify-encrypt (&rest args)
+  (my/age-notify "encrypt"))
+
+(defun my/age-toggle-decrypt-notifications ()
+  (interactive)
+  (cond ((advice-member-p #'my/age-notify-decrypt #'age-start-decrypt)
+         (advice-remove #'age-start-decrypt #'my/age-notify-decrypt)
+         (message "Disabled age decrypt notifications."))
+        (t
+         (advice-add #'age-start-decrypt :before #'my/age-notify-decrypt)
+         (message "Enabled age decrypt notifications."))))
+
+(defun my/age-toggle-encrypt-notifications ()
+  (interactive)
+  (cond ((advice-member-p #'my/age-notify-encrypt #'age-start-encrypt)
+         (advice-remove #'age-start-encrypt #'my/age-notify-encrypt)
+         (message "Disabled age encrypt notifications."))
+        (t
+         (advice-add #'age-start-encrypt :before #'my/age-notify-encrypt)
+         (message "Enabled age encrypt notifications."))))
+
+;; we only care about decrypt notifications really
+(my/age-toggle-decrypt-notifications)
 #+end_src
 
 * Known issues
 
 ** Lack of pinentry support in age
 
-The age CLI does not support pinentry by design. Users are encouraged
-to use identity (private) keys and recipient (public) keys, and manage
-those secrets outside of Emacs accordingly. As such age.el does not
-currently support passphrase based age Encryption/Decryption as we
-do not have a tty available to provide a passphrase to age (I think).
+The age reference client does not support pinentry by design. Users are
+encouraged to use identity (private) keys and recipient (public) keys, and
+manage those secrets outside of Emacs accordingly. As such age.el does not
+currently support passphrase based age Encryption/Decryption as we do not have
+a tty available to provide a passphrase to age (I think).
 
 *** Workaround: pinentry support through rage
 
@@ -259,19 +266,15 @@ prompt you for passphrases in the minibuffer.
 
 ** Direct use of passphrase encrypted age files
 
-NOTE: by default you _CAN_ use passphrase encrypted age files as identities
-and this will work just fine with e.g. rage + pinentry. This issue is for when
-you want to _directly_ open/save passphrase encrypted age files outside of the
-identity based pinentry use case.
+This requires you to use rage, or another age-spec compliant client that
+supports pinentry.
 
-age.el does not encourage the use of passphrase encrypted files as anything
-but an identity container, however, if you want to open/save passphrase
-encrypted age files, you may do so by employing the following letf bindings to
-provide yourself with functions that enable direct passphrase support in
-age.el.
+By default, age.el will be able to open and save passphrase encrypted age
+files. It will detect the scrypt stanza in the age file and set the age.el
+handling context for passphrase mode accordingly.
 
-Note that this requires you to use rage, or another age-spec compliant client
-that supports pinentry.
+You can also programmatically force age.el into passphrase mode by binding
+~age-default-identity~ and ~age-default-recipient~ to nil temporarily, e.g.:
 
 #+begin_src emacs-lisp
 (defun my/age-open-with-passphrase (file)
@@ -287,24 +290,12 @@ that supports pinentry.
     (save-buffer)))
 #+end_src
 
-Binding age-default-identity and age-default-recipient to nil temporarily
-enables passphrase mode on age.el, and the above functions allow you to open,
-edit, and save passphrase encrypted age files.
-
-** org-roam does not support .age files
-
-A pull request to add age discoverability to org-roam is pending review at:
-https://github.com/org-roam/org-roam/pull/2302
-
-In the meantime you can use the following package recipe to build an org-roam
-version that supports age encrypted files:
-
-#+begin_src emacs-lisp
-(org-roam :fetcher github
-          :repo "anticomputer/org-roam" :branch "age-support")
-#+end_src
+** org-roam support for age encrypted org files
 
-I am using org-roam with .age encrypted files through age.el without issues.
+Org-roam has merged https://github.com/org-roam/org-roam/pull/2302 which
+provides ~.org.age~ discoverability support for org-roam, so if you update to
+the latest release from e.g. MELPA or the main branch, org-roam will function
+with .age encrypted org files.
 
 * Disclaimer
 

Reply via email to