{ "info": { "author": "Tyrel M. McQueen", "author_email": "tmcqueen-pypi@demoivre.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# kafkacrypto\nMessage Layer Encryption for Kafka\n\nAvailable on PyPI at https://pypi.org/project/kafkacrypto/ \nAvailable on Github at https://github.com/tmcqueen-materials/kafkacrypto \nJava implementation available on Github at https://github.com/tmcqueen-materials/kafkacrypto-java\n\n## Quick Start\nOn every kafka consumer or producer node, do:\n 1. `pip3 install kafkacrypto`\n 1. [Download](https://github.com/tmcqueen-materials/kafkacrypto/raw/master/tools/simple-provision.py) `simple-provision.py`\n 1. Run: `./simple-provision.py` and follow the instructions. Use the same root of trust password on all nodes.\n\nIn your producer/consumer code:\n```python\nfrom kafkacrypto import KafkaCrypto, KafkaConsumer, KafkaProducer\nnodeId = 'my-node-ID'\n\n# setup separate consumer/producers for the crypto key passing messages. DO NOT use these for\n# other messages.\nkcc = KafkaConsumer(...your server params in kafka-python form...)\nkcp = KafkaProducer(...your server params in kafka-python form...)\nkc = KafkaCrypto(nodeId,kcp,kcc)\n\n... Your code here ...\n\n# Here is how you configure your producer/consumer objects to use the crypto (de)serializers\nproducer = KafkaProducer(...,key_serializer=kc.getKeySerializer(), value_serializer=kc.getValueSerializer())\nconsumer = KafkaConsumer(...,key_deserializer=kc.getKeyDeserializer(), value_deserializer=kc.getValueDeserializer())\n\n... Your code here ...\n```\n\nAnd that's it! Your producers and consumers should function as normal, but all traffic within Kafka is encrypted. \n\nIf automatic topic creation is disabled, then one more action is needed. For each \"root topic\" you must create the requisite key-passing topics. By default these are `root.reqs` and `root.keys`, where root is replaced with the root topic name. It is safe to enable regular log compaction on these topics.\n\n## Root Topics\nkafkacrypto uses unique keys on a per-\"root topic\" basis. A root topic is defined as the topic name before the first user-defined separator. The default separator is \"`.`\". Thus all of these: \n`example001` \n`example001.foo.bar.baz` \n`example001.foo.bar` \n`example001.foo` \nhave the same root topic of `example001`, whereas `example001_baz.bar.foo` has the root topic `example001_baz`. Since kafka does not recommend using both \"`.`\" and \"`_`\" in topic names, if you wish every topic to use a unique set of keys, use \"`_`\" (and not \"`.`\") in names, or change the defined topic separator.\n\n## Undecryptable Messages\nkafkacrypto is designed so that messages being sent can **always** be encrypted once a KafkaCrypto object is successfully created. However, it is possible for a consumer to receive a message for which it does not have a decryption key, i.e. an undecryptable message. This is most often because the asynchronous key exchange process has not completed before the message is received, or because the consumer is not authorized to receive on that topic. \n\nTo handle this scenario, all deserialized messages are returned as [KafkaCryptoMessage](https://github.com/tmcqueen-materials/kafkacrypto/blob/master/kafkacrypto/message.py) objects. The `.isCleartext()` method can be used to determine whether the message component was successfully decrypted or not:\n```python\n# consumer is setup with KafkaCrypto deserializers as shown above\n# 'key' refers to the key of key->value pairs from Kafka, not a cryptographic key\nfor msg in consumer:\n if (msg.key.isCleartext()):\n # message key was decrypted. bytes(msg.key) is the decrypted message key\n else:\n # message key was not decrypted. bytes(msg.key) is the raw (undecrypted) message key\n # msg.key can be discarded, or saved and decryption attempted at a later time\n # by doing KafkaCrypto.getKeyDeserializer().deserialize(msg.topic, msg.key)\n if (msg.value.isCleartext()):\n # message value was decrypted. bytes(msg.value) is the decrypted message value\n else:\n # message value was not decrypted. bytes(msg.value) is the raw (undecrypted) message value\n # msg.value can be discarded, or saved and decryption attempted at a later time\n # by doing KafkaCrypto.getValueDeserializer().deserialize(msg.topic, msg.value)\n```\nThe convenience method `.getMessage()` can be used instead to return the message as bytes if successfully decrypted, or to raise a `KafkaCryptoMessageError` if decryption failed.\n\n## Stacking (De)Serializers\nAlthough not recommended, it is possible to combine multiple (De)Serializers in a single chain to, e.g., encrypt/decrypt and JSON encode/decode a message. Such an example is here:\n```python\nclass CompoundDeSes(kafka.serializer.Serializer,kafka.serializer.Deserializer):\n def __init__(self, *args):\n self._ser = list(args)\n def serialize(self, topic, keyvalue):\n for ser in self._ser:\n if (isinstance(ser, (kafka.serializer.Serializer,)):\n keyvalue = ser.serialize(topic,keyvalue)\n else:\n keyvalue = ser(keyvalue)\n return keyvalue\n def deserialize(self, topic, keyvalue):\n for ser in self._ser:\n if (isinstance(ser, (kafka.serializer.Deserializer,)):\n keyvalue = ser.deserialize(topic,keyvalue)\n else:\n keyvalue = ser(keyvalue)\n return keyvalue\n\n...\n\n# Stacked (De)Serializers. Usually, you will encrypt last on serialization, and decrypt\n# first on deserialization. Do not forget that exceptions are likely as undecryptable\n# messages appear.\nproducer = KafkaProducer(...,key_serializer=CompoundDeSes(json.dumps,kc.getKeySerializer()), value_serializer=CompoundDeSes(json.dumps,kc.getValueSerializer()))\nconsumer = KafkaConsumer(...,key_deserializer=CompoundDeSes(kc.getKeyDeserializer(),json.loads), value_deserializer=CompoundDeSes(kc.getValueDeserializer(),json.loads))\n```\n\n## Troubleshooting\nIf something is not working, enable logging to get detailed information:\n```python\nimport logging\n\nlogging.basicConfig(level=logging.WARNING)\nlogging.getLogger(\"kafkacrypto\").setLevel(level=logging.INFO) # set to logging.DEBUG for more verbosity\n```\n\n## Universal Configuration File\nkafkacrypto separates the storage of cryptographic secrets and non-secret configuration information:\n 1. `my-node-ID.config`: Non-secret parameters, in Python ConfigParser format.\n 1. `my-node-ID.seed`: Next ratchet seed, when using default implementation of Ratchet. Key secret, should never be saved or transmitted plaintext.\n 1. `my-node-ID.crypto`: Identification private key, when using default implementation of Cryptokey. Key secret, should never be saved or transmitted plaintext.\n\nAlternative implementations of Ratchet and Cryptokey enable secrets to be managed by specialized hardware (e.g. HSMs).\n\nIt is also possible to use `my-node-ID.config` to manage all configuration directives, including those that control Kafka. A sample implementation, which reads the node ID from `node_id` in the `DEFAULT` section is:\n```python\n#!/usr/bin/python3\nfrom sys import argv\nfrom kafkacrypto import KafkaCrypto, KafkaCryptoStore, KafkaConsumer, KafkaProducer\n\n# Process configuration file\nif len(argv) != 2:\n exit('Invalid command line.')\nkcs = KafkaCryptoStore(argv[1])\n\n# Setup KafkaCrypto\nkcc = KafkaConsumer(**kcs.get_kafka_config('consumer',extra='crypto'))\nkcp = KafkaProducer(**kcs.get_kafka_config('producer',extra='crypto'))\nkc = KafkaCrypto(None,kcp,kcc,config=kcs)\n\n# read program specific values\nvalue1 = kcs.load_value('value1')\nvalue2 = kcs.load_value('value2')\n\n## End read configuration\n\n# Setup Kafka Consumer and Producer\nkafka_config = kcs.get_kafka_config('consumer')\nkafka_config['key_deserializer'] = kc.getKeyDeserializer()\nkafka_config['value_deserializer'] = kc.getValueDeserializer()\nconsumer = KafkaConsumer(**kafka_config)\nkafka_config = kcs.get_kafka_config('producer')\nkafka_config['key_serializer'] = kc.getKeySerializer()\nkafka_config['value_serializer'] = kc.getValueSerializer()\nproducer = KafkaProducer(**kafka_config)\n\n\n... your code here ...\n\n# Save new values\nkcs.store_value('value1', 'value-of-value1')\nkcs.store_value('value2', 'value-of-value2')\n```\n\n## Kafka Python Interfaces\nkafkacrypto has been extensively tested with kafka-python. It will use confluent_kafka if available via a thin compatibility wrapper. Other wrappers can be added (submit a pull request!)\n\n## Advanced Usage\nkafkacrypto has been designed to seamlessly support a range of key exchange authorization and delegation mechanisms beyond the simple single-password root of trust. An example of a simple \"controller-based\" intermediary is included in the main package. The requisite controller can be setup as:\n```python\n#!/usr/bin/python3\nfrom kafkacrypto import KafkaCryptoController, KafkaConsumer, KafkaProducer\n\nnodeId = 'controller-name'\n\n# use your normal server parameters in place of the ...\nkcc = KafkaConsumer(..., enable_auto_commit=False, group_id=nodeId)\nkcp = KafkaProducer(...)\ncontroller = KafkaCryptoController(nodeId,kcp,kcc)\ncontroller._mgmt_thread.join()\n```\nThe configuration parameters inside the provision script should be adjusted so that the \"subscribe\" and \"key request\" suffixes are distinct (see comment in `simple-provision.py`, or use `provision.py` instead). If automatic topic creation is disabled, then the topic `root.subs` must also be created. It is safe to enable regular log compaction on this topic.\n\nAnother common desire is to use very short chain lifetimes. Chains can be refreshed automatically and pushed to users. The requisite ChainServer can be setup as:\n```python\n#!/usr/bin/python3\nfrom kafkacrypto import KafkaCryptoChainServer\n\nnodeId = 'chain-server-name'\n\nchainserver = KafkaCryptoChainServer(nodeId)\nchainserver._mgmt_thread.join()\n```\nThe sample provision script can appropriately setup keys for the ChainServer as well.\n\n## Design, Specification, and Security Analysis\nkafkacrypto is already in limited production use, and should be stable enough for broad adoption. However, a detailed security analysis of the kafkacrypto framework is still in progress, and use of this code should be considered experimental.\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/tmcqueen-materials/kafkacrypto", "keywords": "kafka kafka-crypto kafka-security security crypo", "license": "GNU GPLv2", "maintainer": "", "maintainer_email": "", "name": "kafkacrypto", "package_url": "https://pypi.org/project/kafkacrypto/", "platform": null, "project_url": "https://pypi.org/project/kafkacrypto/", "project_urls": { "Homepage": "https://github.com/tmcqueen-materials/kafkacrypto" }, "release_url": "https://pypi.org/project/kafkacrypto/0.9.9.12/", "requires_dist": [ "pysodium (>=0.7.5)", "msgpack (>=1.0.0)", "kafka-python (>=1.4.4)", "certifi" ], "requires_python": ">=3.3", "summary": "Message layer security/crypto for Kafka", "version": "0.9.9.12", "yanked": false, "yanked_reason": null }, "last_serial": 13430560, "releases": { "0.9.0": [ { "comment_text": "", "digests": { "md5": "a774a316a6724902b263d15b469f2b8e", "sha256": "668ad42b2bcb53ca065047b969fba28f60c61b6b4bf571deeb69e1a618b99bba" }, "downloads": -1, "filename": "kafkacrypto-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a774a316a6724902b263d15b469f2b8e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23700, "upload_time": "2019-05-31T03:16:59", "upload_time_iso_8601": "2019-05-31T03:16:59.492160Z", "url": "https://files.pythonhosted.org/packages/ea/7b/358f6979968c57da05cb49c6e2ac8b8fd49b893cf1e3465d25635711f2db/kafkacrypto-0.9.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "df2ff803e138ab77dea79ab84e5cb6f0", "sha256": "935f11941fdd25b680dd400bb9de5418db3e1f63da47b298ff74339e3de60685" }, "downloads": -1, "filename": "kafkacrypto-0.9.0.tar.gz", "has_sig": false, "md5_digest": "df2ff803e138ab77dea79ab84e5cb6f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11298, "upload_time": "2019-05-31T03:17:01", "upload_time_iso_8601": "2019-05-31T03:17:01.307490Z", "url": "https://files.pythonhosted.org/packages/e7/c6/0c5e309f9b357060bc5fccfa707becc33217764e98180673d2f0103b2c2c/kafkacrypto-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "76d854287c00a368581cfd8345d837be", "sha256": "72f4be83746c52d373748bb632b595d07716d1511d1e6cfef61eef4ac4e692a9" }, "downloads": -1, "filename": "kafkacrypto-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "76d854287c00a368581cfd8345d837be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26315, "upload_time": "2019-06-01T04:20:32", "upload_time_iso_8601": "2019-06-01T04:20:32.049199Z", "url": "https://files.pythonhosted.org/packages/b5/bd/d093b321915934f0fd038cd3efd9117ed127bf38e7b9660960f9cdc6aded/kafkacrypto-0.9.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7298f960df4b0afb228561177716dbdf", "sha256": "b682ed5d2b80452450ac6c1b2c4d92364931bfcdf01da5436a6f6fc2ee5b2d7d" }, "downloads": -1, "filename": "kafkacrypto-0.9.1.tar.gz", "has_sig": false, "md5_digest": "7298f960df4b0afb228561177716dbdf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13449, "upload_time": "2019-06-01T04:20:33", "upload_time_iso_8601": "2019-06-01T04:20:33.436105Z", "url": "https://files.pythonhosted.org/packages/0e/df/0a7505f4d83b2bf0e3f0bf5e6504162e1d2fc64f8e4fa9b020081eaa4b7c/kafkacrypto-0.9.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.1rc1": [ { "comment_text": "", "digests": { "md5": "606d3d6f95ef6826637cbbda9fd19bf9", "sha256": "d32931696794d85ac17532ed97127b7161c85a6d1b20e26f4be65de82ce2dc34" }, "downloads": -1, "filename": "kafkacrypto-0.9.1rc1-py3-none-any.whl", "has_sig": false, "md5_digest": "606d3d6f95ef6826637cbbda9fd19bf9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26347, "upload_time": "2019-06-01T04:16:42", "upload_time_iso_8601": "2019-06-01T04:16:42.381755Z", "url": "https://files.pythonhosted.org/packages/9e/c6/30c98db519d1065dc57bbdf0935ed77bd3a379f671f770f42e12f119a9d8/kafkacrypto-0.9.1rc1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7f09b0b75ddd68930247b9c01889cb65", "sha256": "1b3b4a6261b15e095fcb0368f0676f01a6a1ab71616b9128e9a8efdf5b10a291" }, "downloads": -1, "filename": "kafkacrypto-0.9.1rc1.tar.gz", "has_sig": false, "md5_digest": "7f09b0b75ddd68930247b9c01889cb65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13502, "upload_time": "2019-06-01T04:16:43", "upload_time_iso_8601": "2019-06-01T04:16:43.471566Z", "url": "https://files.pythonhosted.org/packages/c8/ee/3eb9959e2c95a4947936bb278dfa335273cb1a37eae74c50f28d72062389/kafkacrypto-0.9.1rc1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "0e97e46c910fa6472b6af60d3fd3ab55", "sha256": "9f177067399f970a33597122cb6b265111b3fa3618dfea6e987b3df86d8952f7" }, "downloads": -1, "filename": "kafkacrypto-0.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0e97e46c910fa6472b6af60d3fd3ab55", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27548, "upload_time": "2019-06-05T03:05:06", "upload_time_iso_8601": "2019-06-05T03:05:06.813054Z", "url": "https://files.pythonhosted.org/packages/02/a3/2b63e824c3b0344f9f8e5716bd2fcd14d052badf726716804aedb568e32d/kafkacrypto-0.9.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9bdc58de3d9100c881ea00ca8e3a6006", "sha256": "aa755075b8426541447df483d16396bcadb42691bdf6732b9c6a29a462f0b6c7" }, "downloads": -1, "filename": "kafkacrypto-0.9.2.tar.gz", "has_sig": false, "md5_digest": "9bdc58de3d9100c881ea00ca8e3a6006", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17631, "upload_time": "2019-06-05T03:05:08", "upload_time_iso_8601": "2019-06-05T03:05:08.377262Z", "url": "https://files.pythonhosted.org/packages/45/22/8133a276b65aa80a3a42b01598378f6e619162d6a24adadb96c8cde616b9/kafkacrypto-0.9.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.2a1": [ { "comment_text": "", "digests": { "md5": "8d8a43b76d3d708bfbb7d1659a615680", "sha256": "ef147f76d4ece026af2aff10cd76e760bf480b4a79ecab2a2a12c0d61813bf0e" }, "downloads": -1, "filename": "kafkacrypto-0.9.2a1-py3-none-any.whl", "has_sig": false, "md5_digest": "8d8a43b76d3d708bfbb7d1659a615680", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29501, "upload_time": "2019-06-05T18:43:44", "upload_time_iso_8601": "2019-06-05T18:43:44.382500Z", "url": "https://files.pythonhosted.org/packages/00/e6/9857ceda75fbd1342b3f3de294fe6e1560d65de67996235e7140e38012e4/kafkacrypto-0.9.2a1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7dbc9d716ad6bf7455542fd90c539be2", "sha256": "79fc5380059b2f7ee4ca77f341216a22786862126cbba8587aeb154f3725f1b6" }, "downloads": -1, "filename": "kafkacrypto-0.9.2a1.tar.gz", "has_sig": false, "md5_digest": "7dbc9d716ad6bf7455542fd90c539be2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16421, "upload_time": "2019-06-05T18:43:45", "upload_time_iso_8601": "2019-06-05T18:43:45.909962Z", "url": "https://files.pythonhosted.org/packages/a8/e5/d11ad8415a307667410eb95443ff7f4a57b011b92c592a6f306cf8e58361/kafkacrypto-0.9.2a1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "2104dee1bb1203c084e2b9d12aa16ecc", "sha256": "ef50dd8c7da3e87d0a2c50251c1f0a2ae4d7190a714ff4c43b4e871b625d9a19" }, "downloads": -1, "filename": "kafkacrypto-0.9.3-py3-none-any.whl", "has_sig": false, "md5_digest": "2104dee1bb1203c084e2b9d12aa16ecc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31430, "upload_time": "2019-06-07T12:51:44", "upload_time_iso_8601": "2019-06-07T12:51:44.853486Z", "url": "https://files.pythonhosted.org/packages/e8/39/7caf02ece1b42b01175297f8397e60947408535d51f97465491c75acedf8/kafkacrypto-0.9.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "30d9e80e67bdfe9c3644b35a4ea7a326", "sha256": "72e11008d1927c3432ddc0ba1d182748959249f02710a867bded3030c5d4a2b8" }, "downloads": -1, "filename": "kafkacrypto-0.9.3.tar.gz", "has_sig": false, "md5_digest": "30d9e80e67bdfe9c3644b35a4ea7a326", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21259, "upload_time": "2019-06-07T12:51:46", "upload_time_iso_8601": "2019-06-07T12:51:46.144482Z", "url": "https://files.pythonhosted.org/packages/b0/b0/1fcda10df10a51239239ce53bac6313453087b2f24c22a2cd29161ad6189/kafkacrypto-0.9.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.3a1": [ { "comment_text": "", "digests": { "md5": "0cb59f1dfbea32ea098d01378fd67f25", "sha256": "529141c49adaae0fbfe645b486a92acbd9a1e856e1e92c96745b51ca2910950e" }, "downloads": -1, "filename": "kafkacrypto-0.9.3a1-py3-none-any.whl", "has_sig": false, "md5_digest": "0cb59f1dfbea32ea098d01378fd67f25", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29627, "upload_time": "2019-06-05T20:53:25", "upload_time_iso_8601": "2019-06-05T20:53:25.848685Z", "url": "https://files.pythonhosted.org/packages/10/41/01759c387d6bc7cb8ec5eae946d6bc872bc128cf507d5b1ada907874bb51/kafkacrypto-0.9.3a1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "22fd5909307de45baba86b2b83d6e772", "sha256": "e1fe797f4034218ccb02f70ca77685c6a7758714d3e208af046a6d0f2b09580e" }, "downloads": -1, "filename": "kafkacrypto-0.9.3a1.tar.gz", "has_sig": false, "md5_digest": "22fd5909307de45baba86b2b83d6e772", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18534, "upload_time": "2019-06-05T20:53:27", "upload_time_iso_8601": "2019-06-05T20:53:27.537686Z", "url": "https://files.pythonhosted.org/packages/7a/8a/7c70f02b6e9896ce88c5df41a4a5e095bfa8f4be50a1fa5db567b15f99b4/kafkacrypto-0.9.3a1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "5ff68f36a3eb6419ea0d2c3376b095f5", "sha256": "37a319a53b4d016a4135b68177abb6dc62aaaf3ad29e6fc60b95d0e541c575a4" }, "downloads": -1, "filename": "kafkacrypto-0.9.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5ff68f36a3eb6419ea0d2c3376b095f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31558, "upload_time": "2019-06-26T04:12:23", "upload_time_iso_8601": "2019-06-26T04:12:23.853589Z", "url": "https://files.pythonhosted.org/packages/b2/a1/0b6c522edbc1092ba8b4154daf60a0f0c790dd0559fec802eebabb36f659/kafkacrypto-0.9.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d5fb2d5cf74171838f6a963568372e74", "sha256": "2b61de931f59e1aacd0e86a1ad1947a3e23ad8257d403732bb752bfc4a739179" }, "downloads": -1, "filename": "kafkacrypto-0.9.4.tar.gz", "has_sig": false, "md5_digest": "d5fb2d5cf74171838f6a963568372e74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22096, "upload_time": "2019-06-26T04:12:25", "upload_time_iso_8601": "2019-06-26T04:12:25.456676Z", "url": "https://files.pythonhosted.org/packages/af/31/cac23f25248629f85ff6dde1341ccecd045b2fb7efc7969a3f3cd5e0ba52/kafkacrypto-0.9.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "145d06e5d5403d5f70dab71afdea5e51", "sha256": "0a177a5586fbf0f251e131e36c060e664e4080d96e0e74aa22d5aca69e7fccb2" }, "downloads": -1, "filename": "kafkacrypto-0.9.5-py3-none-any.whl", "has_sig": false, "md5_digest": "145d06e5d5403d5f70dab71afdea5e51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32326, "upload_time": "2019-08-16T15:00:54", "upload_time_iso_8601": "2019-08-16T15:00:54.729165Z", "url": "https://files.pythonhosted.org/packages/b4/cd/6682209923d1111a56b79222074c617ac6a004db0e5799097d0bc9ec8c66/kafkacrypto-0.9.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fedd3a2b7ef89204cb5425e8125f9a8f", "sha256": "0c279488c48d5463bbca36f33538f02a355b28ec57c0881385d48c6987ea6803" }, "downloads": -1, "filename": "kafkacrypto-0.9.5.tar.gz", "has_sig": false, "md5_digest": "fedd3a2b7ef89204cb5425e8125f9a8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21871, "upload_time": "2019-08-16T15:00:55", "upload_time_iso_8601": "2019-08-16T15:00:55.956228Z", "url": "https://files.pythonhosted.org/packages/38/50/c62d6c09375da192bf1b568ce9af3746e67967b8fae99befd751b327657b/kafkacrypto-0.9.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "faac3202fb26f45560dcaee5bf87a64f", "sha256": "196e7fcd961cb9184743b9d43caf9c66f547a41a529a8b1c0e01cc78c6d36d2d" }, "downloads": -1, "filename": "kafkacrypto-0.9.6-py3-none-any.whl", "has_sig": false, "md5_digest": "faac3202fb26f45560dcaee5bf87a64f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36145, "upload_time": "2019-09-10T22:00:07", "upload_time_iso_8601": "2019-09-10T22:00:07.480653Z", "url": "https://files.pythonhosted.org/packages/cf/9c/e7d4f696179bda340497b8bbd27529dd18ccd1c471830561519cd5626332/kafkacrypto-0.9.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d2fbd12a8979dda17a20d55a3900551a", "sha256": "dfc1f6bbb90dde48a0938e7cdb66a3dd823d05cf93683fa7481913bb090ede2f" }, "downloads": -1, "filename": "kafkacrypto-0.9.6.tar.gz", "has_sig": false, "md5_digest": "d2fbd12a8979dda17a20d55a3900551a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21920, "upload_time": "2019-09-10T22:00:09", "upload_time_iso_8601": "2019-09-10T22:00:09.203461Z", "url": "https://files.pythonhosted.org/packages/6b/d8/3fff74100bfae6b21498720c7279d33bb64d2a4177f5b2dc7f858dc9d235/kafkacrypto-0.9.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "4342c1e244f487e815116896192fecff", "sha256": "faf1da5edc750ee70b34100e79a85de7e01d0b96346923c0e82bb9af84851feb" }, "downloads": -1, "filename": "kafkacrypto-0.9.7-py3-none-any.whl", "has_sig": false, "md5_digest": "4342c1e244f487e815116896192fecff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39261, "upload_time": "2019-09-29T00:39:10", "upload_time_iso_8601": "2019-09-29T00:39:10.275534Z", "url": "https://files.pythonhosted.org/packages/ea/a5/10d17843da2d5630abfb8d67215feef3f3723d8dbf65402402e854811ef4/kafkacrypto-0.9.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "71561b87584baae48d93c43ea4601d0b", "sha256": "eaef3b4bd2026c33f93315e1f2bbfabe146580d817d8848b68c71d3541ece5d2" }, "downloads": -1, "filename": "kafkacrypto-0.9.7.tar.gz", "has_sig": false, "md5_digest": "71561b87584baae48d93c43ea4601d0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28364, "upload_time": "2019-09-29T00:39:11", "upload_time_iso_8601": "2019-09-29T00:39:11.987044Z", "url": "https://files.pythonhosted.org/packages/25/8f/061334979d5957d97bf1a7c86876f7e8ee025df47a9d912a2a71d86abc17/kafkacrypto-0.9.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "45fcab748e88557b2387a603d1c73d5c", "sha256": "babc1c0ee2fac0a3c137601e238ab2097bc3f3ebb8d002378ee60965a094687a" }, "downloads": -1, "filename": "kafkacrypto-0.9.8-py3-none-any.whl", "has_sig": false, "md5_digest": "45fcab748e88557b2387a603d1c73d5c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41299, "upload_time": "2019-10-14T20:01:00", "upload_time_iso_8601": "2019-10-14T20:01:00.747689Z", "url": "https://files.pythonhosted.org/packages/73/7f/793fd3c6398e3c771fe2b5d565dba024692aef2d923ae013bfd72418828c/kafkacrypto-0.9.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1a7b9ad0809de1e548ba8085dd2a6984", "sha256": "8388430c3901630de8470b825a6b3bbe4b9b6bf78abb087a75dbbc9ddf67e30b" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.tar.gz", "has_sig": false, "md5_digest": "1a7b9ad0809de1e548ba8085dd2a6984", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30307, "upload_time": "2019-10-14T20:01:02", "upload_time_iso_8601": "2019-10-14T20:01:02.757265Z", "url": "https://files.pythonhosted.org/packages/0d/b6/e95f848d1251e26bc55aee8d46617e70a9fee384633d18a2e95319ebeef3/kafkacrypto-0.9.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8.1": [ { "comment_text": "", "digests": { "md5": "f4d42420a51456218476004cea0dacb3", "sha256": "3762feb3a27197bc7b4ceed1c46ea4dba3da55c86fc7331b782030e1c19b120d" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f4d42420a51456218476004cea0dacb3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41323, "upload_time": "2019-10-14T20:41:51", "upload_time_iso_8601": "2019-10-14T20:41:51.854797Z", "url": "https://files.pythonhosted.org/packages/21/33/6bbea53568a7d70cf4c217ebd03d69d6db66a7026767fe00196f6c1b9afe/kafkacrypto-0.9.8.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d3cdd0b5ec73a002d78d3b6c2f556712", "sha256": "a2d0b30ec90bb3a7dfe3d4d9a2d2976a88dbeb43272f686ffcc49bd3ab7ce3d3" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.1.tar.gz", "has_sig": false, "md5_digest": "d3cdd0b5ec73a002d78d3b6c2f556712", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26571, "upload_time": "2019-10-14T20:42:01", "upload_time_iso_8601": "2019-10-14T20:42:01.574776Z", "url": "https://files.pythonhosted.org/packages/ea/70/45c3da44129881d469d01fdd699f614a9fec632d4a0d76f5503963ca4a74/kafkacrypto-0.9.8.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8.2": [ { "comment_text": "", "digests": { "md5": "3905b0ae35f9616f7b1f81fb1831c867", "sha256": "6d9cbecad244bc160abee8361ec9febfbfa38cc996ac4911a92a6b967af09b2d" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3905b0ae35f9616f7b1f81fb1831c867", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41848, "upload_time": "2019-10-16T15:44:13", "upload_time_iso_8601": "2019-10-16T15:44:13.030808Z", "url": "https://files.pythonhosted.org/packages/d7/55/deddf50cabd88d90427a4979f3e69643fd1b1c1b3417c8a9d4ee2c73eb1e/kafkacrypto-0.9.8.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e0e94b1dc08ca9a060668d8a048e0663", "sha256": "5b277a4ae39d5188ab987aa661853dbdfbe526e5b15af9ea44cde622c1e001b1" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.2.tar.gz", "has_sig": false, "md5_digest": "e0e94b1dc08ca9a060668d8a048e0663", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31457, "upload_time": "2019-10-16T15:44:30", "upload_time_iso_8601": "2019-10-16T15:44:30.969792Z", "url": "https://files.pythonhosted.org/packages/a3/b7/35aeac22232f9010091dfa029662396acad9ad39ae047ec7b7fac43c948d/kafkacrypto-0.9.8.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8.3": [ { "comment_text": "", "digests": { "md5": "c1688fd1c5a30583525391ff0bcc6c1f", "sha256": "1c16ff211b62f66fd8f0f7bad2db3ae56eae9d34347ac341b92870cb6cd9f2a6" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c1688fd1c5a30583525391ff0bcc6c1f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41870, "upload_time": "2019-10-16T18:04:59", "upload_time_iso_8601": "2019-10-16T18:04:59.916748Z", "url": "https://files.pythonhosted.org/packages/b1/0a/f52f7978423018a1f4702afdd97c5c5b8b313c2e70c49c1bc86d1fa22a4b/kafkacrypto-0.9.8.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5cebfbf5fbf6737df8bf25151fdacee5", "sha256": "b984d501f7f81a9bffe37f336d528e83c82665f8a5ed6139e27655d8114b44df" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.3.tar.gz", "has_sig": false, "md5_digest": "5cebfbf5fbf6737df8bf25151fdacee5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30459, "upload_time": "2019-10-16T18:05:01", "upload_time_iso_8601": "2019-10-16T18:05:01.523120Z", "url": "https://files.pythonhosted.org/packages/a6/a8/99192b5012e31b656d1a1bdcc89eb254399a71315abea05e54c4c390eb93/kafkacrypto-0.9.8.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8.4": [ { "comment_text": "", "digests": { "md5": "1bfaf42b73c1501191acf1461b049fd0", "sha256": "162bda174fe58ab6ba1e1e11ff95485706165d2fa12c1c917cdb493965302050" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1bfaf42b73c1501191acf1461b049fd0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42116, "upload_time": "2019-10-19T02:49:28", "upload_time_iso_8601": "2019-10-19T02:49:28.250803Z", "url": "https://files.pythonhosted.org/packages/80/53/d5606cf499a9176bd4bdcc8679fee95a6debccee5bd504eba24ea1739fac/kafkacrypto-0.9.8.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ee2952d69abf5c26ae78c2ba703d1669", "sha256": "32db29c0bfa654b9258214515625bcbd26907b9e666f5f182ed7856175e43998" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.4.tar.gz", "has_sig": false, "md5_digest": "ee2952d69abf5c26ae78c2ba703d1669", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27596, "upload_time": "2019-10-19T02:49:30", "upload_time_iso_8601": "2019-10-19T02:49:30.202240Z", "url": "https://files.pythonhosted.org/packages/86/4f/cc365d5603dce15fbb04673adf5ed7aa40e67c3c7da7314fc8118160a589/kafkacrypto-0.9.8.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8.5": [ { "comment_text": "", "digests": { "md5": "ddf6095fb997d746e8108626ebdce3d2", "sha256": "62c0f86fcba7e5536595801feec54d59cf4502ea22a949ec6840d4956209926d" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.5-py3-none-any.whl", "has_sig": false, "md5_digest": "ddf6095fb997d746e8108626ebdce3d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42178, "upload_time": "2019-10-19T15:49:25", "upload_time_iso_8601": "2019-10-19T15:49:25.900117Z", "url": "https://files.pythonhosted.org/packages/b5/5d/ebfd47f94fa8c80e0fc9c08d6bbd68573fccf7deb1560f06e109a0f599b3/kafkacrypto-0.9.8.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "59068460078504ac12616acd77b6256f", "sha256": "b663c1ad819f5d07feb11ac0692a175bf34b252ab1b19f52b6d17e1f99a209ac" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.5.tar.gz", "has_sig": false, "md5_digest": "59068460078504ac12616acd77b6256f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27174, "upload_time": "2019-10-19T15:49:28", "upload_time_iso_8601": "2019-10-19T15:49:28.017812Z", "url": "https://files.pythonhosted.org/packages/1c/43/86a48acaa2a1ada6710a3ffa4188889be9aa8320b76046c50ec510b95fce/kafkacrypto-0.9.8.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8.6": [ { "comment_text": "", "digests": { "md5": "f6c817225c1e6168f54ccb5a3630d19d", "sha256": "ff86bd0972404914e1fea8902267536ed18598ffc73295c1f5f7ff9191849f9d" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.6-py3-none-any.whl", "has_sig": false, "md5_digest": "f6c817225c1e6168f54ccb5a3630d19d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42179, "upload_time": "2019-10-19T15:55:13", "upload_time_iso_8601": "2019-10-19T15:55:13.886778Z", "url": "https://files.pythonhosted.org/packages/db/35/83f622baa034c4f27395b5c36596736c316da42e3360926358f769af8418/kafkacrypto-0.9.8.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3dd28983c0a71b9a7c6746b8de245a62", "sha256": "32e926111249561bd564841b8c9776a7a51a69ebb19b7ff6dd3de68d4eba56fa" }, "downloads": -1, "filename": "kafkacrypto-0.9.8.6.tar.gz", "has_sig": false, "md5_digest": "3dd28983c0a71b9a7c6746b8de245a62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31352, "upload_time": "2019-10-19T15:55:15", "upload_time_iso_8601": "2019-10-19T15:55:15.932572Z", "url": "https://files.pythonhosted.org/packages/9c/8a/5c85c681e4f2817d01a3efb2731148af3056e7b0cb538332707f7d8db110/kafkacrypto-0.9.8.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8a0": [ { "comment_text": "", "digests": { "md5": "67072b5c719036087b22a5fdaac4edc0", "sha256": "8e95578c07d711690b0e3c78716b89f590dbeaf5686ffede6a6eec66f0d191f0" }, "downloads": -1, "filename": "kafkacrypto-0.9.8a0-py3-none-any.whl", "has_sig": false, "md5_digest": "67072b5c719036087b22a5fdaac4edc0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41324, "upload_time": "2019-10-14T20:34:22", "upload_time_iso_8601": "2019-10-14T20:34:22.646256Z", "url": "https://files.pythonhosted.org/packages/35/8c/1b6b414166b441f71bb2a20aef972ca16352d55af86394ac5887b6793999/kafkacrypto-0.9.8a0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3acac3ff86ce35518db0cfeb3f89ef28", "sha256": "6ad5ec4abbd4a5143340789f0559fc27eee3691db44791f1c76a14ea42fc8409" }, "downloads": -1, "filename": "kafkacrypto-0.9.8a0.tar.gz", "has_sig": false, "md5_digest": "3acac3ff86ce35518db0cfeb3f89ef28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27321, "upload_time": "2019-10-14T20:34:24", "upload_time_iso_8601": "2019-10-14T20:34:24.177674Z", "url": "https://files.pythonhosted.org/packages/b9/dc/68ad6fb69556cec390012330908aa529db242750a0394bb7fa2a7eb87727/kafkacrypto-0.9.8a0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "4cfa271a8a4a11d75b1446cbffa4a539", "sha256": "37a29a9b07d780c7727cdd1bd3fc40a8bb8f62d06bee88328d9498ac41831030" }, "downloads": -1, "filename": "kafkacrypto-0.9.9-py3-none-any.whl", "has_sig": false, "md5_digest": "4cfa271a8a4a11d75b1446cbffa4a539", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 46448, "upload_time": "2019-10-23T18:01:27", "upload_time_iso_8601": "2019-10-23T18:01:27.466486Z", "url": "https://files.pythonhosted.org/packages/b2/a5/7efc89794ceddb006b208daf021ebb8ff891c326f007c786e16a2acd6c6b/kafkacrypto-0.9.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6138aab573df406c94457f43ce92a01f", "sha256": "478a0f37338a2abb3d8c47e598fc4394ee3c17d0dc93a81878030444e1bf570f" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.tar.gz", "has_sig": false, "md5_digest": "6138aab573df406c94457f43ce92a01f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31536, "upload_time": "2019-10-23T18:01:29", "upload_time_iso_8601": "2019-10-23T18:01:29.139661Z", "url": "https://files.pythonhosted.org/packages/7e/37/4db5c9673cea0f747bda63b06a305758956eb0b88fc48318a25b133b2738/kafkacrypto-0.9.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.1": [ { "comment_text": "", "digests": { "md5": "310dbd29f6d3fee077780107b88d4fc5", "sha256": "0a4169361b57857fc8493c48527264139a57776f6abe6f2f017af3c5fc28d08d" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "310dbd29f6d3fee077780107b88d4fc5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 46710, "upload_time": "2019-10-31T01:51:15", "upload_time_iso_8601": "2019-10-31T01:51:15.185910Z", "url": "https://files.pythonhosted.org/packages/1f/06/3dfc90571b2f3f789809cb8bcc8895e4386ce5ca3e7b72873250869ac6a4/kafkacrypto-0.9.9.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8c1694c61668f9e85da838518c84abed", "sha256": "96203f6cbab636477a1a4002b4680b7a97332602b0b656710ac4f1fbd4d6b90a" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.1.tar.gz", "has_sig": false, "md5_digest": "8c1694c61668f9e85da838518c84abed", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 30709, "upload_time": "2019-10-31T01:51:16", "upload_time_iso_8601": "2019-10-31T01:51:16.803790Z", "url": "https://files.pythonhosted.org/packages/5f/c7/f2e543c1a8bf846b75f7c044fbb0af41519de7ba64f53ee029e025c0e577/kafkacrypto-0.9.9.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.10": [ { "comment_text": "", "digests": { "md5": "55a6e1b608f2a1effc3c6a88236e1f18", "sha256": "c7c899def296b9824e0156e1e73df51d58fc00300ff5a4d0d57c08451c9e095f" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.10-py3-none-any.whl", "has_sig": false, "md5_digest": "55a6e1b608f2a1effc3c6a88236e1f18", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 51381, "upload_time": "2021-12-28T19:18:03", "upload_time_iso_8601": "2021-12-28T19:18:03.523982Z", "url": "https://files.pythonhosted.org/packages/ee/85/0a22ea03ef86c77a046f7b710e423ca73bc7cdb672427ab4cad31ece0629/kafkacrypto-0.9.9.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b742c4f97e8091f177d5c5e292aa60af", "sha256": "0286f3572c3392e307b9f953fb71d0eb059910b69f10d4b67ad170b7d3813eeb" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.10.tar.gz", "has_sig": false, "md5_digest": "b742c4f97e8091f177d5c5e292aa60af", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 45073, "upload_time": "2021-12-28T19:18:06", "upload_time_iso_8601": "2021-12-28T19:18:06.340883Z", "url": "https://files.pythonhosted.org/packages/63/72/abf677bddff9e5e9a89d649bc5e982084b532e3eb5ad0c005d27b5ef8135/kafkacrypto-0.9.9.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.11": [ { "comment_text": "", "digests": { "md5": "938242b5f4583ce27f6711329c532faa", "sha256": "a93c5e3c7c5a08d48e075212b9ce0842731c0761fa67af15bfeb033f33dea807" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.11-py3-none-any.whl", "has_sig": false, "md5_digest": "938242b5f4583ce27f6711329c532faa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 52647, "upload_time": "2022-02-15T04:08:52", "upload_time_iso_8601": "2022-02-15T04:08:52.890055Z", "url": "https://files.pythonhosted.org/packages/23/23/ffe58911b567a6a43d946dda4a4a83d4e79e3962336a55c0c5aa2183065b/kafkacrypto-0.9.9.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "125fb3eaa942f83b26fa768375d1ec0e", "sha256": "a99d1a3c4240aaf4ab929c77466537d0b94734c9723823221fd307020dc8f5cd" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.11.tar.gz", "has_sig": false, "md5_digest": "125fb3eaa942f83b26fa768375d1ec0e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 46266, "upload_time": "2022-02-15T04:08:54", "upload_time_iso_8601": "2022-02-15T04:08:54.391282Z", "url": "https://files.pythonhosted.org/packages/a4/e0/59201aa020d430a150b7a10d4ff49a5a9459c19b1bb951a9715570dc58db/kafkacrypto-0.9.9.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.11a0": [ { "comment_text": "", "digests": { "md5": "bbd970830390d61a01b319d9aee55c1f", "sha256": "3a3e749b4b753582587c11629a09b24c4ef05d6254e5211782027d71e0b7f7fc" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.11a0-py3-none-any.whl", "has_sig": false, "md5_digest": "bbd970830390d61a01b319d9aee55c1f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 51966, "upload_time": "2021-12-30T01:53:23", "upload_time_iso_8601": "2021-12-30T01:53:23.338598Z", "url": "https://files.pythonhosted.org/packages/a1/4c/e6eb29c097c2d73fc4e4ae0c1b040f686e2d8962b9d5c4cdfa442a9959bc/kafkacrypto-0.9.9.11a0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "92754830d5e9c16e6cce11b1b2882e25", "sha256": "cd544eedc95ecb1b6f72ee8d2e7d9be6bfba606d1ff3766611cce0778fc7094b" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.11a0.tar.gz", "has_sig": false, "md5_digest": "92754830d5e9c16e6cce11b1b2882e25", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 42807, "upload_time": "2021-12-30T01:53:25", "upload_time_iso_8601": "2021-12-30T01:53:25.106577Z", "url": "https://files.pythonhosted.org/packages/98/0a/d3ef4df3e416c1526c72093be7a7c081fdb4f3f94a0a3b22c03e2b3b6e43/kafkacrypto-0.9.9.11a0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.11a1": [ { "comment_text": "", "digests": { "md5": "b71f192a69e472f30141146352f6b875", "sha256": "1ce3397a17565415905a70ba9e9e6c5e9eea79fc6dcf785a597181d3a360e206" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.11a1-py3-none-any.whl", "has_sig": false, "md5_digest": "b71f192a69e472f30141146352f6b875", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 52670, "upload_time": "2022-01-07T01:02:19", "upload_time_iso_8601": "2022-01-07T01:02:19.023912Z", "url": "https://files.pythonhosted.org/packages/14/c9/ec8e8ec8c12a745d54b28dca4c1bf0aa7f469498bc56420919c7330746b0/kafkacrypto-0.9.9.11a1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5c7809ef311014fe0aae3c9199a14366", "sha256": "81cb336e62b47890ea5bc70001b2a17cb5a9c8e9fddb216fdf03e920126289f3" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.11a1.tar.gz", "has_sig": false, "md5_digest": "5c7809ef311014fe0aae3c9199a14366", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 46045, "upload_time": "2022-01-07T01:02:21", "upload_time_iso_8601": "2022-01-07T01:02:21.165344Z", "url": "https://files.pythonhosted.org/packages/2a/8d/10f435451e66d9b0812cd67758b1230ff46f735f43037c6d27c56d4e08e0/kafkacrypto-0.9.9.11a1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.12": [ { "comment_text": "", "digests": { "md5": "8f877886ddcedd52c02b921b8626abc8", "sha256": "af7e18088a24d6307db85944ab920accefa42faf4114b7232a1374ec02d86a5f" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.12-py3-none-any.whl", "has_sig": false, "md5_digest": "8f877886ddcedd52c02b921b8626abc8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 55036, "upload_time": "2022-04-06T16:07:31", "upload_time_iso_8601": "2022-04-06T16:07:31.051811Z", "url": "https://files.pythonhosted.org/packages/f1/57/b9d5f6c689a0c51a877741f88257267036bf0ccf5aeecceb45295095e7af/kafkacrypto-0.9.9.12-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6af1329ab70402a6dba15dd47b5e2e6f", "sha256": "3fd333eb7f725d3759aad246dd2f9d301a136c819abb4582715609a6fd111d57" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.12.tar.gz", "has_sig": false, "md5_digest": "6af1329ab70402a6dba15dd47b5e2e6f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 48033, "upload_time": "2022-04-06T16:07:33", "upload_time_iso_8601": "2022-04-06T16:07:33.159211Z", "url": "https://files.pythonhosted.org/packages/13/25/f0a191c503889ab1b0c1964b581d9a62b79820a6352206e83ebdcd08590c/kafkacrypto-0.9.9.12.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.2": [ { "comment_text": "", "digests": { "md5": "6469a09074f8eae0f3361b36cd6d89db", "sha256": "12c710cd546bfb51f9742e150f4c136c743e18bb027111130d804a7a1354883c" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6469a09074f8eae0f3361b36cd6d89db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 48515, "upload_time": "2019-11-11T13:29:29", "upload_time_iso_8601": "2019-11-11T13:29:29.375036Z", "url": "https://files.pythonhosted.org/packages/e9/de/f03017e2daf337eda0dab9e5a954ab61ff80c678f42dc426c06482721909/kafkacrypto-0.9.9.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "639a583f428958509788ddef8d6e7ecc", "sha256": "0e7f21cafb8999977860a716caa82697af5806028c810b3981e64023c246402c" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.2.tar.gz", "has_sig": false, "md5_digest": "639a583f428958509788ddef8d6e7ecc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 33230, "upload_time": "2019-11-11T13:29:30", "upload_time_iso_8601": "2019-11-11T13:29:30.863536Z", "url": "https://files.pythonhosted.org/packages/30/4d/27ba0176ca314567415b5d1b9ff2478cd4521fe381e2b6a2f33e12761eb6/kafkacrypto-0.9.9.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.3": [ { "comment_text": "", "digests": { "md5": "bf0bf8d412d3a19ac91f892d74ce5c62", "sha256": "cdd9f343873616b7af803ce80204429130eb9bd73403feae211e77463c944655" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.3-py3-none-any.whl", "has_sig": false, "md5_digest": "bf0bf8d412d3a19ac91f892d74ce5c62", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 48537, "upload_time": "2019-11-11T21:22:40", "upload_time_iso_8601": "2019-11-11T21:22:40.437373Z", "url": "https://files.pythonhosted.org/packages/68/95/f3157a3e787f3a7a637b49a056d8244615f895cd82651380d91e0675fdbb/kafkacrypto-0.9.9.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a34027afb5aec328ca53a8e709635973", "sha256": "52005a1087f225ad7e86d5a052402a064e77a1cef4c3a3c11b751686e554a568" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.3.tar.gz", "has_sig": false, "md5_digest": "a34027afb5aec328ca53a8e709635973", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 33186, "upload_time": "2019-11-11T21:22:42", "upload_time_iso_8601": "2019-11-11T21:22:42.244715Z", "url": "https://files.pythonhosted.org/packages/3b/20/e303e526a6bd69910ea2692e5094adf95b8158e2c6cbc40f8a1f15ad5444/kafkacrypto-0.9.9.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.4": [ { "comment_text": "", "digests": { "md5": "2fa1b9545a10bf61ddc8e1e3ddda65a1", "sha256": "1662c06a5219f500e121991aec63e70ada7dff93b496b0314622a321b4a9f21f" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.4-py3-none-any.whl", "has_sig": false, "md5_digest": "2fa1b9545a10bf61ddc8e1e3ddda65a1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 51402, "upload_time": "2019-11-14T14:41:59", "upload_time_iso_8601": "2019-11-14T14:41:59.858780Z", "url": "https://files.pythonhosted.org/packages/11/07/400496229c630f8b0d74c5fa96e1d2c26168d73fc2517f7a9baf45ad4fc0/kafkacrypto-0.9.9.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "59ba35821cf054f3da022a9a1d0addc0", "sha256": "9fc777294702aad6d4a28f8b2a77a24c7c144fe865bb24d74c6981bf85b4f21e" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.4.tar.gz", "has_sig": false, "md5_digest": "59ba35821cf054f3da022a9a1d0addc0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 36240, "upload_time": "2019-11-14T14:42:01", "upload_time_iso_8601": "2019-11-14T14:42:01.644993Z", "url": "https://files.pythonhosted.org/packages/7d/c8/2169ab0c897a9db52731de408605955fb36ab9180dfb3846508f52f1b372/kafkacrypto-0.9.9.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.5": [ { "comment_text": "", "digests": { "md5": "34ea26672eb91b0f89fe1609240261c4", "sha256": "fe68fd4cb61b68adbb2e226948067cf03609515af7f24732a75321e30c8d763e" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.5-py3-none-any.whl", "has_sig": false, "md5_digest": "34ea26672eb91b0f89fe1609240261c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 51609, "upload_time": "2019-11-25T14:28:05", "upload_time_iso_8601": "2019-11-25T14:28:05.407157Z", "url": "https://files.pythonhosted.org/packages/2a/4f/179384cf5166a86b2174054599ef343c1206f8c01641122d94a5c3a3de3d/kafkacrypto-0.9.9.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7f3f8d722fc91278e65718c258c37621", "sha256": "573e4a2597a23c7437940866cf26f5f60f43ba27f441d068c6097c17de790f51" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.5.tar.gz", "has_sig": false, "md5_digest": "7f3f8d722fc91278e65718c258c37621", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 42731, "upload_time": "2019-11-25T14:28:07", "upload_time_iso_8601": "2019-11-25T14:28:07.200202Z", "url": "https://files.pythonhosted.org/packages/52/bf/495e564459cddaf127a3f28e292102db9ea85498228c8be9979bf577022d/kafkacrypto-0.9.9.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.6": [ { "comment_text": "", "digests": { "md5": "a816347321109302c4715eefc9f5bc3e", "sha256": "b832d32c4a02e58cbc8532e6498a411dc25d96fb78f9f008d079bb2d5de93c64" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.6-py3-none-any.whl", "has_sig": false, "md5_digest": "a816347321109302c4715eefc9f5bc3e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 52662, "upload_time": "2020-03-04T20:32:14", "upload_time_iso_8601": "2020-03-04T20:32:14.354322Z", "url": "https://files.pythonhosted.org/packages/52/10/4f0d8da91bf47d3723a64aafd7559a5090b030d26f9bb3549e6c3260f5b1/kafkacrypto-0.9.9.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5836094426c07497fbe3ba2b04db4efe", "sha256": "4a94668dbeafa8dccf467365fb6ba04de5a91f069a09ab2589113f57766a39ca" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.6.tar.gz", "has_sig": false, "md5_digest": "5836094426c07497fbe3ba2b04db4efe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 42979, "upload_time": "2020-03-04T20:32:15", "upload_time_iso_8601": "2020-03-04T20:32:15.619526Z", "url": "https://files.pythonhosted.org/packages/20/92/5b8be6a68e6e55e61767a071169d3305b3b161e499819dacd6eaeae58418/kafkacrypto-0.9.9.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.7": [ { "comment_text": "", "digests": { "md5": "20c596706d78933786e630aebc8f9167", "sha256": "8323402e818e9196d4da198a9d8b8d2875a97aa3bfe9795bcb0e5989327ac050" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.7-py3-none-any.whl", "has_sig": false, "md5_digest": "20c596706d78933786e630aebc8f9167", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 52694, "upload_time": "2020-03-05T01:59:53", "upload_time_iso_8601": "2020-03-05T01:59:53.130290Z", "url": "https://files.pythonhosted.org/packages/73/7c/3e06617ffaadeb2d822cf02b9e4754d8326aa7ba3c9da9c1dd652fac66f6/kafkacrypto-0.9.9.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6d9a4e82db258cf0ac48987ef2821415", "sha256": "de726588bc63987fe1e41b010db8a3824c9742c81dc06d0bb51fde79a31ea182" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.7.tar.gz", "has_sig": false, "md5_digest": "6d9a4e82db258cf0ac48987ef2821415", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 37353, "upload_time": "2020-03-05T01:59:54", "upload_time_iso_8601": "2020-03-05T01:59:54.710511Z", "url": "https://files.pythonhosted.org/packages/bb/92/992cd4c66c0b711180a1f2bd157e7fe639dd8a454bbd14b2750da2ea55ce/kafkacrypto-0.9.9.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.8": [ { "comment_text": "", "digests": { "md5": "7d4169c94b7166c7a9baa5970874e7a9", "sha256": "56c062c014a0bb16867cf28cbca4791566931de94a6d40f30deb8cb586a792d8" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.8-py3-none-any.whl", "has_sig": false, "md5_digest": "7d4169c94b7166c7a9baa5970874e7a9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 53497, "upload_time": "2020-06-14T18:10:15", "upload_time_iso_8601": "2020-06-14T18:10:15.028251Z", "url": "https://files.pythonhosted.org/packages/88/de/19926a2bb415ae606dd3162a922c7dbfaa15cd60d011958afd1798c2c420/kafkacrypto-0.9.9.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "46e79aa86ffaae6fb22f6c600bf5e166", "sha256": "d0802875619684ee8db3ea9efaf6a94b4ba0bc10dc20837b5fe969e9c0bf3498" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.8.tar.gz", "has_sig": false, "md5_digest": "46e79aa86ffaae6fb22f6c600bf5e166", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 37363, "upload_time": "2020-06-14T18:10:16", "upload_time_iso_8601": "2020-06-14T18:10:16.362737Z", "url": "https://files.pythonhosted.org/packages/ee/e4/544024f9be92a8b9d956893aedfc38af53732dcb476cba32905843bbf408/kafkacrypto-0.9.9.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.9.9": [ { "comment_text": "", "digests": { "md5": "86d8982c39ec6d9500c92579d28dd6b8", "sha256": "afa9866916425a86a0d90e6b3b653f1b10ff1d41a5c7f129134a25337401ffcf" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.9-py3-none-any.whl", "has_sig": false, "md5_digest": "86d8982c39ec6d9500c92579d28dd6b8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 51158, "upload_time": "2021-11-26T18:34:11", "upload_time_iso_8601": "2021-11-26T18:34:11.593881Z", "url": "https://files.pythonhosted.org/packages/6a/28/1a0b9c854c2a2956a33900ce5353e7eb34fc4ea21dc370216f9de8bb69ef/kafkacrypto-0.9.9.9-py3-none-any.whl", "yanked": true, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6677968ad95b60e1650815caae153036", "sha256": "a285983dc43fa8e4ea7d74af6bee5a72f7896cae4396bf635ef9f6bf31c82260" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.9.tar.gz", "has_sig": false, "md5_digest": "6677968ad95b60e1650815caae153036", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 38986, "upload_time": "2021-11-26T18:34:13", "upload_time_iso_8601": "2021-11-26T18:34:13.280125Z", "url": "https://files.pythonhosted.org/packages/5a/f8/0c30a1ce597293b209cf9a13edbee07c02720ae7aede038f3c0cfd80ed45/kafkacrypto-0.9.9.9.tar.gz", "yanked": true, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8f877886ddcedd52c02b921b8626abc8", "sha256": "af7e18088a24d6307db85944ab920accefa42faf4114b7232a1374ec02d86a5f" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.12-py3-none-any.whl", "has_sig": false, "md5_digest": "8f877886ddcedd52c02b921b8626abc8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 55036, "upload_time": "2022-04-06T16:07:31", "upload_time_iso_8601": "2022-04-06T16:07:31.051811Z", "url": "https://files.pythonhosted.org/packages/f1/57/b9d5f6c689a0c51a877741f88257267036bf0ccf5aeecceb45295095e7af/kafkacrypto-0.9.9.12-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6af1329ab70402a6dba15dd47b5e2e6f", "sha256": "3fd333eb7f725d3759aad246dd2f9d301a136c819abb4582715609a6fd111d57" }, "downloads": -1, "filename": "kafkacrypto-0.9.9.12.tar.gz", "has_sig": false, "md5_digest": "6af1329ab70402a6dba15dd47b5e2e6f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 48033, "upload_time": "2022-04-06T16:07:33", "upload_time_iso_8601": "2022-04-06T16:07:33.159211Z", "url": "https://files.pythonhosted.org/packages/13/25/f0a191c503889ab1b0c1964b581d9a62b79820a6352206e83ebdcd08590c/kafkacrypto-0.9.9.12.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }