{ "info": { "author": "Incuna Ltd", "author_email": "admin@incuna.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Database", "Topic :: Security :: Cryptography" ], "description": "# django-pgcrypto-fields [![Latest Release](https://img.shields.io/pypi/v/django-pgcrypto-fields.svg)](https://pypi.org/pypi/django-pgcrypto-fields/) [![Python Versions](https://img.shields.io/pypi/pyversions/django-pgcrypto-fields.svg)](https://pypi.org/pypi/django-pgcrypto-fields/) [![Build Status](https://travis-ci.org/incuna/django-pgcrypto-fields.svg?branch=master)](https://travis-ci.org/incuna/django-pgcrypto-fields?branch=master) [![Requirements Status](https://requires.io/github/incuna/django-pgcrypto-fields/requirements.svg?branch=master)](https://requires.io/github/incuna/django-pgcrypto-fields/requirements/?branch=master) [![PyUp - Python 3](https://pyup.io/repos/github/incuna/django-pgcrypto-fields/python-3-shield.svg)](https://pyup.io/repos/github/incuna/django-pgcrypto-fields/)\n\n\n`django-pgcrypto-fields` is a `Django` extension which relies upon `pgcrypto` to\nencrypt and decrypt data for fields.\n\n## Requirements\n\n - postgres with `pgcrypto`\n - Supports Django 1.11.x to 2.1.x\n - Compatible with Python 3 only\n\n Last version of this library that supports `Django` 1.8.x, 1.9.x, 1.10.x\n was `django-pgcrypto-fields` 2.2.0.\n\n\n## Installation\n\n### Install package \n\n```bash\npip install django-pgcrypto-fields\n```\n\n### Django settings\n\nOur library support different crypto keys for multiple databases by \ndefining the keys in your `DATABASES` settings.\n\nIn `settings.py`:\n```python\nimport os\nBASEDIR = os.path.dirname(os.path.dirname(__file__))\nPUBLIC_PGP_KEY_PATH = os.path.abspath(os.path.join(BASEDIR, 'public.key'))\nPRIVATE_PGP_KEY_PATH = os.path.abspath(os.path.join(BASEDIR, 'private.key'))\n\n# Used by PGPPublicKeyField used by default if not specified by the db\nPUBLIC_PGP_KEY = open(PUBLIC_PGP_KEY_PATH).read()\nPRIVATE_PGP_KEY = open(PRIVATE_PGP_KEY_PATH).read()\n\n# Used by TextHMACField and PGPSymmetricKeyField if not specified by the db\nPGCRYPTO_KEY='ultrasecret'\n\nDIFF_PUBLIC_PGP_KEY_PATH = os.path.abspath(\n os.path.join(BASEDIR, 'tests/keys/public_diff.key')\n)\nDIFF_PRIVATE_PGP_KEY_PATH = os.path.abspath(\n os.path.join(BASEDIR, 'tests/keys/private_diff.key')\n)\n\n# And add 'pgcrypto' to `INSTALLED_APPS` to create the extension for\n# pgcrypto (in a migration).\nINSTALLED_APPS = (\n 'pgcrypto',\n # Other installed apps\n)\n\nDATABASES = {\n # This db will use the default keys above\n 'default': {\n 'ENGINE': 'django.db.backends.postgresql_psycopg2',\n 'NAME': 'pgcryto_fields',\n 'USER': 'pgcryto_fields',\n 'PASSWORD': 'xxxx',\n 'HOST': 'psql.test.com',\n 'PORT': 5432,\n 'OPTIONS': {\n 'sslmode': 'require',\n }\n },\n 'diff_keys': {\n 'ENGINE': 'django.db.backends.postgresql_psycopg2',\n 'NAME': 'pgcryto_fields_diff',\n 'USER': 'pgcryto_fields_diff',\n 'PASSWORD': 'xxxx',\n 'HOST': 'psqldiff.test.com',\n 'PORT': 5432,\n 'OPTIONS': {\n 'sslmode': 'require',\n },\n 'PGCRYPTO_KEY': 'djangorocks',\n 'PUBLIC_PGP_KEY': open(DIFF_PUBLIC_PGP_KEY_PATH, 'r').read(),\n 'PRIVATE_PGP_KEY': open(DIFF_PRIVATE_PGP_KEY_PATH, 'r').read(),\n },\n}\n```\n\n### Generate GPG keys if using Public Key Encryption\n\nThe public key is going to encrypt the message and the private key will be\nneeded to decrypt the content. The following commands have been taken from the\n[pgcrypto documentation](http://www.postgresql.org/docs/devel/static/pgcrypto.html)\n(see Generating PGP Keys with GnuPG).\n\nGenerating a public and a private key (The preferred key type is \"DSA and Elgamal\".):\n\n```bash\n$ gpg --gen-key\n$ gpg --list-secret-keys\n\n/home/bob/.gnupg/secring.gpg\n---------------------------\nsec 2048R/21 2014-10-23\nuid Test Key \nssb 2048R/42 2014-10-23\n\n\n$ gpg -a --export 42 > public.key\n$ gpg -a --export-secret-keys 21 > private.key\n```\n\n### Upgrading to 2.4.0 from previous versions\n\nThe 2.4.0 version of this library received a large rewrite in order to support \nauto-decryption when getting encrypted field data as well as the ability to filter \non encrypted fields without using the old PGPCrypto aggregate functions available\nin previous versions.\n\nThe following items in this library have been removed and therefore references in \nyour application to these items need to be removed as well:\n\n* `managers.PGPManager`\n* `admin.PGPAdmin`\n* `aggregates.*`\n\n## Fields\n\n`django-pgcrypto-fields` has 3 kinds of fields:\n - Hash based fields\n - Public Key (PGP) fields\n - Symmetric fields\n\n#### Hash Based Fields\n\nSupported hash based fields are:\n - `TextDigestField`\n - `TextHMACField`\n\n`TextDigestField` is hashed in the database using the `digest` pgcrypto function \nusing the `sha512` algorithm.\n\n`TextHMACField` is hashed in the database using the `hmac` pgcrypto function \nusing a key and the `sha512` algorithm. This is similar to the digest version however\nthe hash can only be recalculated knowing the key. This prevents someone from altering \nthe data and also changing the hash to match.\n\n#### Public Key Encryption Fields\n\nSupported PGP public key fields are:\n - `CharPGPPublicKeyField`\n - `EmailPGPPublicKeyField`\n - `IntegerPGPPublicKeyField`\n - `TextPGPPublicKeyField`\n - `DatePGPPublicKeyField`\n - `DateTimePGPPublicKeyField`\n - `DecimalPGPPublicKeyField`\n - `FloatPGPPublicKeyField`\n - `TimePGPPublicKeyField`\n\nPublic key encryption creates a token generated with a public key to\nencrypt the data and a private key to decrypt it.\n\nPublic and private keys can be set in settings with `PUBLIC_PGP_KEY` and\n`PRIVATE_PGP_KEY`.\n\n#### Symmetric Key Encryption Fields\n\nSupported PGP symmetric key fields are:\n - `CharPGPSymmetricKeyField`\n - `EmailPGPSymmetricKeyField`\n - `IntegerPGPSymmetricKeyField`\n - `TextPGPSymmetricKeyField`\n - `DatePGPSymmetricKeyField`\n - `DateTimePGPSymmetricKeyField`\n - `DecimalPGPSymmetricKeyField`\n - `FloatPGPSymmetricKeyField`\n - `TimePGPSymmetricKeyField`\n\nEncrypt and decrypt the data with `settings.PGCRYPTO_KEY` which acts like a password.\n\n### Usage\n\n#### Model Definition\n\n```python\nfrom django.db import models\n\nfrom pgcrypto import fields\n\nclass MyModel(models.Model):\n digest_field = fields.TextDigestField()\n digest_with_original_field = fields.TextDigestField(original='pgp_sym_field')\n hmac_field = fields.TextHMACField()\n hmac_with_original_field = fields.TextHMACField(original='pgp_sym_field')\n\n email_pgp_pub_field = fields.EmailPGPPublicKeyField()\n integer_pgp_pub_field = fields.IntegerPGPPublicKeyField()\n pgp_pub_field = fields.TextPGPPublicKeyField()\n date_pgp_pub_field = fields.DatePGPPublicKeyField()\n datetime_pgp_pub_field = fields.DateTimePGPPublicKeyField()\n time_pgp_pub_field = fields.TimePGPPublicKeyField()\n decimal_pgp_pub_field = fields.DecimalPGPPublicKeyField()\n float_pgp_pub_field = fields.FloatPGPPublicKeyField()\n\n email_pgp_sym_field = fields.EmailPGPSymmetricKeyField()\n integer_pgp_sym_field = fields.IntegerPGPSymmetricKeyField()\n pgp_sym_field = fields.TextPGPSymmetricKeyField()\n date_pgp_sym_field = fields.DatePGPSymmetricKeyField()\n datetime_pgp_sym_field = fields.DateTimePGPSymmetricKeyField()\n time_pgp_sym_field = fields.TimePGPSymmetricKeyField()\n decimal_pgp_sym_field = fields.DecimalPGPSymmetricKeyField()\n float_pgp_sym_field = fields.FloatPGPSymmetricKeyField()\n```\n\n#### Encrypting\n\nData is automatically encrypted when inserted into the database.\n\nExample:\n```\n>>> MyModel.objects.create(value='Value to be encrypted...')\n```\n\nHash fields can have hashes auto updated if you use the `original` attribute. This\nattribute allows you to indicate another field name to base the hash value on.\n\n```python\nfrom django.db import models\n\nfrom pgcrypto import fields\n\nclass User(models.Model):\n first_name = fields.TextPGPSymmetricKeyField(max_length=20, verbose_name='First Name')\n first_name_hashed = fields.TextHMACField(original='first_name') \n```\n\nIn the above example, if you specify the optional original attribute it would \ntake the unencrypted value from the first_name model field as the input value \nto create the hash. If you did not specify an original attribute, the field \nwould work as it does now and would remain backwards compatible.\n\n##### PGP fields\n\nWhen accessing the field name attribute on a model instance we are getting the\ndecrypted value.\n\nExample:\n```\n>>> # When using a PGP public key based encryption\n>>> my_model = MyModel.objects.get()\n>>> my_model.value\n'Value decrypted'\n```\n\nFiltering encrypted values is now handled automatically as of 2.4.0. And `aggregate`\nmethods are not longer supported and have been removed from the library.\n\nAlso, auto-decryption is support for `select_related()` models.\n\n```python\nfrom django.db import models\n\nfrom pgcrypto import fields\n\n\nclass EncryptedFKModel(models.Model):\n fk_pgp_sym_field = fields.TextPGPSymmetricKeyField(blank=True, null=True)\n\n\nclass EncryptedModel(models.Model):\n pgp_sym_field = fields.TextPGPSymmetricKeyField(blank=True, null=True)\n fk_model = models.ForeignKey(\n EncryptedFKModel, blank=True, null=True, on_delete=models.CASCADE\n )\n```\n\nExample:\n```\n>>> import EncryptedModel\n>>> my_model = EncryptedModel.objects.get().select_releated('fk_model')\n>>> my_model.pgp_sym_field\n'Value decrypted'\n>>> my_model.fk_model.fk_pgp_sym_field\n'Value decrypted'\n```\n\n##### Hash fields\n\nTo filter hash based values we need to compare hashes. This is achieved by using\na `__hash_of` lookup.\n\nExample:\n```\n>>> my_model = MyModel.objects.filter(digest_field__hash_of='value')\n[]\n>>> my_model = MyModel.objects.filter(hmac_field__hash_of='value')\n[]\n\n```\n\n## Limitations\n\n#### `.distinct('encrypted_field_name')`\n\nDue to a missing feature in the Django ORM, using `distinct()` on an encrypted field\ndoes not work for Django 2.0.x and lower.\n\nThe normal distinct works on Django 2.1.x and higher:\n\n```python\nitems = EncryptedFKModel.objects.filter(\n pgp_sym_field__startswith='P'\n).only(\n 'id', 'pgp_sym_field', 'fk_model__fk_pgp_sym_field'\n).distinct(\n 'pgp_sym_field'\n)\n```\n\nWorkaround for Django 2.0.x and lower:\n\n```python\nfrom django.db import models\n\nitems = EncryptedFKModel.objects.filter(\n pgp_sym_field__startswith='P'\n).annotate(\n _distinct=models.F('pgp_sym_field')\n).only(\n 'id', 'pgp_sym_field', 'fk_model__fk_pgp_sym_field'\n).distinct(\n '_distinct'\n)\n```\n\nThis works because the annotated field is auto-decrypted by Django as a `F` field and that \nfield is used in the `distinct()`.\n\n\n## Security Limitations\n\nTaken direction from the PostgreSQL documentation:\n\nhttps://www.postgresql.org/docs/9.6/static/pgcrypto.html#AEN187024\n\nAll pgcrypto functions run inside the database server. That means that all the \ndata and passwords move between pgcrypto and client applications in clear text. Thus you must:\n\n1. Connect locally or use SSL connections.\n1. Trust both system and database administrator.\n\nIf you cannot, then better do crypto inside client application.\n\nThe implementation does not resist side-channel attacks. For example, the time \nrequired for a pgcrypto decryption function to complete varies among ciphertexts of \na given size.\n\n\n# CHANGELOG\n\n# 2.5.1\n\n* Fixed regression in the definition of EmailPGPPublicKeyField (#77)\n* Removed dead code (remove_validators and RemoveMaxLengthValidatorMixin)\n* Updated requirements_dev.txt\n\n## 2.5.0\n\n* Added new DecimalFields for both public and symmetric key (#64)\n* Added new FloatFields for both public and symmetric key (#64)\n* Added new TimeFields for both public and symmetric key (#64)\n* Added support for different keys based on database (#67)\n\n## 2.4.0\n\n* Added auto-decryption of all encrypted fields including FK tables\n* Removed django-pgcrypto-fields `aggregates`, `PGPManager` and `PGPAdmin` as they are no longer needed\n* Added support for `get_or_create()` and `update_or_create()` (#27)\n* Added support for `get_by_natural_key()` (#23)\n* Added support for `only()` and `defer()` as they were not supported with `PGPManager`\n* Added support for `distinct()` (Django 2.1+ with workaround available for 2.0 and lower)\n* Separated out dev requirements from setup.py requirements\n* Updated packaging / setup.py to include long description\n* Added AUTHORS and updated CONTRIBUTING\n* Updated TravisCI to use Xenial to gain Python 3.7 in the matrix\n\n## 2.3.1\n\n* Added `__range` lookup for Date / DateTime fields (#59)\n* Remove compatibility for `Django 1.8, 1.9, and 1.10` (#62)\n* Improved `setup.py`:\n * check for Python 3.5+\n * updated classifiers\n* Improved `make` file for release to use `twine`\n* Added additional shields to `README`\n* Updated Travis config to include Python 3.5 and 3.6\n* Refactored lookups and mixins\n\n## 2.3.0\n\n* Invalid release, bump to 2.3.1\n\n## 2.2.0\n\n* Merge `.coveragerc` into `setup.cfg`\n* Added `.gitignore` file\n* Updated out-dated requirements (latest versions of `Flake8` and `pycodestyle` \nare incompatible with each other)\n* Updated `README` with better explanations of the fields\n* Implemented DatePGPPublicKeyField and DateTimePGPPublicKeyField\n\n## 2.1.1\n\n* Added support for Django 2.x+\n* Updated requirements for testing\n* Updated travis config with Python 3.6 and additional environments\n\n## 2.1.0\n\nThanks to @peterfarrell:\n* Add support for `DatePGPSymmetricKeyField` and `DateTimePGPSymmetricKeyField`\nincluding support for serializing / deserializing django form fields.\n* Add support for auto decryption of symmetric key and public key fields via\nthe PGPManager (and support for disabling it in the Django Admin via the PGPAdmin)\n\n## 2.0.0\n\n* Remove compatibility for `Django 1.7`.\n* Add compatibility for `Django 1.10`.\n* Add `Django 1.9` to the travis matrix.\n\n## v1.0.1\n\n* Exclude tests app from distributed package.\n\n## v1.0.0\n\n* Rename package from `pgcrypto_fields` to `pgcrypto`.\n\n## v0.7.0\n\n* Make `get_placeholder` accepts a new argument `compiler`\n* Fix buggy import to `Aggregate`\n\n**Note: these changes have been done for django > 1.8.0.**\n\n## v0.6.4\n\n* Remove `MaxLengthValidator` from email fields.\n\n## v0.6.3\n\n* Avoid setting `max_length` on PGP fields.\n\n## v0.6.2\n\n* Allow/check `NULL` values for:\n `TextDigestField`;\n `TextHMACField`;\n `EmailPGPPublicKeyField`;\n `IntegerPGPPublicKeyField`;\n `TextPGPPublicKeyField`;\n `EmailPGPSymmetricKeyField`.\n `IntegerPGPSymmetricKeyField`.\n `TextPGPSymmetricKeyField`.\n\n## v0.6.1\n\n* Fix `cast`ing bug when sending negative values to integer fields.\n\n## v0.6.0\n\n* Add `EmailPGPPublicKeyField` and `EmailPGPSymmetricKeyField`.\n\n## v0.5.0\n\n* Rename the following fields:\n `PGPPublicKeyField` to `TextPGPPublicKeyField`;\n `PGPSymmetricKeyField` to `TextPGPSymmetricKeyField`;\n `DigestField` to `TextDigestField`;\n `HMACField` to `TextHMACField`.\n* Add new integer fields:\n `IntegerPGPPublicKeyField`;\n `IntegerPGPSymmetricKeyField`.\n\n## v0.4.0\n\n* Make accessing decrypted value transparent. Fix bug when field had a string\nrepresentation of `memoryview` for PGP and keyed hash fields.\n\n## v0.3.1\n\n* Fix `EncryptedProxyField` to select the correct item.\n\n## v0.3.0\n\n* Access `PGPPublicKeyField` and `PGPSymmetricKeySQL` decrypted values with\nfield's proxy `_decrypted`.\n* Remove descriptor for field's name and raw value.\n\n## v0.2.0\n\n* Add hash based lookup for `DigestField` and `HMACField`.\n* Add `DigestField`, `HMACField`, `PGPPublicKeyAggregate`, `PGPSymmetricKeyAggregate`.\n\n## v0.1.0\n\n* Add decryption through an aggregate class.\n* Add encryption when inserting data to the database.\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/incuna/django-pgcrypto-fields", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "django-pgcrypto-fields", "package_url": "https://pypi.org/project/django-pgcrypto-fields/", "platform": "", "project_url": "https://pypi.org/project/django-pgcrypto-fields/", "project_urls": { "Homepage": "https://github.com/incuna/django-pgcrypto-fields" }, "release_url": "https://pypi.org/project/django-pgcrypto-fields/2.5.1/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Encrypted fields for Django dealing with pgcrypto postgres extension.", "version": "2.5.1" }, "last_serial": 4415966, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "8813e6e37de3d46a8b9da52a128c9d31", "sha256": "88d64c35c0510f880f769437452052b48a8c4c9a9637406a689a9e72e659387b" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8813e6e37de3d46a8b9da52a128c9d31", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 6785, "upload_time": "2014-10-24T14:21:14", "url": "https://files.pythonhosted.org/packages/3f/45/fee9d3fb0d9376805167ab5a45d2898312d0c5a1b49a08c677d69368c5e6/django_pgcrypto_fields-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4098a95238900b90735b679eba2a76d6", "sha256": "1850b9b0ba23380bbfe81ef2bc008eb87298a2879ac97be46b028af96498c4e3" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4098a95238900b90735b679eba2a76d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3599, "upload_time": "2014-10-24T14:21:12", "url": "https://files.pythonhosted.org/packages/c4/55/2c03cd03818d8c2c9e9919b6ab0932d06294dc7969ad373ddb74dbf4953c/django-pgcrypto-fields-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "4f4e71c4f6b3aca973a0ac336647b866", "sha256": "0fd3e167284f72236877ef6e2a4438e2b829f953b86c6212c291813ae8568a5f" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4f4e71c4f6b3aca973a0ac336647b866", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9451, "upload_time": "2014-11-18T15:50:07", "url": "https://files.pythonhosted.org/packages/d2/0f/96203510216d297712a924f40238d17f4fe848af81d22fbb0600e794572d/django_pgcrypto_fields-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cbd9843cc4640efb9875a7d1ec33484", "sha256": "573a23ecdd6574ef118e0eb5beec50517ea1c73a7a42c79f9e4aee49e0e7ddda" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.2.0.tar.gz", "has_sig": false, "md5_digest": "7cbd9843cc4640efb9875a7d1ec33484", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5449, "upload_time": "2014-11-18T15:50:05", "url": "https://files.pythonhosted.org/packages/bd/39/11d096ec0c6e62abbe8d0b6502ff84ea747c8440b511bdd9921c86ba55a9/django-pgcrypto-fields-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "1ffc9871f6f209e83cc50a67c8358185", "sha256": "3379bd038320c1fd6b18e4316afbefaccd8d86b023a8911511389fe5d2b4f52e" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1ffc9871f6f209e83cc50a67c8358185", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9417, "upload_time": "2014-11-20T14:33:10", "url": "https://files.pythonhosted.org/packages/00/db/48fe5bed5d9e639f5fd02232910c880955b0cb0358292e015a95042fe3ce/django_pgcrypto_fields-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78e6be2dd7857e2f826522f5ff675fe6", "sha256": "33a4e6622404289c4f63c7e1895394d9806be4e8646898e39e0eb4fc720f466b" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.3.0.tar.gz", "has_sig": false, "md5_digest": "78e6be2dd7857e2f826522f5ff675fe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5419, "upload_time": "2014-11-20T14:33:07", "url": "https://files.pythonhosted.org/packages/35/bd/76d548c2101a3097b447b38e91a4c9b8caa0301d7214e4aa2ce501aee7ba/django-pgcrypto-fields-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "b87653086eb1e42e3ecff9a9eb7befae", "sha256": "a660ac14dec69020a7fa237599d5d5bcc67a7892692d39a4eb10650dd1d3c55c" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b87653086eb1e42e3ecff9a9eb7befae", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9503, "upload_time": "2014-12-05T21:55:57", "url": "https://files.pythonhosted.org/packages/bb/80/b86d37a8f1c423f64c7688614c0b34cd3cc60c391c6946c4a3721fed3b83/django_pgcrypto_fields-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "10568195f4b5d80ffc8500321c83d802", "sha256": "b48c22feea5c21270fc4e87d2aeac9ee5638be34bc2a76d8cc90b13a67ceebd1" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.3.1.tar.gz", "has_sig": false, "md5_digest": "10568195f4b5d80ffc8500321c83d802", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5473, "upload_time": "2014-12-05T21:55:55", "url": "https://files.pythonhosted.org/packages/d9/be/cdb673910caa53bcc3476a616032c118468078c4e7acee23055775a50e51/django-pgcrypto-fields-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "3fee4748fc8c4dcdaaf5923d563e5adf", "sha256": "d837ced1f50951915709e9fe4467dbc11b9d046cf4d0ee98da29d037764b1d63" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3fee4748fc8c4dcdaaf5923d563e5adf", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9903, "upload_time": "2014-12-10T10:54:00", "url": "https://files.pythonhosted.org/packages/f5/91/2ea70d92a974e76b0ac72bcc5923b956f51efcb167b1c9cb6bfa28d85358/django_pgcrypto_fields-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "840326250fbde9a1a73cf3484b8e14cc", "sha256": "85f2a9f70032a767d38d5ee473a69cc96bc13d4e232d1d01bbcec34e5fc05e96" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.4.0.tar.gz", "has_sig": false, "md5_digest": "840326250fbde9a1a73cf3484b8e14cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5914, "upload_time": "2014-12-10T10:53:57", "url": "https://files.pythonhosted.org/packages/8c/0f/de934e2354c7ddd2a002377c9e3011f87b601db51fd7a2211bb52e432092/django-pgcrypto-fields-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "a4993ce629ec8ed0c25273f8216ecf72", "sha256": "13ab4aff161d094597b8ff855194e7d55672946d1d3758128b05f224f8b530e4" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a4993ce629ec8ed0c25273f8216ecf72", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10055, "upload_time": "2015-01-02T16:45:16", "url": "https://files.pythonhosted.org/packages/0c/21/d7e4fac9c19f47c6f428f38097772cda78f8606c0091d1e1e10611a5c1e7/django_pgcrypto_fields-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "01aa34e568f16a36421f12443eb0f5d1", "sha256": "8476fdc8fc9e4339f414c768207bcdf75940f7bc27e9bd26a70cd344b2f1dbce" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.5.0.tar.gz", "has_sig": false, "md5_digest": "01aa34e568f16a36421f12443eb0f5d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6044, "upload_time": "2015-01-02T16:45:13", "url": "https://files.pythonhosted.org/packages/40/dd/28b9b211d8019bd6b6e3f530d0caaef2b1b2157db7d6db53fc8f80a1b76d/django-pgcrypto-fields-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "fc1ac8f27a42a9421ba4e7be302a53c0", "sha256": "6083c21081115e5665826c19a5a1cf53cc32aaf3b6b66cf725bc295e2efa83ec" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fc1ac8f27a42a9421ba4e7be302a53c0", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10114, "upload_time": "2015-01-06T09:33:51", "url": "https://files.pythonhosted.org/packages/91/a3/1f2e4b919786170aefcb4d0e693bea8101bc43e2d2f2a525ab87461a2c62/django_pgcrypto_fields-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae1a4ef19dc601830037d9f49db29bf1", "sha256": "e3b53e8cc373f59166ea8f6faea8138bfa2393123548906e7c495b8874a0788f" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.6.0.tar.gz", "has_sig": false, "md5_digest": "ae1a4ef19dc601830037d9f49db29bf1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6117, "upload_time": "2015-01-06T09:33:49", "url": "https://files.pythonhosted.org/packages/52/57/f2b79da238e0edb7828f11cb9041871616d55f897662bbb51b749d1c58c9/django-pgcrypto-fields-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "a7108098efa97f5a0625f2ee1bbe3ca2", "sha256": "e11426eb3410569162bd4e160509de8bd8cbe9c3da42c7fdf9b6f61c8cdc07bc" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a7108098efa97f5a0625f2ee1bbe3ca2", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10255, "upload_time": "2015-01-06T12:54:27", "url": "https://files.pythonhosted.org/packages/36/6c/a76c6ea33c8dd9ddbecbefaf56e1041187686f93ed029a0e9f71121b6d9a/django_pgcrypto_fields-0.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b22fd397b4b7676139d320b72b67c02", "sha256": "69d328be30071e8b251e8233c6caa6404eb569ed25aa8fb32dbc793402a70b28" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.6.1.tar.gz", "has_sig": false, "md5_digest": "9b22fd397b4b7676139d320b72b67c02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6236, "upload_time": "2015-01-06T12:54:23", "url": "https://files.pythonhosted.org/packages/5f/cf/2a3055ffb952ef858f973116ce21b20e9dda9e0ab759f0bae434e9dbc483/django-pgcrypto-fields-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "2ec67382a16b9fa197ea67670f99571f", "sha256": "fed2e1a1e4ed756725021f29b165d775db170db5ad5f152ab7c1930cc3bbe4b8" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2ec67382a16b9fa197ea67670f99571f", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10478, "upload_time": "2015-01-06T16:25:54", "url": "https://files.pythonhosted.org/packages/cc/12/5c9dce0a1be620a030873b40be3cb73d6d917ed6c7653e5d68326144de2d/django_pgcrypto_fields-0.6.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ca1816b3b95ca0102c6e94cb964e48f", "sha256": "9c4220093981990e3a9a4beacf2a0600ae202b5165d8b3cd615dc639aea53971" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.6.2.tar.gz", "has_sig": false, "md5_digest": "5ca1816b3b95ca0102c6e94cb964e48f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6429, "upload_time": "2015-01-06T16:25:50", "url": "https://files.pythonhosted.org/packages/ea/33/67793fa902e9e26d5dceb7b0cb16480a905b015dc86bd200f3e3dfcbc7a3/django-pgcrypto-fields-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "be4ea8338090626028e6014e47bf34f1", "sha256": "8f641a8e822c4d02bd9b36b33abb5c827d0df56de1397d03c5a57bd55c8d742d" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.6.3-py3-none-any.whl", "has_sig": false, "md5_digest": "be4ea8338090626028e6014e47bf34f1", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10755, "upload_time": "2015-01-12T10:37:11", "url": "https://files.pythonhosted.org/packages/5e/fe/c98a29ebcf3fc564d0a4746bac167dc419c2abaaf1995b1c77037e0200c9/django_pgcrypto_fields-0.6.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99892df8e64334b30f6111b8de60ec34", "sha256": "caf76e44968b77827f9fd23cb10b574e3a709b68e59f34bad435d4defda2ae93" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.6.3.tar.gz", "has_sig": false, "md5_digest": "99892df8e64334b30f6111b8de60ec34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6674, "upload_time": "2015-01-12T10:37:09", "url": "https://files.pythonhosted.org/packages/fe/3e/85c35b1f8fdfd123f449678149598d15242270c584f99f9739c8edb7ef03/django-pgcrypto-fields-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "a0ad369947fdb9256fe75f9520b0b1ef", "sha256": "077f22e1747660119b164147c4a616515428f459f7925fae3869d47158c51810" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.6.4-py3-none-any.whl", "has_sig": false, "md5_digest": "a0ad369947fdb9256fe75f9520b0b1ef", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 11288, "upload_time": "2015-01-13T15:23:46", "url": "https://files.pythonhosted.org/packages/98/6e/899ef70c4d4c1150effcae5828c05c9b57e320af13a3f01323c8a2aabaa1/django_pgcrypto_fields-0.6.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d198a59ed6bfada59398765ce5780f96", "sha256": "a13613a5e17890bd01cc7dfea87229b1aca84adc15c5dd2a09c7ffc6d8cb504f" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.6.4.tar.gz", "has_sig": false, "md5_digest": "d198a59ed6bfada59398765ce5780f96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6924, "upload_time": "2015-01-13T15:23:44", "url": "https://files.pythonhosted.org/packages/7b/d3/5aa8e82fd948559ad42bb185ecda1a592995b12a6b14647dc99fbe8b00e2/django-pgcrypto-fields-0.6.4.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "63693343dd0e33f5e6fa47fa865fcef4", "sha256": "9db44c8a5feac1f44803cf81f6559bccdfa966a2a2e455b63a8ca5b8e040e70d" }, "downloads": -1, "filename": "django_pgcrypto_fields-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "63693343dd0e33f5e6fa47fa865fcef4", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 11306, "upload_time": "2015-06-09T14:13:30", "url": "https://files.pythonhosted.org/packages/fb/51/87ada5fa01255bca873a2531f55df9602abe2a8d09bee9f187f307282124/django_pgcrypto_fields-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ebaaffb786af565b80aa83945661ed0c", "sha256": "1b667f9f761a7e5560af467dac4181c6bfb761f1a79b4989b041e6af990b8b43" }, "downloads": -1, "filename": "django-pgcrypto-fields-0.7.0.tar.gz", "has_sig": false, "md5_digest": "ebaaffb786af565b80aa83945661ed0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6940, "upload_time": "2015-06-09T14:13:24", "url": "https://files.pythonhosted.org/packages/10/01/1d07e3834410c92425a30bfd1dee3a8f2954e04e3d57c7fdea25f1543abf/django-pgcrypto-fields-0.7.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "d2651b937340fbec5cb8f54992a57080", "sha256": "984c311eb763c0f4bbebcd78cc394e8fb1699cb4841960dd114362fc8afde0be" }, "downloads": -1, "filename": "django_pgcrypto_fields-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d2651b937340fbec5cb8f54992a57080", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 11152, "upload_time": "2015-09-21T14:52:21", "url": "https://files.pythonhosted.org/packages/ec/83/48f372c4b565b2f849b793f9625bfc4b4d062a392af9fdf7624db411517f/django_pgcrypto_fields-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b763c8725b375501f84ebfdf7388b4fb", "sha256": "25eaa975c0887d1330deda43ef52a55e42392a7bf9743fad65a0832793169136" }, "downloads": -1, "filename": "django-pgcrypto-fields-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b763c8725b375501f84ebfdf7388b4fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6933, "upload_time": "2015-09-21T14:52:16", "url": "https://files.pythonhosted.org/packages/dc/ef/b1a704466fe378944053915e30f67b62b8d8248f6633addcc1b68217f6cc/django-pgcrypto-fields-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "61d0698269220745519cdbb41d0fe007", "sha256": "c2defb5044f6826195930731c3b9906a58d40494216d8d783f0e8b7909d25571" }, "downloads": -1, "filename": "django_pgcrypto_fields-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "61d0698269220745519cdbb41d0fe007", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7498, "upload_time": "2016-10-07T15:12:27", "url": "https://files.pythonhosted.org/packages/4b/0a/09c334166baff7c3a3505c4c4fe940f38b11c6422ecca6c46f16a827fcc8/django_pgcrypto_fields-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "474bf3ca5f39a5862bc0d9c476487f09", "sha256": "e91d5a34942a0f8e7570a2b1760aa2f7d1cd625988febd60c87526e4d1ae9acf" }, "downloads": -1, "filename": "django-pgcrypto-fields-1.0.1.tar.gz", "has_sig": false, "md5_digest": "474bf3ca5f39a5862bc0d9c476487f09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4410, "upload_time": "2016-10-07T15:12:24", "url": "https://files.pythonhosted.org/packages/f7/a0/f4c42e0f9945421a8ae46e9a5ffe07c94095db32cbf23166d155a5f0902c/django-pgcrypto-fields-1.0.1.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "01aa70f8caef186b6def79e0514bd5ea", "sha256": "48c29eefb0e7a1f611c973e6d45b70d711ea70f36c80a7020eb9d6e208fb3b99" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "01aa70f8caef186b6def79e0514bd5ea", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7480, "upload_time": "2016-10-27T14:03:48", "url": "https://files.pythonhosted.org/packages/56/e3/0efebd9ec9a994202023810739a0c27b374f3b8bb14ceb82bd2443f3351a/django_pgcrypto_fields-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "431e2886131d5246217f0e09e2cfec84", "sha256": "0074bbcdc1ec940d86423baa0ecfeac8648ebe809ad8ab3f2257923b4071d1f0" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.0.0.tar.gz", "has_sig": false, "md5_digest": "431e2886131d5246217f0e09e2cfec84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4430, "upload_time": "2016-10-27T14:03:45", "url": "https://files.pythonhosted.org/packages/39/44/e472e455d44147430698b95bc001c05a91d956b9aef556bde6b8f8b58331/django-pgcrypto-fields-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "b7bcaf7a68e09a0cd67a2e762f7bebfe", "sha256": "dfece02977aac3a1503b88a4396026a353532ba0ad9b0d0585a6a38bdf933736" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "b7bcaf7a68e09a0cd67a2e762f7bebfe", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9805, "upload_time": "2017-01-11T17:42:04", "url": "https://files.pythonhosted.org/packages/7e/07/634b5836052bd55f8016ecf4053c3e3b9273cbfe5fe1a11060824c7013aa/django_pgcrypto_fields-2.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "febe54b52c7a24fe02b5ec0962c547b7", "sha256": "49391382731facaffad642904525c74edc5723ab687f005e35ef93d0d3609cf7" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.1.0.tar.gz", "has_sig": false, "md5_digest": "febe54b52c7a24fe02b5ec0962c547b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6229, "upload_time": "2017-01-11T17:42:03", "url": "https://files.pythonhosted.org/packages/f8/14/464ae83785e12ed8fe43e8cc8b830d7a1322f019486a2f0bd09522429800/django-pgcrypto-fields-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "4a6158c4b4ff5ed8774ce5351a108dea", "sha256": "f47475b511d66c7d97cf9c664baf0d664db57c02bda117e199de8c525801f940" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4a6158c4b4ff5ed8774ce5351a108dea", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 16090, "upload_time": "2018-09-03T09:34:06", "url": "https://files.pythonhosted.org/packages/78/9d/a7a92aadf2000c1e089ac74ff25f16815028336395e4a062e500ea01f9de/django_pgcrypto_fields-2.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40f56554ebeea1e1be1fbf95a3b8df9a", "sha256": "a9024b9d107342cfa0fb156252dd3867de5059e3716a0662893ce961112b73b0" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.1.1.tar.gz", "has_sig": false, "md5_digest": "40f56554ebeea1e1be1fbf95a3b8df9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12047, "upload_time": "2018-09-03T09:34:04", "url": "https://files.pythonhosted.org/packages/72/e9/e9292d7e96cd8eb9bfafbb61255388738df94c03f6d104c9ac32177d2ad8/django-pgcrypto-fields-2.1.1.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "d05eb8106e2d9890cf7837a549ce61c2", "sha256": "00cd21709adedc411371f460dd15f3ffe3c166182c05db3ecf08c473e4d111c2" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d05eb8106e2d9890cf7837a549ce61c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10331, "upload_time": "2018-10-05T21:21:09", "url": "https://files.pythonhosted.org/packages/99/ba/a3eb551cd9dbfab49828c1e9c36eea581eabf3738634d45a04787e762ee8/django_pgcrypto_fields-2.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6171f9a25a943f3e1fda241e36f8b382", "sha256": "6710a74b5d81fd45bb5f423f814f9edac33e786e93c4bce191f2915546f78c1c" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.2.0.tar.gz", "has_sig": false, "md5_digest": "6171f9a25a943f3e1fda241e36f8b382", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9551, "upload_time": "2018-10-05T21:21:11", "url": "https://files.pythonhosted.org/packages/0e/0b/87eb2f3696f7521a554a785191019204f727846790b9733dc459facc1078/django-pgcrypto-fields-2.2.0.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "2a7618b33ca734f63baf502526154a47", "sha256": "452a0e8074c630225589c07464c3646e7732c3b7d94af63a66cb53191a3b436c" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2a7618b33ca734f63baf502526154a47", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10599, "upload_time": "2018-10-09T17:11:35", "url": "https://files.pythonhosted.org/packages/f2/2c/b5e704f868347c2c58670119bf3b9ad46bb8fb091452b6d3025d7ad755b2/django_pgcrypto_fields-2.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1427e7c49e2654604b3d6adbe7fb5159", "sha256": "cf8d4f01a6fe5af8304700d8078655bfd8b0030ae18c783285a696dfdddd355d" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.3.0.tar.gz", "has_sig": false, "md5_digest": "1427e7c49e2654604b3d6adbe7fb5159", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 10252, "upload_time": "2018-10-09T17:11:37", "url": "https://files.pythonhosted.org/packages/ef/3d/aa5121958277624b5be1959972ff0d1a601f2fb7e89ab027d10e05ac3cb5/django-pgcrypto-fields-2.3.0.tar.gz" } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "476988ebb719bbb4ab22d9cdb82bb6f5", "sha256": "e3791198a9420010f1aea331d92d57f0384810c75397d423ee62919b38d3f059" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "476988ebb719bbb4ab22d9cdb82bb6f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9690, "upload_time": "2018-10-09T17:20:07", "url": "https://files.pythonhosted.org/packages/e2/f3/38d7e2a19e102bd793bee6ca8bf25607edf94d0c770a29df0213d4558861/django_pgcrypto_fields-2.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df03add5ac7c6d5c52a334284ae98d87", "sha256": "2d8f9e8189b9a178ffc350e6b11b8cd28645d05d8e25df7b1ef8c845e9808b97" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.3.1.tar.gz", "has_sig": false, "md5_digest": "df03add5ac7c6d5c52a334284ae98d87", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9516, "upload_time": "2018-10-09T17:20:08", "url": "https://files.pythonhosted.org/packages/1f/94/f55f5bab2bae64d2f0a7701de6b7ea4890f59acad36f4eef8c055070c856/django-pgcrypto-fields-2.3.1.tar.gz" } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "5d0d6cebf35c03169d57b83967851d56", "sha256": "90f6dfd042b81c74bf2f8230f7ceb24f74c1c8a9a6879fee90dac39266e568ec" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5d0d6cebf35c03169d57b83967851d56", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12071, "upload_time": "2018-10-15T16:48:41", "url": "https://files.pythonhosted.org/packages/84/c2/fbcced071c1ccc17b365ae4b9e31898e648fc4fe4168c8a9411cd25f217d/django_pgcrypto_fields-2.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23f670f606b6d039a76c477242c1a3f6", "sha256": "3b971b1f821d6cc60393f3c0a18423718b9a9ea26782bd4aeddeedb2719ee838" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.4.0.tar.gz", "has_sig": false, "md5_digest": "23f670f606b6d039a76c477242c1a3f6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 14762, "upload_time": "2018-10-15T16:48:43", "url": "https://files.pythonhosted.org/packages/f1/f2/30c2d8c76585ea35f24f0aa2853c0842d96070a4e96e187d8dafe286e0f9/django-pgcrypto-fields-2.4.0.tar.gz" } ], "2.5.0": [ { "comment_text": "", "digests": { "md5": "6a2cd066af38b00e7bed9d7eca5bc031", "sha256": "906a7a317ed9ede8ad04312c131c813ff0de895e648c8133d3550811915c43d1" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6a2cd066af38b00e7bed9d7eca5bc031", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12606, "upload_time": "2018-10-23T19:52:27", "url": "https://files.pythonhosted.org/packages/96/67/454f7efb913fd5014db8fd1c7d032dd7547cf75763a4663efce45531912f/django_pgcrypto_fields-2.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a5a26a96e9eab8d566c940100e2e7675", "sha256": "3260c63151ea1de592f78dc5aa670c04792f509b05092bae6dbfd53b14d24916" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.5.0.tar.gz", "has_sig": false, "md5_digest": "a5a26a96e9eab8d566c940100e2e7675", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15640, "upload_time": "2018-10-23T19:52:34", "url": "https://files.pythonhosted.org/packages/42/74/2210118eeb433e590ae80422d5faba3dafd54b7a9fe2b083b49078a8ffd2/django-pgcrypto-fields-2.5.0.tar.gz" } ], "2.5.1": [ { "comment_text": "", "digests": { "md5": "70d1b511fec83d9a350a504f41333155", "sha256": "c9f86fa3935aaa99c53539516262ac430376e3241dfc11950fc53bf435d1d27d" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "70d1b511fec83d9a350a504f41333155", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12517, "upload_time": "2018-10-25T16:56:09", "url": "https://files.pythonhosted.org/packages/1c/19/e47973982ac6924b9ab2184f486a2b60aa31f72a7b25047b4e7456916d62/django_pgcrypto_fields-2.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6bf6bf37d32b427ca7e3d0cf648d756", "sha256": "a386a772728fe1554c3b599c69a7065ad28caae0ab973fb5d653c14f8460b8dd" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.5.1.tar.gz", "has_sig": false, "md5_digest": "a6bf6bf37d32b427ca7e3d0cf648d756", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15547, "upload_time": "2018-10-25T16:56:11", "url": "https://files.pythonhosted.org/packages/c8/61/7b2907368d036f07ab0e118a102adde9e9181866bf45d8d3d8c50c37a8cd/django-pgcrypto-fields-2.5.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "70d1b511fec83d9a350a504f41333155", "sha256": "c9f86fa3935aaa99c53539516262ac430376e3241dfc11950fc53bf435d1d27d" }, "downloads": -1, "filename": "django_pgcrypto_fields-2.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "70d1b511fec83d9a350a504f41333155", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12517, "upload_time": "2018-10-25T16:56:09", "url": "https://files.pythonhosted.org/packages/1c/19/e47973982ac6924b9ab2184f486a2b60aa31f72a7b25047b4e7456916d62/django_pgcrypto_fields-2.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6bf6bf37d32b427ca7e3d0cf648d756", "sha256": "a386a772728fe1554c3b599c69a7065ad28caae0ab973fb5d653c14f8460b8dd" }, "downloads": -1, "filename": "django-pgcrypto-fields-2.5.1.tar.gz", "has_sig": false, "md5_digest": "a6bf6bf37d32b427ca7e3d0cf648d756", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15547, "upload_time": "2018-10-25T16:56:11", "url": "https://files.pythonhosted.org/packages/c8/61/7b2907368d036f07ab0e118a102adde9e9181866bf45d8d3d8c50c37a8cd/django-pgcrypto-fields-2.5.1.tar.gz" } ] }