# yacs
Yet another credential store 🔐
`yacs`is a command-line tool that allows you to securely store, manage, and retrieve secrets locally in an encrypted JSON file. This tool uses AES encryption with a master password to ensure your secrets are kept safe.
## Features
Initialization: Set up a new credential store with a master password and a hint.
Adding Secrets: Add secrets with descriptions, supporting both string and binary types.
Retrieving Secrets: Retrieve secrets by their key.
Viewing Keys and Descriptions: List all keys and their descriptions.
Resetting: Delete the credential store and start from scratch.
## Encryption and Decryption
`yacs` securely encrypts and decrypts your secrets using AES encryption with a key derived from your master password. When you initialize the credential store, a strong encryption key is generated from your master password using PBKDF2 (Password-Based Key Derivation Function 2) with a unique salt. This key, combined with a randomly generated Initialization Vector (IV), encrypts your secrets, ensuring each encryption is unique and secure. The encrypted data is then encoded in base64 format for safe storage. For added security, the tool prompts you to re-enter your master password after initialization to verify that the data can be successfully decrypted, ensuring the integrity and accessibility of your secrets.
## Security
The Local Secrets Manager uses AES encryption with a key derived from your master password using PBKDF2 (Password-Based Key Derivation Function 2) with a unique salt. This ensures that your secrets are securely encrypted and can only be decrypted with the correct master password.
## Usage
Install the command line interface via the cli.
```
pip install yacs-cli
```
After installing you should be able to see the below when you run `yacs`.
```
@raiyanyahya ➜ /workspaces/yacs (master) $ yacs
Usage: yacs [OPTIONS] COMMAND [ARGS]...
A cli to provision and manage local developer environments.
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
get Get a secret from the credential store.
init Initialize an empty local credstore.
put Add a secret to the credential store.
reset Delete the credstore and start from scratch.
view View all keys and their descriptions.
```
### Initialize the store
```
yacs init
```
### Add a secret
```
yacs put /mykey "description" mysecretstring
```
### Get a secret
```
yacs get /mykey
```
### View all keyand descriptions
```
yacs view
```
## License
This project is licensed under the MIT License. See the LICENSE file for details.
## Contributing
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
Raw data
{
"_id": null,
"home_page": "https://github.com/raiyanyahya/yacs",
"name": "yacs-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">3.7",
"maintainer_email": null,
"keywords": "cli, developer tools, productivity, tools, secretsmanager",
"author": "Raiyan Yahya",
"author_email": "raiyanyahyadeveloper@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/71/ea/b10ea1ed8d9990ffe86b65abcdf685111499aeb0d39e524fd969dd7cb989/yacs-cli-0.1.0.tar.gz",
"platform": null,
"description": "# yacs\nYet another credential store \ud83d\udd10\n\n`yacs`is a command-line tool that allows you to securely store, manage, and retrieve secrets locally in an encrypted JSON file. This tool uses AES encryption with a master password to ensure your secrets are kept safe.\n\n## Features\n\nInitialization: Set up a new credential store with a master password and a hint.\nAdding Secrets: Add secrets with descriptions, supporting both string and binary types.\nRetrieving Secrets: Retrieve secrets by their key.\nViewing Keys and Descriptions: List all keys and their descriptions.\nResetting: Delete the credential store and start from scratch.\n\n\n## Encryption and Decryption\n\n`yacs` securely encrypts and decrypts your secrets using AES encryption with a key derived from your master password. When you initialize the credential store, a strong encryption key is generated from your master password using PBKDF2 (Password-Based Key Derivation Function 2) with a unique salt. This key, combined with a randomly generated Initialization Vector (IV), encrypts your secrets, ensuring each encryption is unique and secure. The encrypted data is then encoded in base64 format for safe storage. For added security, the tool prompts you to re-enter your master password after initialization to verify that the data can be successfully decrypted, ensuring the integrity and accessibility of your secrets.\n\n## Security\nThe Local Secrets Manager uses AES encryption with a key derived from your master password using PBKDF2 (Password-Based Key Derivation Function 2) with a unique salt. This ensures that your secrets are securely encrypted and can only be decrypted with the correct master password.\n\n\n## Usage\nInstall the command line interface via the cli.\n\n ```\n pip install yacs-cli\n ```\n\nAfter installing you should be able to see the below when you run `yacs`.\n ```\n @raiyanyahya \u279c /workspaces/yacs (master) $ yacs\n Usage: yacs [OPTIONS] COMMAND [ARGS]...\n\n A cli to provision and manage local developer environments.\n\n Options:\n --version Show the version and exit.\n --help Show this message and exit.\n\n Commands:\n get Get a secret from the credential store.\n init Initialize an empty local credstore.\n put Add a secret to the credential store.\n reset Delete the credstore and start from scratch.\n view View all keys and their descriptions.\n ```\n### Initialize the store\n\n ```\n yacs init\n ```\n\n### Add a secret\n\n ```\n yacs put /mykey \"description\" mysecretstring\n ```\n\n### Get a secret\n\n ```\n yacs get /mykey\n ```\n### View all keyand descriptions\n\n ```\n yacs view\n ```\n\n## License\nThis project is licensed under the MIT License. See the LICENSE file for details.\n\n## Contributing\nContributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Run a local credential store.",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/raiyanyahya/yacs"
},
"split_keywords": [
"cli",
" developer tools",
" productivity",
" tools",
" secretsmanager"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bc9933962fd41568c62ab54aefd839a42069c9ae7292f0714454ee03a667ef89",
"md5": "08e19a1b8b24c683de81447df8b0239c",
"sha256": "1cd38539a760120f3a8eac31e66cd3709326ea7938ae4cfdbd68adf5fb3a2522"
},
"downloads": -1,
"filename": "yacs_cli-0.1.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "08e19a1b8b24c683de81447df8b0239c",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">3.7",
"size": 8972,
"upload_time": "2024-07-04T13:54:21",
"upload_time_iso_8601": "2024-07-04T13:54:21.731550Z",
"url": "https://files.pythonhosted.org/packages/bc/99/33962fd41568c62ab54aefd839a42069c9ae7292f0714454ee03a667ef89/yacs_cli-0.1.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "71eab10ea1ed8d9990ffe86b65abcdf685111499aeb0d39e524fd969dd7cb989",
"md5": "c95dc89b1c23b036055ff30838c7fc31",
"sha256": "63f6c57077a0505498f46f93f85e4b65cd3f3161f56ba8f842a83c2fd348749e"
},
"downloads": -1,
"filename": "yacs-cli-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "c95dc89b1c23b036055ff30838c7fc31",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">3.7",
"size": 6684,
"upload_time": "2024-07-04T13:54:23",
"upload_time_iso_8601": "2024-07-04T13:54:23.818409Z",
"url": "https://files.pythonhosted.org/packages/71/ea/b10ea1ed8d9990ffe86b65abcdf685111499aeb0d39e524fd969dd7cb989/yacs-cli-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-04 13:54:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "raiyanyahya",
"github_project": "yacs",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "yacs-cli"
}