{ "info": { "author": "LuckyDams", "author_email": "LuckyDams@gmail.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Security :: Cryptography", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Crypto-Factory\n\nMain purpose of Crypto-Factory library is to provide a **common interface** \nto application for cryptographic tasks.\n\nBased on Factory method design pattern, it provides an abstraction layer to\ndefine cryptographic recipes as service providers, a **'factory' manager** to\nregister and create individual instances, and a standardized client interface\nto interact with them.\nWith this approach, implementing existing or new cryptographic methods is\nsimplified, more reusable and easier to maintain.\n\nCrypto-Factory do not provides any Cryptographic algorithms on its own but\nrelies on existing Python packages such as\n[pyca/cryptography](https://github.com/pyca/cryptography) which is used to\ndefine some **built-in Crypto providers**. These providers can be used as a \nquick starter or samples for dedicated implementations. \nFor this purpose, **Templates** class are also available to design your own\nrecipes using your preferred cryptography packages.\n\n\n## Quick Start\n\n```pydocstring\n# Import & initialize\n>>> from crypto_factory import CryptoFactory\n>>> cf = CryptoFactory()\n\n# Define your Crypto providers configuration\n>>> conf_AES = { \n... # existing service\n... 'key' : b'WkqHg8m9RwmE1iPQJAbuJRKmh72vLvUNFepIWrOldKg=',\n... 'iv' : b'vdU1T6NvAZJIlnznSe8gbQ==',\n... }\n\n\n>>> new_key = cf.utils.generate_key()\n>>> conf_Fernet = { \n... # new service\n... 'id' : 'new',\n... 'builder' : 'FernetServiceBuilder',\n... 'tag' : 'FERNET_TAG',\n... 'key' : new_key,\n... }\n\n# Register both providers\n>>> cf.services.register(\n... conf_AES,\n... sid='aes',\n... builder='AESServiceBuilder',\n... tag=\"AES_TAG\",\n... )\n'aes'\n\n>>> new_mode = cf.services.register(conf_Fernet)\n>>> print(new_mode)\n'new'\n\n# Encrypt data\n>>> old_secret = cf.encrypt('My_Secret', mode='aes', tag=False)\n>>> new_secret = cf.encrypt('My_Secret', new_mode)\n\n# Decrypt data\n>>> cf.decrypt(old_secret, mode='aes')\n'My_Secret'\n\n>>> cf.decrypt(new_secret) # (mode is not required with tagging)\n'My_Secret'\n\n# Decrypt wrong hash\n>>> cf.decrypt(old_secret, mode='new')\nTraceback (most recent call last):\n...\nCryptoFactoryError: Unable to decrypt with Crypto service: new\n\n# Rotate cipher from one or more modes to a target one (migration)\n>>> secret = cf.rotate(old_secret, from_modes=['aes', ], to_mode='new')\n>>> cf.decrypt(secret, mode='new')\n'My_Secret'\n```\n\n\n## Features\n\nCurrent implemented features are:\n\n**Client interface**: \n Symmetric encryption: encrypt, decrypt, rotate.\n\n**Factory** (Services manager): \n To register and call Crypto service providers.\n\n**Built-in Crypto providers**: \n Services for AES & Fernet encryption.\n (can be used as quick starter or samples to define your own recipes)\n\n**Tagging mechanism**: \n Tag encrypted data to identify provider ; can be enforced or disabled.\n\n**Utilities & helpers**: \n Manage tags & providers, generate random keys, string encoding, ...\n\n**Exceptions**: \n Single `CryptoFactoryError` class to catch errors.\n (basic implementation to simplify errors management on client side)\n\n**Templates**: \n Base classes to implement a Crypto services and its related builder(s).\n\n\n## Install\n\nCrypto-Factory is best installed via [pip](http://pip-installer.org):\n\n $ pip install Crypto-Factory\n\n\nOr cloning the Git repository and running within it:\n\n $ pip install -e .\n\n\n## Dependencies\n\nIn order for Crypto-Factory's installation to succeed, you will need the following:\n\n* [Python](https://www.python.org/downloads/) programming language, versions 3.4+\n* [Attr-Dict](https://pypi.org/project/Attr-Dict/) and\n [cryptography](https://pypi.org/project/cryptography/) libraries\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/LuckyDams/Crypto-Factory", "keywords": "cryptography factory-design", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Crypto-Factory", "package_url": "https://pypi.org/project/Crypto-Factory/", "platform": "any", "project_url": "https://pypi.org/project/Crypto-Factory/", "project_urls": { "Documentation": "https://crypto-factory.readthedocs.io/en/latest/", "Homepage": "https://github.com/LuckyDams/Crypto-Factory", "Releases": "https://pypi.org/project/Crypto-Factory", "Source": "https://github.com/LuckyDams/Crypto-Factory", "Tracker": "https://github.com/LuckyDams/Crypto-Factory/issues" }, "release_url": "https://pypi.org/project/Crypto-Factory/0.0.9/", "requires_dist": [ "cryptography (>=2.3.0)", "Attr-Dict (>=0.1.0)" ], "requires_python": ">=3.4", "summary": "Standardize cryptographic tasks in your application.", "version": "0.0.9" }, "last_serial": 5424777, "releases": { "0.0.9": [ { "comment_text": "", "digests": { "md5": "6540809165dc558afb16275a93814e3f", "sha256": "a1b7af87a09a04450cdf9c3a520b676a89caf2ed9ad517bd1d1ca298de6b6179" }, "downloads": -1, "filename": "Crypto_Factory-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "6540809165dc558afb16275a93814e3f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 16618, "upload_time": "2019-06-20T09:17:35", "url": "https://files.pythonhosted.org/packages/a1/32/c8bdb7760bc8dc765f87e931b6d2cb14ae3ddb0db0474e746aad7012b4a8/Crypto_Factory-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa0b5e659cec15a2213f62323a00f6b1", "sha256": "6a5cefe8bfbaa4cf9ffc08f60a007beb12cdd4c71e4386007d0dae8cc1516e48" }, "downloads": -1, "filename": "Crypto-Factory-0.0.9.tar.gz", "has_sig": false, "md5_digest": "fa0b5e659cec15a2213f62323a00f6b1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 13345, "upload_time": "2019-06-20T09:17:39", "url": "https://files.pythonhosted.org/packages/3a/c5/a4dd1730e97ac989cf0aeca788b946cd766f2ff9582b99550c3eca5581a4/Crypto-Factory-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6540809165dc558afb16275a93814e3f", "sha256": "a1b7af87a09a04450cdf9c3a520b676a89caf2ed9ad517bd1d1ca298de6b6179" }, "downloads": -1, "filename": "Crypto_Factory-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "6540809165dc558afb16275a93814e3f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 16618, "upload_time": "2019-06-20T09:17:35", "url": "https://files.pythonhosted.org/packages/a1/32/c8bdb7760bc8dc765f87e931b6d2cb14ae3ddb0db0474e746aad7012b4a8/Crypto_Factory-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa0b5e659cec15a2213f62323a00f6b1", "sha256": "6a5cefe8bfbaa4cf9ffc08f60a007beb12cdd4c71e4386007d0dae8cc1516e48" }, "downloads": -1, "filename": "Crypto-Factory-0.0.9.tar.gz", "has_sig": false, "md5_digest": "fa0b5e659cec15a2213f62323a00f6b1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 13345, "upload_time": "2019-06-20T09:17:39", "url": "https://files.pythonhosted.org/packages/3a/c5/a4dd1730e97ac989cf0aeca788b946cd766f2ff9582b99550c3eca5581a4/Crypto-Factory-0.0.9.tar.gz" } ] }