SkillAgentSearch skills...

EStash

An open source, cross-platform, programmed in rust, encrypted digital vault (store files and text) with the capability to set a path and with the click of a button to copy the contents to that file.

Install / Use

/learn @Obscurely/EStash

README

<div id="top"></div>

[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url]

<!-- PROJECT LOGO --> <br /> <div align="center"> <img src="https://github.com/Obscurely/EStash/blob/master/assets/logo.png" alt="Logo" width="150" height="150"> <h1 align="center"></h1> <p align="center"> An open source, cross-platform, programmed in rust, encrypted digital vault (store files and text) with the capability to set a path and with the click of a button to copy the content to that file. For example store your ssh keys safely, put your vault in like your github dotfiles, download it on another machine and easily install those keys. <br /> <a href="https://github.com/Obscurely/EStash/issues">Report Bug</a> | <a href="https://github.com/Obscurely/EStash/issues">Request Feature</a> </p> </div> <!-- TABLE OF CONTENTS --> <details> <summary>Table of Contents</summary> <ol> <li> <a href="#about-the-project">About The Project</a> <ul> <li><a href="#video-showcase">Video showcase</a></li> <li><a href="#built-with">Built with</a></li> <ul> <li><a href="#the-stock-libraries-and-these-awesome-3rd-party-ones">The stock libraries and these awesome 3rd party ones</a></li> </ul> </ul> </li> <li> <a href="#getting-started">Getting Started</a> <ul> <li><a href="#running-the-program">Running the Program</a></li> <ul> <li><a href="#windows">Windows</a></li> <ul> <li><a href="#portable-exe">Portable EXE</a></li> <li><a href="#installer">Installer</a></li> </ul> <li><a href="#linux">Linux</a></li> <ul> <li><a href="#portable-bin">Portable Bin</a></li> <li><a href="#appimage">AppImage</a></li> <li><a href="#aur">AUR</a></li> <li><a href="#nix-file">Nix File</a></li> <li><a href="#deb-file">Deb File</a></li> <li><a href="#arch-pkg-file">Arch Pkg File</a></li> </ul> <li><a href="#macos">MacOS</a></li> <ul> <li><a href="#portable-binary">Portable Bin</a></li> <li><a href="#app-folder">App Folder</a></li> <li><a href="#dmg-installer">DMG Installer</a></li> <li><a href="#homebrew">Homebrew</a></li> </ul> <li><a href="#all-platforms">All Platforms</a></li> </ul> <li><a href="#compilation">Compilation</a></li> </ul> </li> <li> <a href="#usage">Usage</a> <ul> <li><a href="#basics">Basics</a></li> <ul> <li><a href="#login">Login</a></li> <li><a href="#the-vault">The Vault</a></li> </ul> <li><a href="#advanced">Advanced</a></li> </ul> </li> <li><a href="#road-map">Road Map</a></li> <li><a href="#contributing">Contributing</a></li> <li><a href="#license">License</a></li> <li><a href="#contact">Contact</a></li> </ol> </details>

🪽 About The Project

  • An open source, programmed in rust, encrypted digital vault (store files and text) with the capability to set a path and with the click of a button to copy the content to that file. For example store your ssh keys safely, put your vault in like your github dotfiles, download it on another machine and easily install those keys.<br>
  • The vault is encrypted using a key derived from your password (the strength of your password decides the safetyness of your vault) using argon2id and that key is used to encrypt the private key. The encryption algorithm used is an ECIES, combines X25519 Diffie-Hellman function and XChaCha20Poly1305. (I used an ECIES for future proof reasons as there are no security downsides)
  • The way this works is by hashing your vault name with blake3. The password doesn't get stored, but a key derived from your password of 32 bytes length using argon2id gets generated with some very strong options and with this key the private encryption key for the vault (from the ECIES) get's encrypted. You get logged into a vault if the private key is decrypted sucessfully and the vault name is present basically. And all the content inside a vault is encrypted using the key-pair for that vault, basically nothing gets leaked.

🎥 Video showcase

https://user-images.githubusercontent.com/59087558/206248579-a786b277-b0fc-4306-be50-9db1c948e901.mp4

🍔 Built with

The stock libraries and these awesome 3rd party ones:

  • BLAKE3 hash function, much faster then sha2 and more secure.
  • rust-argon2 for deriving the encryption key from the password.
  • rand random number generators and other randomness functionality.
  • rand_hc HC128 random number generator.
  • zeroize securely clear secrets from memory with a simple trait.
  • crypto_box ECIES that combines X25519 Diffie-Hellman function and XChaCha20Poly1305.
  • chacha20poly1305 simple, fast and strong AEAD encryption algorithm.
  • sled lightweight high-performance pure-rust transactional embedded database.
  • Serde a generic serialization/deserialization framework.
  • serde_json a JSON serialization file format.
  • FLTK rust bindings for the FLTK GUI library.
  • dirs a tiny low-level library that provides platform-specific standard locations.

🏁 Getting Started

🏃‍♂️ Running The Program


🪟 Windows

Portable EXE

  1. Go to the Releases Tab and download the estash-windows.exe file (might have to click show all).
  2. Double click the exe you just downloaded and there you go the program works.
  3. Might wanna take a look at the Usage Tab if you don't understand something about it.

Installer

  1. Go to the Releases Tab and download the estash-windows-installer.exe files (might have to click show all).
  2. Double click the installer and go through the it as you would with any other installer.
  3. If you look now in the start menu (or on the desktop if you ticked create desktop shortcut) you are gonna see a shortcut for estash, just run it like any other program.
  4. Might wanna take a look at the Usage Tab if you don't understand something about it.

🐧 Linux

Portable Bin

  1. Go to the Releases Tab and download the estash-linux file.
  2. Double click the bin you just downloaded and there you go the program works.
  3. Might wanna take a look at the Usage Tab if you don't understand something about it.

AppImage

  1. Go to the Releases Tab and download the estash-linux.AppImage file.
  2. Double click the AppImage you download and there you go the program just works. You may want to install AppImageLauncher if you don't have it already, when you start the AppImage you'll get a prompt asking if you want to integrate and run it and if you do so it will appear just as if you installed it.
  3. Might wanna take a look at the Usage Tab if you don't understand something about it.

AUR

The PKGs are: estash (for stable), estash-bin (for precompiled) and estash-git (to compile latest source code)

a. if you have an AUR manager (like paru or yay, which you should)

  1. Just like with any other AUR pkg choose your prefered type and you can run the following command for example.
paru -Sy estash
  1. Search for estash in your app launcher and launch it.
  2. Might wanna take a look at the Usage Tab if you don't understand something about it.

b. Manually cloning and building it from AUR

  1. First install the basic build dependencies, if you don't already have them:
sudo pacman -Sy gcc base-devel --needed
  1. Then clone the build script
git clone https://aur.archlinux.org/estash.git # or estash-bin & estash-git
  1. Cd into the new cloned repository and run the following to build the package
makepkg
  1. In order to install the package run the following (where * is just an any other characters place holder)
sudo pacman -U estash-*.pkg.tar.zst

Nix File

You are using NixOS, don't worry I got you bro.

  1. Go to the Releases Tab and download the estash-linux.nix file.
  2. If you use flakes then put it in your pkgs folder, and up-top add your tag (like my). If you don't just add the code in your default.nix file and install it this way.
  3. Might wanna take a look at the Usage Tab if you don't understand something abou
View on GitHub
GitHub Stars7
CategoryContent
Updated1y ago
Forks0

Languages

Rust

Security Score

75/100

Audited on Jan 10, 2025

No findings