Introduction
Introduction Statistics Contact Development Disclaimer Help
Refactored encryption error handling code - pee - Pee a password manager;Pee - …
git clone git://vernunftzentrum.de/pee.git
Log
Files
Refs
LICENSE
---
commit a09303351df8a4cf928cb0bac8167b631264d025
parent dcd1351050e076fccb2b080bd90f51e6c0b0d0ff
Author: Christian Kellermann <[email protected]>
Date: Fri, 8 Jan 2016 09:01:48 +0100
Refactored encryption error handling code
The encrypt-file procedure does the error handling now and aborts on
error with an exit code 1.
Diffstat:
pee.scm | 55 +++++++++++++-------------------
todo.org | 1 -
2 files changed, 22 insertions(+), 34 deletions(-)
---
diff --git a/pee.scm b/pee.scm
@@ -112,8 +112,15 @@
(enc/dec-file content passphrase symmetric-unbox)))
(define (encrypt-file file content passphrase)
- (with-output-to-file file
- (lambda () (display (enc/dec-file content passphrase symmetric-box)))))
+ (let ((cyphertext (enc/dec-file
+ (with-output-to-string (lambda () (pp content)))
+ passphrase
+ symmetric-box)))
+ (unless cyphertext
+ (print "Error: cannot encrypt password store.")
+ (exit 1))
+ (with-output-to-file file
+ (lambda () (display cyphertext)))))
(define (db-keys alist) (map car alist))
@@ -238,12 +245,9 @@
(let ((user (prompt-for "Username"))
(password (new-password))
(comment (prompt-for "Comment")))
- (unless (encrypt-file db-name
- (with-output-to-string (lambda ()
- (pp (cons (list e user pass…
- p)
- (print "Error while encrypting password store")
- (exit 1))
+ (encrypt-file db-name
+ (cons (list e user password comment) db)
+ p)
(print "Entry for " e " added.")))
(define (do-update db-name db p account)
@@ -255,14 +259,10 @@
(ask-for-choice "Change password?" "y" …
(new-password)
(second e))))
- (unless (encrypt-file db-name
- (with-output-to-string
- (lambda ()
- (pp (alist-update account (list user pa…
- p)
- (print "Error: Encryption failed.")
- (exit 1))
- (print "Entry '" account "' has been updated."))))
+ (encrypt-file db-name
+ (alist-update account (list user password comment) …
+ p)
+ (print "Entry '" account "' has been updated."))))
(else (print "Error> Entry for '" account "' not found.")
(exit 1))))
@@ -271,12 +271,8 @@
(lambda (e)
(print-without-password (cons account e))
(if (equal? "y" (ask-for-choice "Really delete account?" "y" "n"))
- (if (encrypt-file db-name (with-output-to-string (lambda () (pp…
- (print "Entry '" (car e) "' deleted.")
- (begin
- (print "Error: Encryption failed")
- (exit 1)))
- (print "Nothing done."))))
+ (encrypt-file db-name (alist-delete account db equal?) p)
+ (print "Entry '" (car e) "' deleted."))))
(else (print "Error: Entry for '" account "' not found")
(exit 1))))
@@ -311,12 +307,8 @@
(print "Error: Passphrases do not match.")
(print passphrase1 passphrase2)
(exit 1))
- (cond ((encrypt-file db-name (with-output-to-string (lambda () (pp content…
- (print "Password store " db-name " initialised.")
- (exit 0))
- (else
- (print "Could not encrypt password store.")
- (exit 1)))))
+ (encrypt-file db-name content passphrase1)
+ (print "Password store " db-name " initialised.")))
(define (do-change-passphrase db-name db old-passphrase)
(print "I will ask you twice for the new passphrase.")
@@ -328,11 +320,8 @@
((equal? passphrase1 old-passphrase)
(print "Error: Passphrase is the same as old passphrase")
(exit 1))
- ((encrypt-file db-name (with-output-to-string (lambda () (pp db)))…
- (print "Password store " db-name " reencrypted."))
- (else
- (print "Could not re-encrypt password store.")
- (exit 1)))))
+ (else (encrypt-file db-name db passphrase1)
+ (print "Password store " db-name " reencrypted.")))))
(define (main args)
(let* ((opts
diff --git a/todo.org b/todo.org
@@ -3,7 +3,6 @@
** initialise-db should not overwrite the file so easily
** Add a version counter to the file, so we can make assumptions about the fil…
** Refactor the exit code
-** Refactor the encryption code
** Make password prompts not echo the password on the terminal
** Make ask-for-choice react on a single keystroke
** Add a last modified date to entries, this should make it easier when mergin…
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.