SafeCloset is free for everybody, and everbody's welcome to ask for advice or new features. But if you want to help me find time to improve it, and to develop other free programs, consider sponsoring me. There's absolutely no moral obligation to do so, though.
The best place to chat about safecloset, to talk about features or bugs, is the Miaou chat.
We use GitHub's issue manager.
Before posting a new issue, check your problem hasn't already been raised and in case of doubt please come first discuss it on the chat.
Independant security audit
None has been done yet. I'd welcome help on this topic.
The storage format is described to ensure it's possible to replace SafeCloset with another software if needed.
The closet file is a MessagePack encoded structure
Closet with the following fields:
comments: a string
salt: a string
drawers: an array of
The MessagePack serialization preserves field names and allows future additions.
An instance of
ClosedDrawer is a structure with the following fields:
id: a byte array
nonce: a byte array
content: a byte array
content is the AES-GCM-SIV encryption of the serialized drawer with the included
The key used for this encryption is a 256 bits Argon2 hash of the password with the closet's salt.
The serialized drawer is a MessagePack encoded structure with the following fields:
id: a byte array
entries: an array of
settings: an instance of
closet: a deeper closet, containing drawers, etc.
garbage: a random byte array
Entry contain the following fields:
name: a string
value: a string
DrawerSettings contain the following fields:
hide_values: a boolean
open_all_values: a boolean (optional, false if not present)