All Projects → angt → secret

angt / secret

Licence: BSD-2-Clause license
A tiny secret store to keep your little secrets

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to secret

Trufflehog
Searches through git repositories for high entropy strings and secrets, digging deep into commit history
Stars: ✭ 6,225 (+11871.15%)
Mutual labels:  secret
Talisman
By hooking into the pre-push hook provided by Git, Talisman validates the outgoing changeset for things that look suspicious - such as authorization tokens and private keys.
Stars: ✭ 1,155 (+2121.15%)
Mutual labels:  secret
React Native Linkedin
🔗 React-Native LinkedIn, a simple LinkedIn login library for React-Native or Expo with WebView and Modal
Stars: ✭ 180 (+246.15%)
Mutual labels:  secret
Wavevote
Voting system based on Ethereum
Stars: ✭ 22 (-57.69%)
Mutual labels:  secret
Get Aws Profile Bash
Fetch AWS keys and secrets from ~/.aws/credentials using a simple bash script
Stars: ✭ 49 (-5.77%)
Mutual labels:  secret
Secretserver
Secret Server PowerShell Module
Stars: ✭ 82 (+57.69%)
Mutual labels:  secret
Go Keyring
Cross-platform keyring interface for Go
Stars: ✭ 351 (+575%)
Mutual labels:  secret
2ami
Your easy 2FA companion that keep the secrets secret.
Stars: ✭ 24 (-53.85%)
Mutual labels:  keyring
Ksd
kubernetes secret decoder
Stars: ✭ 59 (+13.46%)
Mutual labels:  secret
Fugacious
OSSSM (awesome). Open source short-term secure messaging
Stars: ✭ 100 (+92.31%)
Mutual labels:  secret
Guffer
Guffer tweets based on a daily schedule
Stars: ✭ 12 (-76.92%)
Mutual labels:  secret
Real Time Public Chat
This program show how to create a public chat using javascript
Stars: ✭ 45 (-13.46%)
Mutual labels:  secret
Secret
send a message through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
Stars: ✭ 83 (+59.62%)
Mutual labels:  secret
Gg Shield
Detect secret in source code, scan your repo for leaks. Find secrets with GitGuardian and prevent leaked credentials. GitGuardian is an automated secrets detection & remediation service.
Stars: ✭ 708 (+1261.54%)
Mutual labels:  secret
Wordpress Android
WordPress for Android
Stars: ✭ 2,601 (+4901.92%)
Mutual labels:  secret
Kubesec
Secure Secret management for Kubernetes (with gpg, Google Cloud KMS and AWS KMS backends)
Stars: ✭ 547 (+951.92%)
Mutual labels:  secret
Hidden Secrets Gradle Plugin
🔒 Deeply hide secrets on Android
Stars: ✭ 79 (+51.92%)
Mutual labels:  secret
keevault
Kee Vault is a password manager for your web browser. Password databases (Vaults) are encrypted using the KeePass storage format before being sent to a remote server for synchronisation across any modern device/browser
Stars: ✭ 57 (+9.62%)
Mutual labels:  password-store
Secretlint
Pluggable linting tool to prevent committing credential.
Stars: ✭ 239 (+359.62%)
Mutual labels:  secret
Bank Vaults
A Vault swiss-army knife: a K8s operator, Go client with automatic token renewal, automatic configuration, multiple unseal options and more. A CLI tool to init, unseal and configure Vault (auth methods, secret engines). Direct secret injection into Pods.
Stars: ✭ 1,316 (+2430.77%)
Mutual labels:  secret

secret

A simple and tiny tool that will help you keep your little secrets.

Features

secret is the simplest secret store you can think of. But it does have some interesting features:

  • Requires only one file ~/.secret that you can share publicly without fear.
  • No configuration. No directory. Get back your file and you're done.
  • Secret names (usually hostname, mail, login, etc.) are also encrypted.
  • A secret agent that only trusts subprocesses. Not all the processes of the same user!
  • Secret names completion is available after calling the secret agent.
  • Supports unstored secrets. Derived from some simple keys and a passphrase.
  • Supports multiple passphrases. A confirmation is requested for each new passphrase.
  • Supports TOTP natively. The name must contain the word totp.
  • Depends only on the libhydrogen library.
  • Small, simple and non obfuscated C code. Well, I hope so :)

