{ "info": { "author": "Rick van den Hof", "author_email": "r.vandenhof@tiw.nl", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Topic :: Security :: Cryptography", "Topic :: Utilities" ], "description": "# Gpgpass\n[![Build Status](https://travis-ci.org/rvdh/gpgpass.svg?branch=master)](https://travis-ci.org/rvdh/gpgpass)\n[![Coverage Status](https://coveralls.io/repos/rvdh/gpgpass/badge.png)](https://coveralls.io/r/rvdh/gpgpass)\n\nThe goal of this tool is to provide an easy but safe way to share passwords amongst (groups of) co-workers.\nIt does this by keeping a local GIT repository in sync with a remote. Changes to password files are automatically pulled to the local repository.\n**The repository should only contain GPG-encrypted password files!**\n\nThe tool will try to use a gpg-agent if it's running. If it's not, you will have to enter the password for your key every time a file is decrypted.\n\nThe tool will decrypt a file into memory. If you are worried your computer's memory is not safe, don't use this tool.\n\nBy default, the tool will check for an update for itself if the last time since it checked was more then a day ago. It does a simple git pull from remote, if the installation directory is a GIT repository.\nTo turn this off, change the automaticupdate settings in ~/.gpgpass/config.ini.\n\n## Prerequisites\n* GnuPG\n* GIT\n* python-gnupg (https://pythonhosted.org/python-gnupg/)\n* GitPython (https://pythonhosted.org/GitPython/0.3.1/)\n\n## Installation\n1. Get the code: git clone https://github.com/rvdh/gpgpass.git\n2. Run the program for the first time to set up a ~/.gpgpass/config.ini. \n3. Change the config.ini setting \"passwordsRepositoryRemote\" to point to your remote password repository.\n4. (Optional) Create a symlink from your gpgpass to ~/bin.\n\n## Supported platforms\nThe code should work on Linux, MacOS X and Windows, provided git and gnupg are configured correctly. \nFor Windows, ensure git is in $PATH.\n\n## Usage\n*Note: all examples here assume the GPG-encoded files can be decoded with your GPG key.*\n\n```\ngpgpass username\n```\nThis will search all GPG encrypted files for the string 'username' and display matching lines.\n\n```\ngpgpass -f username\n```\nThis will search all GPG encrypted files for the string 'username' and display the whole files in which a match was found.\n\n```\ngpgpass filename.gpg\n```\nThis will search for and display the entire file.\n\n## Updating password files\nTo change a GPG-encrypted file, I suggest using vim. With the vim addon 'gnupg', you can simply 'vim file.gpg'. It will decrypt the file into memory, you can make your changes and upon quitting the file is encrypted and saved. Next, push your change to the remote.\n\n## Setting up the password repository\nThe tool assumes a GIT repository has been setup, containing GPG-encrypted password files. \n### Layout\nAn example setup looks like this:\n```\n./repository/Department1/PasswordFile1.gpg\n./repository/Department1/PasswordFile2.gpg\n./repository/Department1/PasswordFile3.gpg\n./repository/Department2/PasswordFile1.gpg\n./repository/Department2/PasswordFile2.gpg\n```\nThere's no limit in the amount of subdirectories you create. In our case, the repository looks like this:\n```\n./Passwords/Engineering/Networking/Switches.gpg\n./Passwords/Engineering/Networking/Routing.gpg\n./Passwords/Engineering/Virtualization/Chassis.gpg\n./Passwords/Engineering/Virtualization/Nodes.gpg\n./Passwords/Support/Domainregistries/SIDN.gpg\n./Passwords/Support/Domainregistries/EURid.gpg\n./Passwords/Support/Servers/Linux.gpg\n./Passwords/Support/Servers/Windows.gpg\n```\n### Creating the encrypted files\nTo create new GPG encrypted password files, put plaintext password files besides the GPG encrypted files or start out with only plaintext password files.\nNext, you define groups in your ~/.gnupg/gpg.conf:\n```\ngroup department1 = 0x5A66E935 0x12345678 0xABCDEF12\ngroup department2 = 0x5A66E935 0x12345678 0xABCDEF12 0x87654321 0x21FEDBCA\ngroup department3 = 0x5A66E935 0x12345678 0xABCDEF12 0x87654321 0x21FEDBCA 0x11223344 0xAABBCCDD\n```\nIn this setup, I (0x5A66E935) belong to all groups so I can decrypt/encrypt all files in the password repository. User 0x87654321 will only be able to read the password files in ./repository/Department2.\nYou can use the following script to encrypt the plaintext password files:\n```\n#!/bin/bash\nfor GROUP in Department1 Department2 Department3; do\n for FILE in $(find ./repository/$GROUP -type f | grep -v '\\.gpg'); do\n print $FILE\n gpg --yes --use-agent -r ${GROUP} -e -s $FILE\n if [ $? -eq 0 ]; then\n # Remove the plain-text file\n rm $FILE\n fi\n done\ndone\n```", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rvdh/gpgpass", "keywords": "python passwords security gpg git", "license": "Apache License, Version 2.0", "maintainer": null, "maintainer_email": null, "name": "gpgpass", "package_url": "https://pypi.org/project/gpgpass/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/gpgpass/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/rvdh/gpgpass" }, "release_url": "https://pypi.org/project/gpgpass/0.1.3/", "requires_dist": null, "requires_python": null, "summary": "Password manager for groups. Searching thru GPG-encrypted password files.", "version": "0.1.3" }, "last_serial": 1233413, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "9e3158a5e0d57f6a2249e8bc0f639fef", "sha256": "48f95a9b0f916d1de4c54a2a6f788403364e0e35dc81419745d0c04529f75855" }, "downloads": -1, "filename": "gpgpass-0.1.3.tar.gz", "has_sig": false, "md5_digest": "9e3158a5e0d57f6a2249e8bc0f639fef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9720, "upload_time": "2014-09-22T14:33:08", "url": "https://files.pythonhosted.org/packages/d2/36/f8a1ea7efc53652dd634bf9ec5ba98e2f2ce66ad412cb93024da644d45a2/gpgpass-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9e3158a5e0d57f6a2249e8bc0f639fef", "sha256": "48f95a9b0f916d1de4c54a2a6f788403364e0e35dc81419745d0c04529f75855" }, "downloads": -1, "filename": "gpgpass-0.1.3.tar.gz", "has_sig": false, "md5_digest": "9e3158a5e0d57f6a2249e8bc0f639fef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9720, "upload_time": "2014-09-22T14:33:08", "url": "https://files.pythonhosted.org/packages/d2/36/f8a1ea7efc53652dd634bf9ec5ba98e2f2ce66ad412cb93024da644d45a2/gpgpass-0.1.3.tar.gz" } ] }