locksmith is a password manager for Unix-like systems written in C. It aims at being simple and fast with
no unnessecary bloat.

Locksmith in action! (screenshot may be outdated)
Naturally, since I am not a good programmer, one can expect locksmith to break at any moment. Do not actually use locksmith for any important business, it is just a passion project.
Locksmith comes with many features, such as:
- Password encryption
- Password generation
- (Possibly broken) Password safety checking
- Master password authentication (w/ (questionable?) hashing)
- Atleast a somewhat functional implementation of password backups
- A full "locksmith shell" to handle passwords in.
If you want to build locksmith from source, you need:
- cc/gcc (alternatively any other C compiler that compiles my code, but gcc is the only one on which I can guarantee that it compiles)
- make
- libsodium
Additionally, if you want the best experience, you need:
- A terminal supporting ANSI color escape codes (locksmith uses these for colored I/O)
- A monospaced font (a lot will look kinda strange otherwise)
Locksmith will not compile on spyware such as Windows.
git clone https://github.com/callmesalmon/locksmith
cd locksmith
## NOTE: You may alternatively run
## ``sudo make install`` to install binary
## to /usr/local/bin
make
sudo ./install_man.sh # OPTIONAL: this builds the locksmith manpage./clean.sh ## NOTE: Depending on your write access to certain directories,
## you may need to run ``sudo ./clean.sh`` insteadThe source code of the project is split into different files, with different purposes. See:
src
├── auth.c Master password authentication
├── auth.h Master password authentication
├── cli.c Interface/command shell
├── cli.h Interface/command shell
├── cli_msg.c Interface Error/Warning/Info messages
├── cli_msg.h Interface Error/Warning/Info messages
├── colors.h Colored I/O
├── commons.c Common functions, independent of the project
├── commons.h Common functions, independent of the project
├── crypto.c Cryptography
├── crypto.h Cryptography
├── main.c Entry point
├── password.c Encrypting/Decryption of passwords
└── password.h Encrypting/Decryption of passwords