lockbox

password manager
Log | Files | Refs | README | LICENSE

commit 6720064918f0cd5726206f8618b4802556fdfe8e
parent ac41059386c45eef2a93e0e22832e7580625c867
Author: Sean Enck <sean@ttypty.com>
Date:   Sun, 21 Aug 2022 09:47:09 -0400

rewrite is now it's own command

Diffstat:
MMakefile | 2+-
Dcmd/lb-rw/main.go | 37-------------------------------------
Mcmd/lb/main.go | 4++++
Ainternal/subcommands/readwrite.go | 42++++++++++++++++++++++++++++++++++++++++++
Mtests/run.sh | 2+-
5 files changed, 48 insertions(+), 39 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,7 +1,7 @@ VERSION := development DESTDIR := BUILD := bin/ -TARGETS := $(BUILD)lb $(BUILD)lb-rw $(BUILD)lb-rekey $(BUILD)lb-gitdiff $(BUILD)lb-totp +TARGETS := $(BUILD)lb $(BUILD)lb-rekey $(BUILD)lb-gitdiff $(BUILD)lb-totp LIBEXEC := $(DESTDIR)libexec/lockbox/ MAIN := $(DESTDIR)bin/lb TESTDIR := $(sort $(dir $(wildcard internal/**/*_test.go))) diff --git a/cmd/lb-rw/main.go b/cmd/lb-rw/main.go @@ -1,37 +0,0 @@ -// perform a read/write against a specific lockbox object. -package main - -import ( - "errors" - "flag" - "fmt" - - "github.com/enckse/lockbox/internal/encrypt" - "github.com/enckse/lockbox/internal/misc" -) - -func main() { - mode := flag.String("mode", "", "decrypt/encrypt") - key := flag.String("key", "", "security key") - file := flag.String("file", "", "file to process") - keyMode := flag.String("keymode", "", "key lookup mode") - flag.Parse() - l, err := encrypt.NewLockbox(encrypt.LockboxOptions{Key: *key, KeyMode: *keyMode, File: *file}) - if err != nil { - misc.Die("unable to make lockbox model instance", err) - } - switch *mode { - case "encrypt": - if err := l.Encrypt(nil); err != nil { - misc.Die("failed to encrypt", err) - } - case "decrypt": - results, err := l.Decrypt() - if err != nil { - misc.Die("failed to decrypt", err) - } - fmt.Println(string(results)) - default: - misc.Die("invalid mode", errors.New("bad mode")) - } -} diff --git a/cmd/lb/main.go b/cmd/lb/main.go @@ -163,6 +163,10 @@ func main() { if err := subcommands.ClearClipboardCallback(); err != nil { misc.Die("failed to handle clipboard clear", err) } + case "rw": + if err := subcommands.ReadWrite(args[2:]); err != nil { + misc.Die("read/write failed", err) + } default: lib := inputs.EnvOrDefault(inputs.LibExecEnv, libExec) if err := subcommands.LibExecCallback(subcommands.LibExecOptions{Directory: lib, Command: command, Args: args[2:]}); err != nil { diff --git a/internal/subcommands/readwrite.go b/internal/subcommands/readwrite.go @@ -0,0 +1,42 @@ +// Package subcommands perform a read/write against a specific lockbox object. +package subcommands + +import ( + "errors" + "flag" + "fmt" + + "github.com/enckse/lockbox/internal/encrypt" +) + +// ReadWrite performs singular read/write encryption operations. +func ReadWrite(args []string) error { + flags := flag.NewFlagSet("readwrite", flag.ExitOnError) + mode := flags.String("mode", "", "decrypt/encrypt") + key := flags.String("key", "", "security key") + file := flags.String("file", "", "file to process") + keyMode := flags.String("keymode", "", "key lookup mode") + if err := flags.Parse(args); err != nil { + return err + } + + l, err := encrypt.NewLockbox(encrypt.LockboxOptions{Key: *key, KeyMode: *keyMode, File: *file}) + if err != nil { + return err + } + switch *mode { + case "encrypt": + if err := l.Encrypt(nil); err != nil { + return err + } + case "decrypt": + results, err := l.Decrypt() + if err != nil { + return err + } + fmt.Println(string(results)) + default: + return errors.New("invalid read/write modeE") + } + return nil +} diff --git a/tests/run.sh b/tests/run.sh @@ -52,7 +52,7 @@ _run() { echo LOCKBOX_KEY="invalid" "$BIN/lb" show keys/one2 "$BIN/lb-rekey" -outkey "test" -outmode "plaintext" - "$BIN/lb-rw" -file bin/lb/keys/one2.lb -key "test" -keymode "plaintext" -mode "decrypt" + "$BIN/lb" rw -file bin/lb/keys/one2.lb -key "test" -keymode "plaintext" -mode "decrypt" } _hook > $HOOK