> It stores all password entries (including names) in a single encrypted file (vault).
> a simple custom vault format.
I understand what you're saying about password-store's directory structure exposing website names as plain text filenames...but, the upside of that design is that it tends to be very resilient.
imagine that you're updating an entry in your vault, and right as you save it you lose power, resulting in file corruption.
with password-store's design, the blast radius of the corruption is limited to that one single entry.
with your design, the potential blast radius of corruption could be my entire password vault.
in particular, looking at your file-management code [0, 1] it looks like it does a complete rewrite of the vault file on every save, without doing "rewrite to temp file then atomically rename" or any similar tricks meant to handle partial file writes.
if you haven't seen it before, I'd suggest reading "SQLite As An Application File Format" [2] and consider using SQLite as the storage backend.
0: https://codeberg.org/jlucas/pacc/src/branch/master/src/db.c
1: https://codeberg.org/jlucas/pacc/src/branch/master/src/vault...
2: https://sqlite.org/appfileformat.html
> a simple custom vault format.
I understand what you're saying about password-store's directory structure exposing website names as plain text filenames...but, the upside of that design is that it tends to be very resilient.
imagine that you're updating an entry in your vault, and right as you save it you lose power, resulting in file corruption.
with password-store's design, the blast radius of the corruption is limited to that one single entry.
with your design, the potential blast radius of corruption could be my entire password vault.
in particular, looking at your file-management code [0, 1] it looks like it does a complete rewrite of the vault file on every save, without doing "rewrite to temp file then atomically rename" or any similar tricks meant to handle partial file writes.
if you haven't seen it before, I'd suggest reading "SQLite As An Application File Format" [2] and consider using SQLite as the storage backend.
0: https://codeberg.org/jlucas/pacc/src/branch/master/src/db.c
1: https://codeberg.org/jlucas/pacc/src/branch/master/src/vault...
2: https://sqlite.org/appfileformat.html