{ "info": { "author": "Piper Merriam", "author_email": "pipermerriam@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "Ethereum Keys\n=============\n\nA common API for Ethereum key operations with pluggable backends.\n\n This library and repository was previously located at\n https://github.com/pipermerriam/ethereum-keys. It was transferred to\n the Ethereum foundation github in November 2017 and renamed to\n ``eth-keys``. The PyPi package was also renamed from\n ``ethereum-keys`` to ``eth-keys``.\n\nInstallation\n------------\n\n.. code:: sh\n\n pip install eth-keys\n\nDevelopment\n-----------\n\n.. code:: sh\n\n pip install -e .[dev]\n\nRunning the tests\n~~~~~~~~~~~~~~~~~\n\nYou can run the tests with:\n\n.. code:: sh\n\n py.test tests\n\nOr you can install ``tox`` to run the full test suite.\n\nReleasing\n~~~~~~~~~\n\nPandoc is required for transforming the markdown README to the proper\nformat to render correctly on pypi.\n\nFor Debian-like systems:\n\n::\n\n apt install pandoc\n\nOr on OSX:\n\n.. code:: sh\n\n brew install pandoc\n\nTo release a new version:\n\n.. code:: sh\n\n make release bump=$$VERSION_PART_TO_BUMP$$\n\nHow to bumpversion\n^^^^^^^^^^^^^^^^^^\n\nThe version format for this repo is ``{major}.{minor}.{patch}`` for\nstable, and ``{major}.{minor}.{patch}-{stage}.{devnum}`` for unstable\n(``stage`` can be alpha or beta).\n\nTo issue the next version in line, specify which part to bump, like\n``make release bump=minor`` or ``make release bump=devnum``.\n\nIf you are in a beta version, ``make release bump=stage`` will switch to\na stable.\n\nTo issue an unstable version when the current version is stable, specify\nthe new version explicitly, like\n``make release bump=\"--new-version 2.0.0-alpha.1 devnum\"``\n\nQuickStart\n----------\n\n.. code:: python\n\n >>> from eth_keys import keys\n >>> pk = keys.PrivateKey(b'\\x01' * 32)\n >>> signature = pk.sign_msg(b'a message')\n >>> pk\n '0x0101010101010101010101010101010101010101010101010101010101010101'\n >>> pk.public_key\n '0x1b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f70beaf8f588b541507fed6a642c5ab42dfdf8120a7f639de5122d47a69a8e8d1'\n >>> signature\n '0xccda990dba7864b79dc49158fea269338a1cf5747bc4c4bf1b96823e31a0997e7d1e65c06c5bf128b7109e1b4b9ba8d1305dc33f32f624695b2fa8e02c12c1e000'\n >>> pk.public_key.to_checksum_address()\n '0x1a642f0E3c3aF545E7AcBD38b07251B3990914F1'\n >>> signature.verify_msg(b'a message', pk.public_key)\n True\n >>> signature.recover_public_key_from_msg(b'a message') == pk.public_key\n True\n\nDocumentation\n-------------\n\n``KeyAPI(backend=None)``\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``KeyAPI`` object is the primary API for interacting with the\n``eth-keys`` libary. The object takes a single optional argument in its\nconstructor which designates what backend will be used for eliptical\ncurve cryptography operations. The built-in backends are:\n\n- ``eth_keys.backends.NativeECCBackend``: A pure python implementation\n of the ECC operations.\n- ``eth_keys.backends.CoinCurveECCBackend``: Uses the\n ```coincurve`` `__ library for ECC\n operations.\n\nBy default, ``eth-keys`` will *try* to use the ``CoinCurveECCBackend``,\nfalling back to the ``NativeECCBackend`` if the ``coincurve`` library is\nnot available.\n\n Note: The ``coincurve`` library is not automatically installed with\n ``eth-keys`` and must be installed separately.\n\nThe ``backend`` argument can be given in any of the following forms.\n\n- Instance of the backend class\n- The backend class\n- String with the dot-separated import path for the backend class.\n\n.. code:: python\n\n >>> from eth_keys import KeyAPI\n >>> from eth_keys.backends import NativeECCBackend\n # These are all the same\n >>> keys = KeyAPI(NativeECCBackend)\n >>> keys = KeyAPI(NativeECCBackend())\n >>> keys = KeyAPI('eth_keys.backends.NativeECCBackend')\n # Or for the coincurve base backend\n >>> keys = KeyAPI('eth_keys.backends.CoinCurveECCBackend')\n\nThe backend can also be configured using the environment variable\n``ECC_BACKEND_CLASS`` which should be set to the dot-separated python\nimport path to the desired backend.\n\n.. code:: python\n\n >>> import os\n >>> os.environ['ECC_BACKEND_CLASS'] = 'eth_keys.backends.CoinCurveECCBackend'\n\n``KeyAPI.ecdsa_sign(message_hash, private_key) -> Signature``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis method returns a signature for the given ``message_hash``, signed\nby the provided ``private_key``.\n\n- ``message_hash``: **must** be a byte string of length 32\n- ``private_key``: **must** be an instance of ``PrivateKey``\n\n``KeyAPI.ecdsa_verify(message_hash, signature, public_key) -> bool``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns ``True`` or ``False`` based on whether the provided\n``signature`` is a valid signature for the provided ``message_hash`` and\n``public_key``.\n\n- ``message_hash``: **must** be a byte string of length 32\n- ``signature``: **must** be an instance of ``Signature``\n- ``public_key``: **must** be an instance of ``PublicKey``\n\n``KeyAPI.ecdsa_recover(message_hash, signature) -> PublicKey``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns the ``PublicKey`` instances recovered from the given\n``signature`` and ``message_hash``.\n\n- ``message_hash``: **must** be a byte string of length 32\n- ``signature``: **must** be an instance of ``Signature``\n\n``KeyAPI.private_key_to_public_key(private_key) -> PublicKey``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns the ``PublicKey`` instances computed from the given\n``private_key`` instance.\n\n- ``private_key``: **must** be an instance of ``PublicKey``\n\nCommon APIs for ``PublicKey``, ``PrivateKey`` and ``Signature``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere is a common API for the following objects.\n\n- ``PublicKey``\n- ``PrivateKey``\n- ``Signature``\n\nEach of these objects has all of the following APIs.\n\n- ``obj.to_bytes()``: Returns the object in it's canonical ``bytes``\n serialization.\n- ``obj.to_hex()``: Returns a text string of the hex encoded canonical\n representation.\n\n``KeyAPI.PublicKey(public_key_bytes)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``PublicKey`` class takes a single argument which must be a bytes\nstring with length 64.\n\n Note that there are two other common formats for public keys: 65\n bytes with a leading ``\\x04`` byte and 33 bytes starting with either\n ``\\x02`` or ``\\x03``. To use the former with the ``PublicKey``\n object, remove the first byte. For the latter, refer to\n ``PublicKey.from_compressed_bytes``.\n\nThe following methods are available:\n\n``PublicKey.from_compressed_bytes(compressed_bytes) -> PublicKey``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis ``classmethod`` returns a new ``PublicKey`` instance computed from\nits compressed representation.\n\n- ``compressed_bytes`` **must** be a byte string of length 33 starting\n with ``\\x02`` or ``\\x03``.\n\n``PublicKey.from_private(private_key) -> PublicKey``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis ``classmethod`` returns a new ``PublicKey`` instance computed from\nthe given ``private_key``.\n\n- ``private_key`` may either be a byte string of length 32 or an\n instance of the ``KeyAPI.PrivateKey`` class.\n\n``PublicKey.recover_from_msg(message, signature) -> PublicKey``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis ``classmethod`` returns a new ``PublicKey`` instance computed from\nthe provided ``message`` and ``signature``.\n\n- ``message`` **must** be a byte string\n- ``signature`` **must** be an instance of ``KeyAPI.Signature``\n\n``PublicKey.recover_from_msg_hash(message_hash, signature) -> PublicKey``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSame as ``PublicKey.recover_from_msg`` except that ``message_hash``\nshould be the Keccak hash of the ``message``.\n\n``PublicKey.verify_msg(message, signature) -> bool``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method returns ``True`` or ``False`` based on whether the signature\nis a valid for the given message.\n\n``PublicKey.verify_msg_hash(message_hash, signature) -> bool``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSame as ``PublicKey.verify_msg`` except that ``message_hash`` should be\nthe Keccak hash of the ``message``.\n\n``PublicKey.to_compressed_bytes() -> bytes``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns the compressed representation of this public key.\n\n``PublicKey.to_address() -> text``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns the hex encoded ethereum address for this public key.\n\n``PublicKey.to_checksum_address() -> text``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns the ERC55 checksum formatted ethereum address for this public\nkey.\n\n``PublicKey.to_canonical_address() -> bytes``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns the 20-byte representation of the ethereum address for this\npublic key.\n\n``KeyAPI.PrivateKey(private_key_bytes)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``PrivateKey`` class takes a single argument which must be a bytes\nstring with length 32.\n\nThe following methods and properties are available\n\n``PrivateKey.public_key``\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis *property* holds the ``PublicKey`` instance coresponding to this\nprivate key.\n\n``PrivateKey.sign_msg(message) -> Signature``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method returns a signature for the given ``message`` in the form of\na ``Signature`` instance\n\n- ``message`` **must** be a byte string.\n\n``PrivateKey.sign_msg_hash(message_hash) -> Signature``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSame as ``PrivateKey.sign`` except that ``message_hash`` should be the\nKeccak hash of the ``message``.\n\n``KeyAPI.Signature(signature_bytes=None, vrs=None)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``Signature`` class can be instantiated in one of two ways.\n\n- ``signature_bytes``: a bytes string with length 65.\n- ``vrs``: a 3-tuple composed of the integers ``v``, ``r``, and ``s``.\n\n Note: If using the ``signature_bytes`` to instantiate, the byte\n string should be encoded as ``r_bytes | s_bytes | v_bytes`` where\n ``|`` represents concatenation. ``r_bytes`` and ``s_bytes`` should\n be 32 bytes in length. ``v_bytes`` should be a single byte ``\\x00``\n or ``\\x01``.\n\nSignatures are expected to use ``1`` or ``0`` for their ``v`` value.\n\nThe following methods and properties are available\n\n``Signature.v``\n^^^^^^^^^^^^^^^\n\nThis property returns the ``v`` value from the signature as an integer.\n\n``Signature.r``\n^^^^^^^^^^^^^^^\n\nThis property returns the ``r`` value from the signature as an integer.\n\n``Signature.s``\n^^^^^^^^^^^^^^^\n\nThis property returns the ``s`` value from the signature as an integer.\n\n``Signature.vrs``\n^^^^^^^^^^^^^^^^^\n\nThis property returns a 3-tuple of ``(v, r, s)``.\n\n``Signature.verify_msg(message, public_key) -> bool``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method returns ``True`` or ``False`` based on whether the signature\nis a valid for the given public key.\n\n- ``message``: **must** be a byte string.\n- ``public_key``: **must** be an instance of ``PublicKey``\n\n``Signature.verify_msg_hash(message_hash, public_key) -> bool``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSame as ``Signature.verify_msg`` except that ``message_hash`` should be\nthe Keccak hash of the ``message``.\n\n``Signature.recover_public_key_from_msg(message) -> PublicKey``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method returns a ``PublicKey`` instance recovered from the\nsignature.\n\n- ``message``: **must** be a byte string.\n\n``Signature.recover_public_key_from_msg_hash(message_hash) -> PublicKey``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSame as ``Signature.recover_public_key_from_msg`` except that\n``message_hash`` should be the Keccak hash of the ``message``.\n\nExceptions\n~~~~~~~~~~\n\n``eth_api.exceptions.ValidationError``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis error is raised during instantaition of any of the ``PublicKey``,\n``PrivateKey`` or ``Signature`` classes if their constructor parameters\nare invalid.\n\n``eth_api.exceptions.BadSignature``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis error is raised from any of the ``recover`` or ``verify`` methods\ninvolving signatures if the signature is invalid.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ethereum/eth-keys", "keywords": "ethereum", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "eth-keys", "package_url": "https://pypi.org/project/eth-keys/", "platform": "", "project_url": "https://pypi.org/project/eth-keys/", "project_urls": { "Homepage": "https://github.com/ethereum/eth-keys" }, "release_url": "https://pypi.org/project/eth-keys/0.3.1/", "requires_dist": [ "eth-utils (<2.0.0,>=1.3.0)", "coincurve (<13.0.0,>=7.0.0) ; extra == 'coincurve'", "tox (==2.7.0) ; extra == 'dev'", "bumpversion (==0.5.3) ; extra == 'dev'", "twine ; extra == 'dev'", "eth-utils (<2.0.0,>=1.3.0) ; extra == 'dev'", "flake8 (==3.0.4) ; extra == 'dev'", "mypy (==0.701) ; extra == 'dev'", "asn1tools (<0.147,>=0.146.2) ; extra == 'dev'", "pyasn1 (<0.5,>=0.4.5) ; extra == 'dev'", "pytest (==3.2.2) ; extra == 'dev'", "hypothesis (==3.30.0) ; extra == 'dev'", "eth-hash[pysha3] ; (implementation_name == \"cpython\") and extra == 'dev'", "eth-hash[pycryptodome] ; (implementation_name == \"pypy\") and extra == 'dev'", "eth-utils (<2.0.0,>=1.3.0) ; extra == 'eth-keys'", "flake8 (==3.0.4) ; extra == 'lint'", "mypy (==0.701) ; extra == 'lint'", "asn1tools (<0.147,>=0.146.2) ; extra == 'test'", "pyasn1 (<0.5,>=0.4.5) ; extra == 'test'", "pytest (==3.2.2) ; extra == 'test'", "hypothesis (==3.30.0) ; extra == 'test'", "eth-hash[pysha3] ; (implementation_name == \"cpython\") and extra == 'test'", "eth-hash[pycryptodome] ; (implementation_name == \"pypy\") and extra == 'test'" ], "requires_python": "", "summary": "Common API for Ethereum key operations.", "version": "0.3.1" }, "last_serial": 5700086, "releases": { "0.1.0b1": [ { "comment_text": "", "digests": { "md5": "105d295e08075e320f9c271e91d5d709", "sha256": "16f63a152e404f5cea35a4b9cab0dbedb23b32792f1647b9ae625239701fe092" }, "downloads": -1, "filename": "eth_keys-0.1.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "105d295e08075e320f9c271e91d5d709", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 20944, "upload_time": "2017-11-27T21:19:07", "url": "https://files.pythonhosted.org/packages/43/a4/23a13b6a3e28c195232076281e81d3c332a5ea37d81f28423fee29156aeb/eth_keys-0.1.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f7c3e15a414d8e668ef67bda1c05b030", "sha256": "f3a1be8ecb477ee7f6977af00cdb79442b001c6ddc8f4e0cc53722abdfd60801" }, "downloads": -1, "filename": "eth-keys-0.1.0b1.tar.gz", "has_sig": false, "md5_digest": "f7c3e15a414d8e668ef67bda1c05b030", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15785, "upload_time": "2017-11-27T21:18:59", "url": "https://files.pythonhosted.org/packages/97/23/2af20b3a4fc84fd752847fb96764edc742d2fbf051836446887f26a4bd3b/eth-keys-0.1.0b1.tar.gz" } ], "0.1.0b2": [ { "comment_text": "", "digests": { "md5": "7516bd8e6deec29074b8e3dcb2901f70", "sha256": "9af2686493ddf07d50cd2eddd67c5aeff5ad6433bcc6e605f85ff62a13ae9559" }, "downloads": -1, "filename": "eth_keys-0.1.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "7516bd8e6deec29074b8e3dcb2901f70", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 20946, "upload_time": "2017-11-27T23:11:40", "url": "https://files.pythonhosted.org/packages/bf/9b/116868cad0659daf7b0b84c2b5be90cdceabfe200d1456bf0bb2e5d04d0a/eth_keys-0.1.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36c866492f283d53ecfec852154b0350", "sha256": "39166e60cac5cbf52284a9ea400938297876d43623adb363536b3ea5f3d50212" }, "downloads": -1, "filename": "eth-keys-0.1.0b2.tar.gz", "has_sig": false, "md5_digest": "36c866492f283d53ecfec852154b0350", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15819, "upload_time": "2017-11-27T23:11:37", "url": "https://files.pythonhosted.org/packages/b0/3c/757cb6b306f1a9833104578883f041d7d58452f7d5a84c2166592c76e0dc/eth-keys-0.1.0b2.tar.gz" } ], "0.1.0b3": [ { "comment_text": "", "digests": { "md5": "97af4d90238a322ce0988b81fb3da412", "sha256": "2ead6ab9edce591b2cbb6c90bfaaee680a94b3574dcc7d2944aadfdf5227bbe0" }, "downloads": -1, "filename": "eth_keys-0.1.0b3-py3-none-any.whl", "has_sig": false, "md5_digest": "97af4d90238a322ce0988b81fb3da412", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 20968, "upload_time": "2017-11-27T23:39:49", "url": "https://files.pythonhosted.org/packages/ac/63/fd9d7c886493a2e7de48d94a2b04b3e31a17c0ef6f9ea62cff2f75d4c8a0/eth_keys-0.1.0b3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ec3dd7688f14449a1826a14bd0a7484", "sha256": "caffc430b69cd5e3d4dae4d6bd32e271325c994b0068dd878951c7ce23539f45" }, "downloads": -1, "filename": "eth-keys-0.1.0b3.tar.gz", "has_sig": false, "md5_digest": "8ec3dd7688f14449a1826a14bd0a7484", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15792, "upload_time": "2017-11-27T23:39:42", "url": "https://files.pythonhosted.org/packages/0f/f4/5fc81f695b7ed141e8417717aed26c17e243351d207a54861ee9c3c02e25/eth-keys-0.1.0b3.tar.gz" } ], "0.1.0b4": [ { "comment_text": "", "digests": { "md5": "a4e604384954ab0d21130063ed639f27", "sha256": "0055ad91bfeee4d0a43e9be76ba7b5038eb3cba7c3e0bece8b140045d493c37a" }, "downloads": -1, "filename": "eth_keys-0.1.0b4-py3-none-any.whl", "has_sig": false, "md5_digest": "a4e604384954ab0d21130063ed639f27", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 21285, "upload_time": "2017-12-22T19:23:14", "url": "https://files.pythonhosted.org/packages/63/61/3779d7fe2c273b3a214decabadf9150517b33c21a0de5750d9aaf94dee5e/eth_keys-0.1.0b4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3e171384e54cd923a76af2268e0a86b", "sha256": "5f1fc4830ce0da32e2c7bb5a593c429cc4a257996d3a0db0131894918c88b3dc" }, "downloads": -1, "filename": "eth-keys-0.1.0b4.tar.gz", "has_sig": false, "md5_digest": "b3e171384e54cd923a76af2268e0a86b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16095, "upload_time": "2017-12-22T19:23:11", "url": "https://files.pythonhosted.org/packages/aa/17/e6eedf486c4cacf359f3a8a9117227995f58d1cf4e6a17fc1df48f7f1e6d/eth-keys-0.1.0b4.tar.gz" } ], "0.2.0b1": [ { "comment_text": "", "digests": { "md5": "1187bab4b472db102ad777e686c1111d", "sha256": "b24e6acfdb4a7813c51218aebb6e306891c503aecb415c82463dda3599d7be7b" }, "downloads": -1, "filename": "eth_keys-0.2.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "1187bab4b472db102ad777e686c1111d", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 21139, "upload_time": "2018-02-01T22:43:07", "url": "https://files.pythonhosted.org/packages/60/66/01987d20b0cbd3eacac6a409569eb51af8b08997504c305580981c19c090/eth_keys-0.2.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b76cc3a8944bdc6960a25fad117593c", "sha256": "3482e9b1a69b72c83ad4263630c834d797b12999750ce89259fc549c0514671d" }, "downloads": -1, "filename": "eth-keys-0.2.0b1.tar.gz", "has_sig": false, "md5_digest": "3b76cc3a8944bdc6960a25fad117593c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14227, "upload_time": "2018-02-01T22:43:05", "url": "https://files.pythonhosted.org/packages/d1/86/89ddd83413bf5c09235ed26f0dfd1d1454dd48db051cdae1fa85bbbd63de/eth-keys-0.2.0b1.tar.gz" } ], "0.2.0b2": [ { "comment_text": "", "digests": { "md5": "77332cf07bea9d891bacfbf288dce0a2", "sha256": "132926090ed44e5901cbf21f4eb97fce0a63dbd2ba512dbf9a8219e21f0fd327" }, "downloads": -1, "filename": "eth_keys-0.2.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "77332cf07bea9d891bacfbf288dce0a2", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 21112, "upload_time": "2018-02-20T19:19:41", "url": "https://files.pythonhosted.org/packages/f5/de/5cd12c06d03cc9305990457aca75888a4e0da9a1df6e10312f875d9736d3/eth_keys-0.2.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc71f8261de67377273d2ba1e8dc254a", "sha256": "38296feabf141809bc9d680a9071e373e51c58192393c33613b07aefc45a7a7d" }, "downloads": -1, "filename": "eth-keys-0.2.0b2.tar.gz", "has_sig": false, "md5_digest": "cc71f8261de67377273d2ba1e8dc254a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15941, "upload_time": "2018-02-20T19:19:38", "url": "https://files.pythonhosted.org/packages/7e/62/e997ddbd1b949311c10fd7cc1a5b4b09c53a0218b8e4e4e3ae330a1169d1/eth-keys-0.2.0b2.tar.gz" } ], "0.2.0b3": [ { "comment_text": "", "digests": { "md5": "b9a0c0aaa346594f7358e6fb6be440e3", "sha256": "b48fc92a527bd905525855ebe45e79ba17be6654c4bedb947119648c145c74c0" }, "downloads": -1, "filename": "eth_keys-0.2.0b3-py3-none-any.whl", "has_sig": false, "md5_digest": "b9a0c0aaa346594f7358e6fb6be440e3", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 20874, "upload_time": "2018-02-27T22:01:43", "url": "https://files.pythonhosted.org/packages/9b/96/bec507291a2ecac65358b4485282ce02e8c0cdd30980a232791b355a1f5b/eth_keys-0.2.0b3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9feefbeed8508cbf2abf6aaee8cceaa8", "sha256": "5ab2612f457452dc0a318655051cdd05c20f4db2f445003a46c98d324101b0e4" }, "downloads": -1, "filename": "eth-keys-0.2.0b3.tar.gz", "has_sig": false, "md5_digest": "9feefbeed8508cbf2abf6aaee8cceaa8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15908, "upload_time": "2018-02-27T22:01:36", "url": "https://files.pythonhosted.org/packages/d8/15/36c32c93c57c2492671a79aee898053e30bd84eec7bc81e4209daac67d7f/eth-keys-0.2.0b3.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "bcb0dbbb2acde0834d8fd43886d17972", "sha256": "18f2b30fe54ad9ff8a4517459012dfff1608f558d5ff24646c50e19fa5ec9183" }, "downloads": -1, "filename": "eth_keys-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bcb0dbbb2acde0834d8fd43886d17972", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17463, "upload_time": "2019-01-09T19:31:43", "url": "https://files.pythonhosted.org/packages/3e/4f/a11b4624b4e5d346fd512d190c0d7410ac8c384ef1cb8b681cc4164a26d8/eth_keys-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4708a6e63f12da5734ee8e8ec4ae571a", "sha256": "993e61f146a9b228b8762082230afdf516c1ac3f6bbcdd2a09a4823ff8106d49" }, "downloads": -1, "filename": "eth-keys-0.2.1.tar.gz", "has_sig": false, "md5_digest": "4708a6e63f12da5734ee8e8ec4ae571a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15893, "upload_time": "2019-01-09T19:31:45", "url": "https://files.pythonhosted.org/packages/13/c1/8775dcbbd210e5034676743206925f80139f2a98b9044d64ab44eb664fc1/eth-keys-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "430e0a2f5dcd6acb74b8928f542b1d22", "sha256": "db6ebe767ede2cac40f38f7c6981b0170067131991578e6a8cf246299431813e" }, "downloads": -1, "filename": "eth_keys-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "430e0a2f5dcd6acb74b8928f542b1d22", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17488, "upload_time": "2019-04-25T15:48:05", "url": "https://files.pythonhosted.org/packages/1e/ea/9fcd1343b9a3615f20f7d456ec1b1d0c1c7a4d7bd3463b983fcd9946b6af/eth_keys-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0ac24f0079e1efae4d93b7024b93dc4", "sha256": "b51700a47a1cd5ceccd96b2744443925c7299fb43583927c3a10872f9bf2fb6a" }, "downloads": -1, "filename": "eth-keys-0.2.2.tar.gz", "has_sig": false, "md5_digest": "c0ac24f0079e1efae4d93b7024b93dc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15910, "upload_time": "2019-04-25T15:48:07", "url": "https://files.pythonhosted.org/packages/35/06/014102ccb5ecef6c8799690f01cc703b93185dcb7b7a98426dc93e1a5159/eth-keys-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "6e0e3673bc9e4bfa9b3ff7fcb2186bd8", "sha256": "6f6a9437f7ba5849f233b65ac57008f773595d6e38dd82ae6807cf999ecb358f" }, "downloads": -1, "filename": "eth_keys-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "6e0e3673bc9e4bfa9b3ff7fcb2186bd8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20435, "upload_time": "2019-06-07T18:33:51", "url": "https://files.pythonhosted.org/packages/8c/0d/a9ba67f0fcc52727e78f179924f14b35a2443cfc8fba284a7bafebd053e4/eth_keys-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "160eb28944d3b74b01ae0b67cdbd2da3", "sha256": "d2930c18d2b2bf7a027cb338bfacae727f024ea5cb07f23ee7b306fb8d226874" }, "downloads": -1, "filename": "eth-keys-0.2.3.tar.gz", "has_sig": false, "md5_digest": "160eb28944d3b74b01ae0b67cdbd2da3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18466, "upload_time": "2019-06-07T18:33:54", "url": "https://files.pythonhosted.org/packages/a8/40/ca6ec1655e70b3151e1a086927da5cb0b03f167db64162fa977464752897/eth-keys-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "4ee09d85c5bc366a3aab7ae905694ce8", "sha256": "d1cdcd6b2118edf5dcd112ba6efc4b187b028c5c7d6af6ca04d90b7af94a1c58" }, "downloads": -1, "filename": "eth_keys-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4ee09d85c5bc366a3aab7ae905694ce8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24408, "upload_time": "2019-06-11T17:13:01", "url": "https://files.pythonhosted.org/packages/61/4f/d8e778e377e0b9287b5ffc7ecc4e3b1e9d3045030d391acc7328e23708f2/eth_keys-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c6e60800efae3f0eb5cc672fd10b3b04", "sha256": "e15a0140852552ec3eb07e9731e23d390aea4bae892022279af42ce32e9c2620" }, "downloads": -1, "filename": "eth-keys-0.2.4.tar.gz", "has_sig": false, "md5_digest": "c6e60800efae3f0eb5cc672fd10b3b04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17076, "upload_time": "2019-06-11T17:13:03", "url": "https://files.pythonhosted.org/packages/85/e9/dfef9afd660748778b8a0548088989c302550af1eb2e2aa8dcbcf8f0d134/eth-keys-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b4d2da563913e1c5f9dca072f931222f", "sha256": "e37b6ab0ee4ebcc70dcc640c297fd80366f79cca63fd3e79c767cbc2181787ed" }, "downloads": -1, "filename": "eth_keys-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b4d2da563913e1c5f9dca072f931222f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20433, "upload_time": "2019-06-05T17:52:14", "url": "https://files.pythonhosted.org/packages/ae/0c/6e6fbe0cd884d9ceb71034b34b27c6e2b0e0d4f46fc4f62c6cf602267663/eth_keys-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bbc58e98bdf203f1669aa9ef556df74", "sha256": "cfee2e3c684c0561c4706620a128170902e2e9fe8617c91b82c16665b1556407" }, "downloads": -1, "filename": "eth-keys-0.3.0.tar.gz", "has_sig": false, "md5_digest": "9bbc58e98bdf203f1669aa9ef556df74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18456, "upload_time": "2019-06-05T17:52:16", "url": "https://files.pythonhosted.org/packages/13/fb/f115713e1495822c277adcbe9012541b2712eb639931f884fa35200c550f/eth-keys-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "4e5642790e7ebba43adf6aa57de4893f", "sha256": "6b788eec609982bcfdd0f9e38803627e88592474f592b3817740976e9e9ea15e" }, "downloads": -1, "filename": "eth_keys-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4e5642790e7ebba43adf6aa57de4893f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20796, "upload_time": "2019-08-19T19:54:27", "url": "https://files.pythonhosted.org/packages/f7/85/b02f0cf95bb06c14477877fd6fe296a40fc836d3b43083a7b288bc519a97/eth_keys-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59cd01a06c48af4ccbf4447d6209ec58", "sha256": "7df4a4a57b7c4d09860a459452cab356bb5aa166d379479104a63bec0d35d072" }, "downloads": -1, "filename": "eth-keys-0.3.1.tar.gz", "has_sig": false, "md5_digest": "59cd01a06c48af4ccbf4447d6209ec58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18746, "upload_time": "2019-08-19T19:54:29", "url": "https://files.pythonhosted.org/packages/74/26/db877205c18170c48d53b9d91226332ca9436331ac086b9732c2c5661719/eth-keys-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4e5642790e7ebba43adf6aa57de4893f", "sha256": "6b788eec609982bcfdd0f9e38803627e88592474f592b3817740976e9e9ea15e" }, "downloads": -1, "filename": "eth_keys-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4e5642790e7ebba43adf6aa57de4893f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20796, "upload_time": "2019-08-19T19:54:27", "url": "https://files.pythonhosted.org/packages/f7/85/b02f0cf95bb06c14477877fd6fe296a40fc836d3b43083a7b288bc519a97/eth_keys-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59cd01a06c48af4ccbf4447d6209ec58", "sha256": "7df4a4a57b7c4d09860a459452cab356bb5aa166d379479104a63bec0d35d072" }, "downloads": -1, "filename": "eth-keys-0.3.1.tar.gz", "has_sig": false, "md5_digest": "59cd01a06c48af4ccbf4447d6209ec58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18746, "upload_time": "2019-08-19T19:54:29", "url": "https://files.pythonhosted.org/packages/74/26/db877205c18170c48d53b9d91226332ca9436331ac086b9732c2c5661719/eth-keys-0.3.1.tar.gz" } ] }