{ "info": { "author": "Stefan Marsiske", "author_email": "s@ctrlc.hu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Topic :: Security", "Topic :: Security :: Cryptography" ], "description": "pbp\n\nv0.2.1 - experimental\n\nPBP[0] is a simple python wrapper and a command line interface around\nlibsodium, to provide basic functionality resembling PGP. It uses\nscrypt for a KDF and a much simpler packet format, which should be\nmuch harder to fingerprint, pbp also provides an experimental forward\nsecrecy mode and a multi-party DH mode.\n\nInstallation\n\nYou possibly need to run (or an equivalent command) sudo apt-get install git\npython-virtualenv gcc python-dev libffi-dev scrypt to satisfy all basic dependencies.\nAnd install libsodium (http://doc.libsodium.org/installation/README.html).\n\npip install pbp\n\noptionally for PITCHFORK support also\n\npip install pyusb==1.0.0b1\n\nDesign goals:\n\n 1. use modern crypto\n 2. provide similar functionality to PGP\n 3. be extensible\n 4. difficult to identify based on fingerprinting\n 5. provide extensive testing\n 6. strive for security\n\nCrypto\n\nCryptographic primitives are based on the NaCl library from\nhttp://nacl.cr.yp.to. The KDF used is scrypt.\n\nPGP-like\n\nProvides basic public key encrypt/decrypt, sign/verify and secret key\nencrypt/decrypt modes, as well as the ability to sign, verify, list,\ngenerate, export and import keys.\n\nExtensibility\n\nusing pbp and the underlying pysodium[1] library it's easy to extend\npbp. Some examples are the experimental forward secrecy mode (see\ndescription in doc/chaining-dh.txt), the support for ECDH key\nexchanges from the command-line and generation of arbitrarily large\nrandom byte streams.\n\n[1] https://github.com/stef/pysodium also available on\n https://pypi.python.org/pypi/pysodium\n\nFingerprinting\n\npbp tries to avoid to store any sensitive plaintext info, the\nencrypted files all should look like random noise. for a description\nof the packet formats see doc/fileformats.txt.\n\nTesting\n\nAll py files come with their internal tests, unit tests are in\ntests.py, and commandline functionality is tested in test.sh.\n\nSecurity\n\npbp locks the process memory, so it cannot be swapped to disk. Also\npbp uses SecureString[2] to overwrite sensitive key material after\nusage in memory, so keys have a short window of opportunity to leak.\n\n[2] https://github.com/dnet/pysecstr\n\nUsage\n\nGenerate a key\n\n pbp -g -n alice\n\nsending howdy.txt using public key encryption from alice to bob\n\n pbp -c -S alice -r bob -i howdy.txt\n\ndecrypt an encrypted file using public key crypto\n\n pbp -d -S bob -i howdy.txt.pbp\n\nsending howdy.txt using secret key encryption\n\n pbp -c -i howdy.txt\n\ndecrypt an encrypted file using secret key crypto\n\n pbp -d -i howdy.txt.pbp\n\nsign howdy.txt\n\n pbp -s -S alice -i /howdy.txt\n\nverify howdy.txt\n\n pbp -v -i howdy.txt.sig\n\nsign bobs key\n\n pbp -m -S alice -n bob\n\ncheck sigs on carols key\n\n pbp -C -n carol\n\nalice encrypts howdy.txt to bob using experimental forward secret mode\n\n pbp -e -S alice -r bob -i howdy.txt -o ./secret-message\n\nbob decrypts howdy.txt from alice using experimental forward secret mode\n\n pbp -E -S bob -r alice -i ./secret-message\n\ninitiate ECDH key exchange\n\n pbp -D1\n\nrespond to ECDH key exchange\n\n pbp -D2 -Dp 'public component from D1'\n\nfinish ECDH key exchange\n\n pbp -D3 -Dp 'public component from D2' -De 'secret exponent from D1'\n\nrandom streaming 23GByte of cryptographic randomness\n\n pbp -R -Rs 23G -o /mnt/huge_fs/random_data\n\nparticipate in a 4-way DH exchange, 1st message\n\n pbp -Ds -Dp 4 -S alice -n 'friends001' -i oldkeychain -o newkeychain\n\nparticipate in a 4-way DH exchange, 2nd message\n\n pbp -De -S alice -n 'friends001' -i oldkeychain -o newkeychain\n\nthis is one big pipe that creates a 3-way ECDH secret between alice, bob and carol:\n\n pbp -Ds -S alice -Dp 3 -n 'test-dh' -i /dev/null |\n pbp -Ds -S bob -Dp 3 -n 'test-dh' |\n pbp -Ds -S carol -Dp 3 -n 'test-dh' |\n pbp -De -S alice -Dp 3 -n 'test-dh' |\n pbp -De -S bob -Dp 3 -n 'test-dh'\n\nof course instead of a pipe you could use any kind of transport mechanism\n\nIntegration\n\nyou can add the following to your .vimrc\n\n map ;e :%!/bin/sh -c 'pbp -c 2>/dev/tty \\| base64'\n map ;d :%!/bin/sh -c 'base64 -d \\| pbp -d 2>/dev/tty'\n map ;s :,$! /bin/sh -c 'pbp -s -a -S stf 2>/dev/tty'\n map ;v :,$! /bin/sh -c 'pbp -v -a 2>/dev/tty'\n\n(c) 2013, stf , dnet vsza@vsza.hu, AGPLv3.0+\n\n[0] also it's very funny to say pbp with a mouth full of dry cookies.\ndon't try this in company!\n\n[![Build Status](https://travis-ci.org/stef/pbp.svg?branch=master)](https://travis-ci.org/stef/pbp)", "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/stef/pbp", "keywords": "cryptography API NaCl libsodium", "license": "AGPLv3", "maintainer": null, "maintainer_email": null, "name": "pbp", "package_url": "https://pypi.org/project/pbp/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pbp/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/stef/pbp" }, "release_url": "https://pypi.org/project/pbp/0.3.2/", "requires_dist": null, "requires_python": null, "summary": "simple crypto tool", "version": "0.3.2" }, "last_serial": 2301006, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "1d28f26acb59ddb0dd2d297dcccf240b", "sha256": "4e9a8ae8c534fb5fa36ed1fa10a810166451e5df07efb96ce59ccddca94cce59" }, "downloads": -1, "filename": "pbp-0.2-py2.7.egg", "has_sig": true, "md5_digest": "1d28f26acb59ddb0dd2d297dcccf240b", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 86039, "upload_time": "2013-09-02T01:32:43", "url": "https://files.pythonhosted.org/packages/69/28/c3f9045fb69c75d1b50e39bc5984bb31636c32df080e46e0dac60683c4dd/pbp-0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "65129f8ca81166cc2c6998a17cfda99b", "sha256": "20ede67699f013077f500599b3b24c6fb5e5e166f9aa1857b59a102bfc0d0cb2" }, "downloads": -1, "filename": "pbp-0.2.tar.gz", "has_sig": true, "md5_digest": "65129f8ca81166cc2c6998a17cfda99b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19033, "upload_time": "2013-09-02T01:32:28", "url": "https://files.pythonhosted.org/packages/70/7c/4a7c50951209578e80c0db3a6d4a8f9298ec32ac201fd54cf2fd4223ed09/pbp-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ccb942690682daeabca00f839c64b630", "sha256": "663079c86b1c3ccecb6a4e23c6a5fbc678019701f172f3290e761d34a9757cac" }, "downloads": -1, "filename": "pbp-0.2.1-py2.7.egg", "has_sig": true, "md5_digest": "ccb942690682daeabca00f839c64b630", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 127163, "upload_time": "2014-02-06T02:05:57", "url": "https://files.pythonhosted.org/packages/32/e3/98b1cd1d9ec501daa66040133895ff55d06c3143b7c4df7381c30374d908/pbp-0.2.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "64813593bdc1683ee4af0959afd91552", "sha256": "c3259b369479aa297a33eb712b1c7b0566073ba881e81b0ce94b7650cefe0b0f" }, "downloads": -1, "filename": "pbp-0.2.1.tar.gz", "has_sig": true, "md5_digest": "64813593bdc1683ee4af0959afd91552", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29339, "upload_time": "2014-02-06T02:06:15", "url": "https://files.pythonhosted.org/packages/0f/b4/589395c01996beeae30c54c86387dffb0104dff9d75360c8bb7535b3b6dc/pbp-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "89d3d1a8b8f33b466b1b89482216f675", "sha256": "9666202a51f06d287c89974f203ea60ae4b24666e9577543c8aa465f497f6d19" }, "downloads": -1, "filename": "pbp-0.3.0.tar.gz", "has_sig": false, "md5_digest": "89d3d1a8b8f33b466b1b89482216f675", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33835, "upload_time": "2015-02-19T21:57:12", "url": "https://files.pythonhosted.org/packages/d0/c3/fbe7262e9d0c86756f16e7642e12f17364e7924f7968db29bb9f5eb5b254/pbp-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "7b02092d0af7ea80541d167db3be3639", "sha256": "c8690905956ae1bc9d5733252d94a68c7d0c44244dcdf9ec5529c6e33b3b5b4a" }, "downloads": -1, "filename": "pbp-0.3.1.tar.gz", "has_sig": false, "md5_digest": "7b02092d0af7ea80541d167db3be3639", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33827, "upload_time": "2015-02-19T22:00:38", "url": "https://files.pythonhosted.org/packages/37/69/daa9d802e13da4bf9ac929eedf6aab6f66912195a7efbc0525875c858b0f/pbp-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "b9d17b8d52eefdd8b419cddeea7d5d25", "sha256": "bfb7ffbf95c102da6249b7de26cbe8b594add732e62fba4781f8e636e4fd2216" }, "downloads": -1, "filename": "pbp-0.3.2.tar.gz", "has_sig": false, "md5_digest": "b9d17b8d52eefdd8b419cddeea7d5d25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33856, "upload_time": "2016-08-24T18:46:54", "url": "https://files.pythonhosted.org/packages/7b/1d/99d306c7444e29097df9c1f3d2e22ec8ec4abb430d7aab039e68faa46b50/pbp-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b9d17b8d52eefdd8b419cddeea7d5d25", "sha256": "bfb7ffbf95c102da6249b7de26cbe8b594add732e62fba4781f8e636e4fd2216" }, "downloads": -1, "filename": "pbp-0.3.2.tar.gz", "has_sig": false, "md5_digest": "b9d17b8d52eefdd8b419cddeea7d5d25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33856, "upload_time": "2016-08-24T18:46:54", "url": "https://files.pythonhosted.org/packages/7b/1d/99d306c7444e29097df9c1f3d2e22ec8ec4abb430d7aab039e68faa46b50/pbp-0.3.2.tar.gz" } ] }