lockbox

password manager
Log | Files | Refs | README | LICENSE

commit b8485253f70058222a564adc152d6a6fb31f5b5b
parent 65ec17b09b6c6e4452a82ea95d685d19f2ca6e96
Author: Sean Enck <sean@ttypty.com>
Date:   Fri, 15 Jul 2022 18:07:49 -0400

using options to cleanup method

Diffstat:
Mcmd/lb-diff/main.go | 2+-
Mcmd/lb-rekey/main.go | 4++--
Mcmd/lb-rw/main.go | 2+-
Mcmd/lb-totp/main.go | 2+-
Mcmd/lb/main.go | 4++--
Minternal/encrypt.go | 15+++++++++++++--
6 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/cmd/lb-diff/main.go b/cmd/lb-diff/main.go @@ -9,7 +9,7 @@ import ( func main() { args := os.Args - l, err := internal.NewLockbox("", "", args[len(args)-1]) + l, err := internal.NewLockbox(internal.LockboxOptions{File: args[len(args)-1]}) if err != nil { internal.Die("unable to make lockbox model instance", err) } diff --git a/cmd/lb-rekey/main.go b/cmd/lb-rekey/main.go @@ -20,7 +20,7 @@ func main() { } for _, file := range found { fmt.Printf("rekeying: %s\n", file) - in, err := internal.NewLockbox(*inKey, *inMode, file) + in, err := internal.NewLockbox(internal.LockboxOptions{Key: *inKey, KeyMode: *inMode, File: file}) if err != nil { internal.Die("unable to make input lockbox", err) } @@ -28,7 +28,7 @@ func main() { if err != nil { internal.Die("failed to process file decryption", err) } - out, err := internal.NewLockbox(*outKey, *outMode, file) + out, err := internal.NewLockbox(internal.LockboxOptions{Key: *outKey, KeyMode: *outMode, File: file}) if err != nil { internal.Die("unable to make output lockbox", err) } diff --git a/cmd/lb-rw/main.go b/cmd/lb-rw/main.go @@ -13,7 +13,7 @@ func main() { file := flag.String("file", "", "file to process") keyMode := flag.String("keymode", "", "key lookup mode") flag.Parse() - l, err := internal.NewLockbox(*key, *keyMode, *file) + l, err := internal.NewLockbox(internal.LockboxOptions{Key: *key, KeyMode: *keyMode, File: *file}) if err != nil { internal.Die("unable to make lockbox model instance", err) } diff --git a/cmd/lb-totp/main.go b/cmd/lb-totp/main.go @@ -83,7 +83,7 @@ func display(token string, clip, once, short bool) error { if !internal.PathExists(store) { return internal.NewLockboxError("object does not exist") } - l, err := internal.NewLockbox("", "", store) + l, err := internal.NewLockbox(internal.LockboxOptions{File: store}) if err != nil { return err } diff --git a/cmd/lb/main.go b/cmd/lb/main.go @@ -141,7 +141,7 @@ func main() { if password == "" { internal.Die("empty password provided", internal.NewLockboxError("password can NOT be empty")) } - l, err := internal.NewLockbox("", "", entry) + l, err := internal.NewLockbox(internal.LockboxOptions{File: entry}) if err != nil { internal.Die("unable to make lockbox model instance", err) } @@ -205,7 +205,7 @@ func main() { if !internal.PathExists(entry) { internal.Die("invalid entry", internal.NewLockboxError("entry not found")) } - l, err := internal.NewLockbox("", "", entry) + l, err := internal.NewLockbox(internal.LockboxOptions{File: entry}) if err != nil { internal.Die("unable to make lockbox model instance", err) } diff --git a/internal/encrypt.go b/internal/encrypt.go @@ -29,10 +29,21 @@ type ( secret [keyLength]byte file string } + + // LockboxOptions represent options to create a lockbox from. + LockboxOptions struct { + Key string + KeyMode string + File string + } ) -// NewLockbox creates a new lockbox for encryption/decryption. -func NewLockbox(key, keyMode, file string) (Lockbox, error) { +// NewLockbox creates a new usable lockbox instance. +func NewLockbox(options LockboxOptions) (Lockbox, error) { + return newLockbox(options.Key, options.KeyMode, options.File) +} + +func newLockbox(key, keyMode, file string) (Lockbox, error) { useKeyMode := keyMode if useKeyMode == "" { useKeyMode = os.Getenv("LOCKBOX_KEYMODE")