Crates.io | prolock |
lib.rs | prolock |
version | 1.1.2 |
created_at | 2025-02-26 09:52:20.707407+00 |
updated_at | 2025-07-02 14:00:00.320283+00 |
description | ProLock is a tool for securely storing secrets like passwords and plain text snippets in a password-protected file. |
homepage | |
repository | https://github.com/emabee/rust-prolock |
max_upload_size | |
id | 1570218 |
size | 799,349 |
ProLock is a small utility to manage secrets, storing them in a password-secured file.
There are some secrets that you might not want to manage in any browser's password store, e.g. the passwords for your bank accounts.
ProLock allows managing secrets in a minimalistic and secure fashion:
ProLock protects the sensitive part of the data with ChaCha20-Poly1305, an AEAD (authenticated encryption with associated data) algorithm that combines the ChaCha20 stream cipher with the Poly1305 message authentication code.
ChaCha20-Poly1305 takes as input a 256-bit key and a 96-bit nonce to encrypt a plaintext. ProLock uses PBKDF2 (password-based key derivation function 2) with 91,232 rounds to derive the key from a user-provided password, and generates new values for the salt (for PBKDF2) and for the nonce with every update to the file.
ProLock provides a UI to manage the data conveniently.
The UI is written in rust, with the egui
framework.
It supports currently two languages, English and German; other languages can easily be added.
ProLock only reads and writes to files in the local host's file system.
By default, ProLock uses the user-specific file ~/.prolock/secrets
,
but you can use any other file name and location.
ProLock does not interact with any cloud service etc.
ProLock detects concurrent changes to the file and refuses to overwrite them.
The data model consists of Entry
s, each of which has
The file contains
pbkdf2
.The file format allows sneaking into the file with a plain text editor to have a glimpse on the unprotected part, as you can see the names and the descriptions of the contained entries, but the protected part is safely encrypted.
Note that decrypting the encrypted part requires not only the right passphrase as input, but also the unmodified content of the readable part. Every modification of the unprotected part prevents the decryption of the protected part.
If you're working with rust yourself, then it might be the easiest for you to download this repo and build the program yourself:
Ensure you have a recent rust compiler installed. The MSRV of ProLock is currently 1.85.
Clone the project to you local disk.
cd into the project's root folder and call
cargo build --release
This produces the desired binary, to be found in folder ./target/release/
.
The binary's name is prolock
or prolock.exe
, depending on your platform.
This binary is all you need to run ProLock.
On Mac, you might want to go one step further and install it in your
Applications
folder, so that it can appear in the dock. For that purpose, we need
to create an app folder that combines the binary with some necessary metadata.
This is most easily done with Cargo bundle
(which you might need to install separately first):
4.1 cargo bundle --release
This command produces a folder ProLock.app
in
./target/release/bundle/osx/
with the necessary content.
4.2 Copy this folder ProLock.app
into your Applications folder (/Applications
).
Prolock can now be started with a single click from the Applications folder and pulled permanently into the dock, if you want.
WORK IN PROGRESS, SUPPORT WELCOME!
In its current state, the project uses github actions to build the project, and then it loads the results up into github.
Current state is:
I can't get the result running on my Mac (M4 Pro), an error report is found in ../deployment_errors
.