hidr
Version:
A CLI tool for securely sharing secrets
132 lines (83 loc) • 2.82 kB
Markdown
# Hidr - Secure Secret Sharing CLI
Hidr is a CLI tool for securely sharing secrets and credentials (sensitive data). It encrypts secrets using AES-256-GCM, ensuring that the encryption key never leaves your device. Secrets can be shared with a TTL (time-to-live) and a read limit, making it ideal for one-time or temporary secret sharing.
## Features
- Secure encryption using AES-256-GCM
- Share secrets as text or from a file
- Set expiration (TTL) for secrets
- Limit the number of times a secret can be viewed
- Share secrets that can only be viewed by a specific user
## Installation
You can use Hidr without installation via `npx`:
```sh
npx hidr <command>
```
Or install it globally:
```sh
npm install -g hidr
```
Once installed, simply run `hidr <command>`
## Usage
### Sharing Secrets
To share a secret directly:
```sh
npx hidr share "my-secret-password"
```
To share a secret from a file:
```sh
npx hidr share -f path/to/secret.env
```
You can also set a time-to-live (TTL) and a read limit:
```sh
npx hidr share "my-secret" -t 2h -l 3
```
- `-t, --ttl <ttl>`: Defines when the secret expires, after which it cannot be viewed. (e.g., `1m`, `2h`, `1d`). Default is 7 days.
- `-l, --limit <count>`: Defines the number of times the secret can be viewed.
After running a share command, Hidr will display a command to retrieve the secret.
### Viewing Secrets
To view a secret:
```sh
npx hidr view <secret-id>
```
To save the secret to a file:
```sh
npx hidr view <secret-id> -o output.txt
```
### Sharing secrets with a specific user/device
First, create an identifier on the device that will view the secrets by running:
```sh
npx hidr init <user-id>
```
`<user-id>` is a unique identifier for a device. It can be any string e.g "georgeben-mbp", "website.com".
The init command generates a key pair for your device, allowing others to share secrets only your device can view.
To share a secret with a specific user, add the -u flag:
```sh
npx hidr share "secret-api-key" -t 1h -l 1 -u <user-id>
```
This will generate a secret that can only be viewed by the user with the given `<user-id>`.
## Examples
- Share a secret with a 1-hour expiration that can only be viewed once
```sh
npx hidr share "super-secure-code" -t 1h -l 1
```
Output:
```sh
To view this secret, run:
npx hidr view abc123def456
```
- Retrieve the secret:
```sh
npx hidr view abc123def456
```
Output:
```sh
super-secure-code
Remaining reads: 0
```
## Security
This tool is built for privacy and security.
- **Local Encryption:** Secrets are encrypted locally on your device using AES-256-GCM.
- **Private:** The encryption key never leaves your device
## License
MIT
## Contributing
Pull requests are welcome! For major changes, please open an issue first to discuss what you'd like to change.