Skip to main content

Utility to easily store password/secrets

Project description

Palette Material Design

Build Status

Utility to easily store password/secrets. It uses Fernet from the cryptography module instead of reinventing the wheel.

Fernet is a symmetric encryption that uses 128-bit AES in CBC mode and PKCS7 padding with HMAC using SHA256 for authentication. You can read more about it here.

Why v-crypt?

It is always annoying to deal with secrets and passwords in python especially if you work with other people. What we found that worked best for us was:

  • Create one master private password (ignored from git)
  • Have dict-like file with the rest of passwords encrypted

This module provides the class Cipher to handle that easily.

The idea behind this module is to be able to create a json or yaml with encrypted secrets. The keys will be public but the values won't. This way you can store the dictionary of secrets in git and easily share them with other people working in the same project. You will only need to share the master.password once. And all the other passwords/secrets will be tracked with git.

Installation

You can install it with pip by running:

pip install v-crypt

Usage

from v_crypt import Cipher

# Create a cipher instance
cipher = Cipher()

# Create a new master password
cipher.create_password()

# Store a secret
cipher.save_secret("secret", "I like python")

# Retrive a secret
cipher.get_secret("secret")

Customization

There are three paramaters to customize the cipher:

  1. secrets_file: path of the file with secrets. Can be a json or yaml.
  2. filename_master_password: path of the file with the master password
  3. environ_var_name: if passed it allows to read the master password from an environ var.

For yaml you need to install pyyaml

For example you could do:

cipher = Cipher(secrets_file="data/secrets.yaml", filename_master_password="data/master.secret")

This will allow you to store both the master.password and secrets.yaml in the folder data.

There is not much more customization since the idea is to keep it simple.

Integrating it in other projects

We usually have one or more python files with utilities, for example utilities.py.

To use v_crypt we initiallize the cipher there and then create a get_secret dummy function that will call the cipher.

from v_crypt import Cipher

cipher = Cipher(secrets_file="data/secrets.yaml", filename_master_password="data/master.secret")

def get_secret(key):
    return cipher.get_secret(key)

Then you can use it elsewhere with:

import utilities as u

u.get_secret("secret")

Development

This package relies on poetry and pre-commit. In order to develop you need to install both libraries with:

pip install poetry pre-commit
poetry install
pre-commit install

Then you need to add poetry run before any python shell command. For example:

# DO
poetry run python master.py

# don't do
python master.py

Authors

License

The content of this repository is licensed under a MIT.

Nomenclature

Branches and commits use some prefixes to keep everything better organized.

Branches

  • f/: features
  • r/: releases
  • h/: hotfixs

Commits

  • [NEW] new features
  • [FIX] fixes
  • [REF] refactors
  • [PYL] pylint improvements
  • [TST] tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vcrypto-3.0.0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

vcrypto-3.0.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file vcrypto-3.0.0.tar.gz.

File metadata

  • Download URL: vcrypto-3.0.0.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.7.12 Linux/5.11.0-1028-azure

File hashes

Hashes for vcrypto-3.0.0.tar.gz
Algorithm Hash digest
SHA256 87e6b4950ee12dcc6333b0b777fcef33983c0231fc4cd09123a90e53468f2ed5
MD5 7797fd86d6c784c32c6b0f2747c96d0d
BLAKE2b-256 febc082f717bec22992ed9fe36dd8367ede1debb3e02cb00e819be329770f1ff

See more details on using hashes here.

File details

Details for the file vcrypto-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: vcrypto-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.7.12 Linux/5.11.0-1028-azure

File hashes

Hashes for vcrypto-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c3aa1ee15f591fd0f2c399f3e43c0a89193631e810374b4cef3ef4c36afc6f0
MD5 c8a22458c05147770bb60927e4fc1437
BLAKE2b-256 1de3c79454c1e09515a6420f81c92f4b9f2a953ba23629d0f4b0d6da42ddf047

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page