Skip to content

VPKSoft/PasswordKeeper

Repository files navigation

PasswordKeeper

A software to store login information into an encrypted file.

Lint & Test deployment package Crowdin FOSSA Status

image

For instructions, see: Help.

The encryption

The encryption algorithm used is AES-GCM-SIV with Argon2 / Argon2id key derivation function.

The file structure

Entry Length
Random salt 32 bytes
Random nonce 12 bytes
The length of the encrypted data 8 bytes (64-bit) unsigned integer
The encrypted data N bytes

The data structure within the file

The login information data is stored as an JSON array to the with the following TypeScript type definition:

/**
 * The entry / category data format for the program.
 */
export type DataEntry = {
    /** The name of the entry or a category. */
    name: string;
    /** The optional domain for the login credentials. */
    domain?: string | undefined;
    /** The host address where the login information is to be used. */
    address?: string | undefined;
    /** The user name for the credentials. */
    userName?: string | undefined;
    /** The password for the login credentials. */
    password?: string | undefined;
    /** Additional notes for the login information. */
    notes?: string | undefined;
    /** An unique identifier for an entry or a category. */
    id: number;
    /** In case of an entry the parent category for the entry. Otherwise -1. */
    parentId: number;
    /** The key <--> URL for OTP authentication. */
    otpAuthKey?: string;
    /** A value indicating whether to use markdown for the {@link DataEntry.notes} rendering. */
    useMarkdown?: boolean;    
};

Install

Windows

Download the PasswordKeeper_X.Y.Z_x64-setup.exe, ignore the warnings and install the software. If the installation fails you may need to install webview2, See: https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section

Linux

  1. Download the password-keeper_X.Y.Z_amd64.AppImage
  2. Run chmod +x password-keeper_X.Y.Z_amd64.AppImage on the file.
  3. Run the password-keeper_X.Y.Z_amd64.AppImage file.

macOS

  1. Download the PasswordKeeper_x64.app.tar.gz
  2. Extract the PasswordKeeper.app from the file
  3. Run xattr -c PasswordKeeper.app on the file.
  4. Run the PasswordKeeper.app

Getting started with the source code

  • Install rust & cargo.
  • Install Node.js
  • Run the init script, init.ps1 for Windows, init.sh for Linux & Mac. For linux Mint I needed to install the following packages for the rust build:
sudo apt-get install webkit2gtk-4.0
sudo apt-get install libjavascriptcoregtk4.0
sudo apt-get install libsoup2.4

Why this software

I know there are a million password managers available already. The current solution I'm using is VeraCrypt virtual disk with an encrypted LibreOffice Calc file inside the disk. This is challenging to open for a quick review and I always forget to close the file or unmount the virtual disk - feel free to use the tip though 😄 Well, that was background noise - the reasons:

  1. Keeping it simple, see: The KISS Principle
  2. I want to learn rust
  3. To have the code base working fully cross platform
  4. Have a simple structure with strong encryption for the file the data is stored into.
  5. Programming is a nice hobby 🤓

Thanks to

Tauri, Node.js, React, Font Awesome Free, Weblate, i18next, React Countdown Circle Timer, Html5-QRCode, totp-rs, qrcode, google-authenticator-exporter, protobufjs, html-react-parser, DOMPurify, Marked, Jodit and React Jodit WYSIWYG Editor

License

FOSSA Status