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

    improve scrypt-p logic
---
 age.el | 51 ++++++++++++++++++++++++++-------------------------
 1 file changed, 26 insertions(+), 25 deletions(-)

diff --git a/age.el b/age.el
index eeb24b7e3ec..c34b265f2ac 100644
--- a/age.el
+++ b/age.el
@@ -9,7 +9,7 @@
 ;; Homepage: https://github.com/anticomputer/age.el
 ;; Package-Requires: ((emacs "28.1"))
 ;; Keywords: data
-;; Version: 0.1.1
+;; Version: 0.1.2
 
 ;; This is a port of epg.el and epa-file.el, original copyright applies:
 
@@ -66,7 +66,7 @@
 (defconst age-package-name "age"
   "Name of this package.")
 
-(defconst age-version-number "0.1.1"
+(defconst age-version-number "0.1.2"
   "Version number of this package.")
 
 ;;; Options
@@ -345,29 +345,30 @@ question, and the callback data (if any)."
 
 (defun age-scrypt-p (file)
   "Check for passphrase scrypt stanza in age FILE."
-  (with-temp-buffer
-    ;; disable age file handling for this insert, we just want to grab a header
-    (let ((file-name-handler-alist (remq age-file-handler 
file-name-handler-alist))
-          (auto-mode-alist (remq age-file-auto-mode-alist-entry 
auto-mode-alist)))
-      (insert-file-contents-literally file nil 0 100))
-    (let ((lines
-           ;; grab the first two lines
-           (cl-loop repeat 2
-                    unless (eobp)
-                    collect
-                    (prog1 (buffer-substring-no-properties
-                            (line-beginning-position)
-                            (line-end-position))
-                      (forward-line 1)))))
-      ;; deal with empty/new files as well by checking for no lines
-      (when lines
-        ;; if the first line is the ascii armor marker, base64 decode the 
second line
-        (let ((b64 (string-match-p
-                    "-----BEGIN AGE ENCRYPTED FILE-----" (car lines)))
-              (l2 (cadr lines)))
-          ;; if the second line contains the scrypt stanza, it is a passphrase 
file
-          (when (string-match-p "-> scrypt " (if b64 (base64-decode-string l2) 
l2))
-            t))))))
+  (when (file-exists-p (expand-file-name file))
+    (with-temp-buffer
+      ;; disable age file handling for this insert, we just want to grab a 
header
+      (let ((file-name-handler-alist (remq age-file-handler 
file-name-handler-alist))
+            (auto-mode-alist (remq age-file-auto-mode-alist-entry 
auto-mode-alist)))
+        (insert-file-contents-literally file nil 0 100))
+      (let ((lines
+             ;; grab the first two lines
+             (cl-loop repeat 2
+                      unless (eobp)
+                      collect
+                      (prog1 (buffer-substring-no-properties
+                              (line-beginning-position)
+                              (line-end-position))
+                        (forward-line 1)))))
+        ;; deal with empty/new files as well by checking for no lines
+        (when (and lines (= (length lines) 2))
+          ;; if the first line is the ascii armor marker, base64 decode the 
second line
+          (let ((b64 (string-match-p
+                      "-----BEGIN AGE ENCRYPTED FILE-----" (car lines)))
+                (l2 (cadr lines)))
+            ;; if the second line contains the scrypt stanza, it is a 
passphrase file
+            (when (string-match-p "-> scrypt " (if b64 (base64-decode-string 
l2) l2))
+              t)))))))
 
 (defun age-context-result-for (context name)
   "Return the result of CONTEXT associated with NAME."

Reply via email to