{ "info": { "author": "Couchbase, Inc.", "author_email": "PythonPackage@couchbase.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: Other/Proprietary License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Database", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Couchbase Python Encryption\n\nPython encryption for use with the Couchbase Server\n\n## AES-256-HMAC-SHA256\n\nThe AES256CryptoProvider is a symmetric encryption provider for use with Couchbase server to encrypt fields within a JSON document. The provider requires a keystore and the name of the private key used to sign / verify with. Once a provider has been created it needs to be registered with the bucket and then any calls to encrypt_document and decrypt_document will use the provider.\n\nThe provider can be used like this:\n\n```python\nfrom cbencryption import AES256CryptoProvider\n# create insecure key store and register both public and private keys\nkeystore = InMemoryKeyStore()\nkeystore.set_key('mypublickey', '!mysecretkey#9^5usdk39d&dlf)03sL')\nkeystore.set_key('myprivatekey', 'myauthpassword')\n\n# create and register provider\nprovider = AES256CryptoProvider(keystore, 'mypublickey', 'myprivatekey')\nbucket.register_crypto_provider('AES-256-HMAC-SHA256', provider)\n\n# encrypt document, the alg name must match the provider name and the kid must match a key in the keystore\nprefix = '__crypt_'\ndocument = {'message': 'The old grey goose jumped over the wrickety gate.'}\nencrypted_document = bucket.encrypt_document(document,\n [{'alg': 'AES-256-HMAC-SHA256', 'name': 'message'}],\n prefix)\n\n# decrypt document using registered provider\ndecrypted_document = bucket.decrypt_document(encrypted, prefix)\n```\n\nThe output JSON looks like the below and can be stored in Couchbase:\n\n```json\n{\n \"__crypt_message\": {\n \"alg\": \"AES-256-HMAC-SHA256\",\n \"ciphertext\": \"sR6AFEIGWS5Fy9QObNOhbCgfg3vXH4NHVRK1qkhKLQqjkByg2n69lot89qFEJuBsVNTXR77PZR6RjN4h4M9evg==\",\n \"sig\": \"rT89aCj1WosYjWHHu0mf92S195vYnEGA/reDnYelQsM=\",\n \"iv\": \"Cfq84/46Qjet3EEQ1HUwSg==\"\n }\n}\n```\n\n## Keystore\n\nThe key store is a managed way to retrieve keys used during encryption / decryption and the following method is required:\n\n```python\ndef get_key(key_id):\n \"\"\"\n Returns the key as byte array\n \"\"\"\n return b'my-secret-key'\n```\n\n### JavaKeystore\n\nThe key store is a managed way to retrieve keys used during encryption / decryption using a JCEKS keystore. An example of using the JavaKeyStore is below:\n\n```python\nfrom cbencryption import JavaKeyStore\n\n# create keystore using path to keystore file and its passphrase\nkeystore = JavaKeyStore('path/to/keystore.jceks', 'keystore_passphrase')\n```", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/couchbaselabs/python-json-encryption", "keywords": "couchbase nosql encryption", "license": "Proprietary", "maintainer": "", "maintainer_email": "", "name": "cbencryption", "package_url": "https://pypi.org/project/cbencryption/", "platform": "", "project_url": "https://pypi.org/project/cbencryption/", "project_urls": { "Homepage": "http://github.com/couchbaselabs/python-json-encryption" }, "release_url": "https://pypi.org/project/cbencryption/0.1.2/", "requires_dist": null, "requires_python": "", "summary": "JSON encryption API for use with Couchbase Python SDK", "version": "0.1.2" }, "last_serial": 3871700, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "0c740820cf93278cad3485129eee0538", "sha256": "fe0a961d7bfecb5d139902ad18f7c64062a3e7493388d88c514ca1e9e6174251" }, "downloads": -1, "filename": "cbencryption-0.1.tar.gz", "has_sig": false, "md5_digest": "0c740820cf93278cad3485129eee0538", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3759, "upload_time": "2018-05-17T08:31:11", "url": "https://files.pythonhosted.org/packages/57/c1/0d5fbf84c6ca01abc980a032f6735ca4b1afddae85b10eb0efab1fdfbce7/cbencryption-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "14da76f68065eff7c39bbcd6f55c3358", "sha256": "a678e3250dedb757cc80c955bc5f2604adef0d73ef22b028337aeae8569441a6" }, "downloads": -1, "filename": "cbencryption-0.1.1.tar.gz", "has_sig": false, "md5_digest": "14da76f68065eff7c39bbcd6f55c3358", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3736, "upload_time": "2018-05-17T09:23:35", "url": "https://files.pythonhosted.org/packages/64/ba/e1f47e6662ded21f0cb14433548c014e910e8d0f50f7079d92dacd7041d2/cbencryption-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "be5089b62ed3032bebd6d9642aa272a6", "sha256": "ab643c9e85af593ac5fd950f1638b59bc33d3aa05b562fec05f0713762afe840" }, "downloads": -1, "filename": "cbencryption-0.1.2.tar.gz", "has_sig": false, "md5_digest": "be5089b62ed3032bebd6d9642aa272a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4157, "upload_time": "2018-05-17T09:48:24", "url": "https://files.pythonhosted.org/packages/60/fd/e84a235b6bba6b3412748a7d19aeb29b40cd19aa060f7f1b8b5215720694/cbencryption-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "be5089b62ed3032bebd6d9642aa272a6", "sha256": "ab643c9e85af593ac5fd950f1638b59bc33d3aa05b562fec05f0713762afe840" }, "downloads": -1, "filename": "cbencryption-0.1.2.tar.gz", "has_sig": false, "md5_digest": "be5089b62ed3032bebd6d9642aa272a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4157, "upload_time": "2018-05-17T09:48:24", "url": "https://files.pythonhosted.org/packages/60/fd/e84a235b6bba6b3412748a7d19aeb29b40cd19aa060f7f1b8b5215720694/cbencryption-0.1.2.tar.gz" } ] }