Security

The main goal is to have secret working on all architectures and to make it very simple to audit.

Luckily, permutation-based cryptography has arrived and makes it possible to achieve this goal with very little code. In 2020, using a bloated library full of CVEs will not have been reasonable considering the major advances in this field.

Only one cryptographic building block is used, the Gimli permutation. All cryptographic operations are derived from this permutation and implemented in the libhydrogen library.

Install

Homebrew

You can simply install secret from my Homebrew Tap:

$ brew install angt/tap/secret

Build from source

This should work on a wide variety of architectures and POSIX systems. It was successfully tested on Linux, OpenBSD, FreeBSD and MacOS.

Clone the repository recursively:

$ git clone https://github.com/angt/secret --recursive
$ cd secret

Then, run as root:

# make install

As usual, you can customize the destination with DESTDIR and prefix. Typically if you want to change the default /usr/local prefix:

# make prefix=/usr install

Tab completion

Tab completion works with bash, zsh and yash. Unfortunately, it doesn't work out of the box, you have to setup it manually. Luckily, it's super easy!

Download the file corresponding to your shell:

Then, for bash, you can add these lines in your .bashrc:

. YOUR_PATH_TO/argz.bash

complete -F _argz secret

For yash, in your .yashrc:

. YOUR_PATH_TO/argz.yash

function completion/secret {
    command -f completion//reexecute argz
}

And finally, for zsh, in your .zshrc:

. YOUR_PATH_TO/argz.zsh

compdef _argz secret

Completion for secrets is only available in a trusted shell. See below.

Commands

Available commands:

init       Initialize secret for the current user
list       List all secrets for a given passphrase
show       Print a secret
new        Generate a new random secret
set        Set a new secret
renew      Regenerate an existing secret
update     Update an existing secret
pass       Print a deterministic secret
agent      Run a process in a trusted zone
version    Show version

All secrets are encrypted in the file ~/.secret. You can use a different file with the SECRET_STORE environment variable:

$ env SECRET_STORE=<FILE> secret ...

Examples

Initialize secret for the current user:

$ secret init

Add a new randomly generated secret:

$ secret new test
Passphrase:
No secrets stored with this passphrase.
Please, retype it to confirm:
/xK;{%@d~hPh.L'5-Sn{sBQd5

Show the secret:

$ secret show test
Passphrase:
/xK;{%@d~hPh.L'5-Sn{sBQd5

Rename a secret, press ENTER to not change it:

$ secret update test test2
Passphrase:
Secret:

$ secret show test2
Passphrase:
/xK;{%@d~hPh.L'5-Sn{sBQd5

Pipe a secret:

$ secret show test2 | tr -cd [a-z] | secret update test2
Passphrase:
Passphrase:

$ secret show test2
Passphrase:
xdhhnsd

Add a TOTP token:

$ echo -n JBSWY3DPEHPK3PXP | base32 -d | secret set test/totp
Passphrase:

$ secret show test/totp
Passphrase:
$ 123456

Derive a deterministic (a.k.a. unstored) secret:

$ secret pass [email protected]
Passphrase:
a`4$B2mJ=|"HD?b4:/y"?wOaQ

Subkeys are also supported, this allows to update your secret in a clean way:

$ secret pass [email protected] 2020
Passphrase:
F"1j;-X]t.Pi>.xf5hG,]dUMz

Add a binary secret:

$ dd if=/dev/urandom bs=1 count=32 2>/dev/null | secret set mykey
Passphrase:

$ secret show mykey | xxd
Passphrase:
00000000: 0ee9 cdb3 de0a 3e71 b623 726d 5d7e eb23  ......>q.#rm]~.#
00000010: 5b43 a458 3fb7 3b96 ea9b 6e47 d302 cae7  [C.X?.;...nG....

Start a trusted zone:

$ secret agent
Passphrase:

Now, the passphrase is not requested and completion fully works!

If you don't use bash but still want completion, run secret agent <yourawesomeshell> or (much better) send a PR to add support for your shiny shell :)


For feature requests and bug reports, please create an issue.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].