lockbox

password manager
Log | Files | Refs | README | LICENSE

commit 7ed23b5dc3fa102cdf984ffa9344e9f4c4f99a6f
parent 6f8a6c4460ae91a2c48a4296cc20b3a4fcc944ca
Author: Sean Enck <sean@ttypty.com>
Date:   Sat, 24 Dec 2022 11:55:55 -0500

hash/modtime handling updates

Diffstat:
Mcmd/main.go | 4++--
Minternal/backend/query.go | 11++++-------
Minternal/backend/query_test.go | 14+++++++++-----
Mscripts/tests.expected.log | 12++++++++----
4 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/cmd/main.go b/cmd/main.go @@ -252,7 +252,7 @@ func run() error { return wrapped("unable to get stats", err) } if v != nil { - fmt.Printf("modtime: %s\n", v.Value) + fmt.Println(v.Value) } return nil } @@ -308,7 +308,7 @@ func hashText(args []string) error { return err } for _, item := range e { - fmt.Printf("%s:\nhash:%s\n", item.Path, item.Value) + fmt.Printf("%s:\n%s\n", item.Path, item.Value) } return nil } diff --git a/internal/backend/query.go b/internal/backend/query.go @@ -131,14 +131,11 @@ func (t *Transaction) QueryCallback(args QueryOptions) ([]QueryEntity, error) { entity.Value = val case HashedValue, StatsValue: t := getValue(e.backing, modTimeKey) - if args.Values == StatsValue { - entity.Value = t - } else { - if t != "" { - t = fmt.Sprintf(" (%s)", t) - } - entity.Value = fmt.Sprintf("%x%s", sha512.Sum512([]byte(val)), t) + res := fmt.Sprintf("modtime: %s", t) + if args.Values == HashedValue { + res = fmt.Sprintf("%s\nhash: %x", res, sha512.Sum512([]byte(val))) } + entity.Value = res } } results = append(results, entity) diff --git a/internal/backend/query_test.go b/internal/backend/query_test.go @@ -84,16 +84,16 @@ func TestValueModes(t *testing.T) { if err != nil { t.Errorf("no error: %v", err) } - hash := q.Value - parts := strings.Split(hash, " ") + hash := strings.TrimSpace(q.Value) + parts := strings.Split(hash, "\n") if len(parts) != 2 { t.Errorf("invalid hash output: %v", parts) } - if parts[0] != "44276ba24db13df5568aa6db81e0190ab9d35d2168dce43dca61e628f5c666b1d8b091f1dda59c2359c86e7d393d59723a421d58496d279031e7f858c11d893e" { + if parts[1] != "hash: 44276ba24db13df5568aa6db81e0190ab9d35d2168dce43dca61e628f5c666b1d8b091f1dda59c2359c86e7d393d59723a421d58496d279031e7f858c11d893e" { t.Errorf("invalid result value: %s", q.Value) } - dt := parts[1] - if !strings.HasPrefix(dt, "(") || !strings.HasSuffix(dt, ")") || len(dt) <= 20 { + dt := parts[0] + if !strings.HasPrefix(dt, "modtime: ") || len(dt) <= 20 { t.Errorf("invalid date/time: %s", dt) } q, err = fullSetup(t, true).Get("test/test/ab11c", backend.SecretValue) @@ -103,6 +103,10 @@ func TestValueModes(t *testing.T) { if q.Value != "tdest\ntest" { t.Errorf("invalid result value: %s", q.Value) } + q, err = fullSetup(t, true).Get("test/test/abc", backend.StatsValue) + if err != nil || !strings.HasPrefix(q.Value, "modtime: ") || len(strings.Split(q.Value, "\n")) != 1 { + t.Errorf("invalid stats: %s", q.Value) + } } func TestQueryCallback(t *testing.T) { diff --git a/scripts/tests.expected.log b/scripts/tests.expected.log @@ -31,13 +31,17 @@ test/k test/k XXXXXX key/a/one: -hash:ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff +modtime: XXXX-XX-XX +hash: ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff keys/k/one2: -hash:6d201beeefb589b08ef0672dac82353d0cbd9ad99e1642c83a1601f3d647bcca003257b5e8f31bdc1d73fbec84fb085c79d6e2677b7ff927e823a54e789140d9 +modtime: XXXX-XX-XX +hash: 6d201beeefb589b08ef0672dac82353d0cbd9ad99e1642c83a1601f3d647bcca003257b5e8f31bdc1d73fbec84fb085c79d6e2677b7ff927e823a54e789140d9 keys2/k/three: -hash:132ab0244293c495a027cec12d0050598616daca888449920fc652719be0987830827d069ef78cc613e348de37c9b592d3406e2fb8d99a6961bf0c58da8a334f +modtime: XXXX-XX-XX +hash: 132ab0244293c495a027cec12d0050598616daca888449920fc652719be0987830827d069ef78cc613e348de37c9b592d3406e2fb8d99a6961bf0c58da8a334f test/k/totp: -hash:b6c44d5d8a75071d8e8a39df231b0b98584d1d42982b5cf230e44f94d9c48e2983e78955a54b70c0acb0428d6db7205101e332f950ffb6b6d643aa37287c6aa5 +modtime: XXXX-XX-XX +hash: b6c44d5d8a75071d8e8a39df231b0b98584d1d42982b5cf230e44f94d9c48e2983e78955a54b70c0acb0428d6db7205101e332f950ffb6b6d643aa37287c6aa5 delete entry? (y/N) delete entry? (y/N) delete entry? (y/N) unable to remove entry (no entities given)