Options for Database::open — key material and how reads behave when a value was written with
a key that is not among them. Mirrors the TS CipherOptions.
The answer of [verify_password]: whether the candidate matches, and whether the stored hash was
made with other parameters than the handle’s current ones (so a successful login is a good
moment to write the password again).
Argon2id cost of the hashes a handle writes. The default is the OWASP minimum profile
(19 MiB, 2 passes, one lane); a weak device may lower it, a server may raise it. A stored hash
keeps the parameters it was made with, so changing these never invalidates one — it only makes
PasswordCheck::needs_rehash true for the older ones.
Seals what the storage layer writes — every log line, and every file that is not a log — with
AES-256-GCM under a key the host hands over at open(), and opens it again on the way in.