{ "info": { "author": "Xia Wu", "author_email": "xiawu@zeuux.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "Ethereum Keyfile\n================\n\nA library for handling the encrypted keyfiles used to store ethereum\nprivate keys\n\n This library and repository was previously located at\n https://github.com/pipermerriam/ethereum-keyfile. It was transferred\n to the Ethereum foundation github in November 2017 and renamed to\n ``eth-keyfile``. The PyPi package was also renamed from\n ``ethereum-keyfile`` to ``eth-keyfile``.\n\nInstallation\n------------\n\n.. code:: sh\n\n pip install eth-keyfile\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\nDocumentation\n-------------\n\n``newchain_keyfile.load_keyfile(path_or_file_obj) --> keyfile_json``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTakes either a filesystem path represented as a string or a file object\nand returns the parsed keyfile json as a python dictionary.\n\n.. code:: python\n\n >>> from newchain_keyfile import load_keyfile\n >>> load_keyfile('path/to-my-keystore/keystore.json')\n {\n \"crypto\" : {\n \"cipher\" : \"aes-128-ctr\",\n \"cipherparams\" : {\n \"iv\" : \"6087dab2f9fdbbfaddc31a909735c1e6\"\n },\n \"ciphertext\" : \"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46\",\n \"kdf\" : \"pbkdf2\",\n \"kdfparams\" : {\n \"c\" : 262144,\n \"dklen\" : 32,\n \"prf\" : \"hmac-sha256\",\n \"salt\" : \"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd\"\n },\n \"mac\" : \"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2\"\n },\n \"id\" : \"3198bc9c-6672-5ab3-d995-4942343ae5b6\",\n \"version\" : 3\n }\n\n``newchain_keyfile.create_keyfile_json(private_key, password, kdf=\"pbkdf2\", work_factor=None) --> keyfile_json``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTakes the following parameters:\n\n- ``private_key``: A bytestring of length 32\n- ``password``: A bytestring which will be the password that can be\n used to decrypt the resulting keyfile.\n- ``kdf``: The key derivation function. Allowed values are ``pbkdf2``\n and ``scrypt``. By default, ``pbkdf2`` will be used.\n- ``work_factor``: The work factor which will be used for the given key\n derivation function. By default ``1000000`` will be used for\n ``pbkdf2`` and ``262144`` for ``scrypt``.\n\nReturns the keyfile json as a python dictionary.\n\n.. code:: python\n\n >>> private_key = b'\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01'\n >>> create_keyfile_json(private_key, b'foo')\n {\n \"address\" : \"1a642f0e3c3af545e7acbd38b07251b3990914f1\",\n \"crypto\" : {\n \"cipher\" : \"aes-128-ctr\",\n \"cipherparams\" : {\n \"iv\" : \"6087dab2f9fdbbfaddc31a909735c1e6\"\n },\n \"ciphertext\" : \"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46\",\n \"kdf\" : \"pbkdf2\",\n \"kdfparams\" : {\n \"c\" : 262144,\n \"dklen\" : 32,\n \"prf\" : \"hmac-sha256\",\n \"salt\" : \"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd\"\n },\n \"mac\" : \"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2\"\n },\n \"id\" : \"3198bc9c-6672-5ab3-d995-4942343ae5b6\",\n \"version\" : 3\n }\n\n``newchain_keyfile.decode_keyfile_json(keyfile_json, password) --> private_key``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTakes the keyfile json as a python dictionary and the password for the\nkeyfile, returning the decoded private key.\n\n.. code:: python\n\n >>> keyfile_json = {\n ... \"crypto\" : {\n ... \"cipher\" : \"aes-128-ctr\",\n ... \"cipherparams\" : {\n ... \"iv\" : \"6087dab2f9fdbbfaddc31a909735c1e6\"\n ... },\n ... \"ciphertext\" : \"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46\",\n ... \"kdf\" : \"pbkdf2\",\n ... \"kdfparams\" : {\n ... \"c\" : 262144,\n ... \"dklen\" : 32,\n ... \"prf\" : \"hmac-sha256\",\n ... \"salt\" : \"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd\"\n ... },\n ... \"mac\" : \"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2\"\n ... },\n ... \"id\" : \"3198bc9c-6672-5ab3-d995-4942343ae5b6\",\n ... \"version\" : 3\n ... }\n >>> decode_keyfile_json(keyfile_json, b'foo')\n b'\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01'\n\n``newchain_keyfile.extract_key_from_keyfile(path_or_file_obj, password) --> private_key``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTakes a filesystem path represented by a string or a file object and the\npassword for the keyfile. Returns the private key as a bytestring.\n\n.. code:: python\n\n >>> extract_key_from_keyfile('path/to-my-keystore/keyfile.json', b'foo')\n b'\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01'\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/newtonproject/newchain-keyfile", "keywords": "newchain", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "newchain-keyfile", "package_url": "https://pypi.org/project/newchain-keyfile/", "platform": "", "project_url": "https://pypi.org/project/newchain-keyfile/", "project_urls": { "Homepage": "https://github.com/newtonproject/newchain-keyfile" }, "release_url": "https://pypi.org/project/newchain-keyfile/0.1.3/", "requires_dist": [ "eth-utils (<2,>=1.3.0)", "newchain-keys (>=0.1.0)", "pycryptodome (<4,>=3.6.6)", "eth-utils (<2,>=1.3.0) ; extra == 'dev'", "newchain-keys (>=0.1.0) ; extra == 'dev'", "pycryptodome (<4,>=3.6.6) ; extra == 'dev'", "bumpversion (<1,>=0.5.3) ; extra == 'dev'", "wheel ; extra == 'dev'", "setuptools (>=36.2.0) ; extra == 'dev'", "pluggy (==0.7.1) ; extra == 'dev'", "idna (==2.7) ; extra == 'dev'", "requests (<3,>=2.20) ; extra == 'dev'", "tox (>=2.7.0) ; extra == 'dev'", "twine ; extra == 'dev'", "pytest (<3.7,>=3.6) ; extra == 'dev'", "flake8 (==3.5.0) ; extra == 'dev'", "eth-utils (<2,>=1.3.0) ; extra == 'keyfile'", "newchain-keys (>=0.1.0) ; extra == 'keyfile'", "pycryptodome (<4,>=3.6.6) ; extra == 'keyfile'", "flake8 (==3.5.0) ; extra == 'lint'", "pytest (<3.7,>=3.6) ; extra == 'test'" ], "requires_python": "", "summary": "A library for handling the encrypted keyfiles used to store newchain private keys.", "version": "0.1.3" }, "last_serial": 5042807, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "850418d2146b764929574ff50af39a8c", "sha256": "75c9f7386dfcad422aac49cbf6fc752e5f0479d25e048bd5e3181bb9a09489d1" }, "downloads": -1, "filename": "newchain_keyfile-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "850418d2146b764929574ff50af39a8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6603, "upload_time": "2019-04-02T06:57:19", "url": "https://files.pythonhosted.org/packages/2b/ed/0cb39af92ee09433869fb7346e78f2c36546f22e4b45c45d2087bc0852c3/newchain_keyfile-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c514923994430972daadf656b69ab46", "sha256": "3de0dec33ed2e54981317ed81ca8d897dcdcf997e76e7d4027ad898020b15f9f" }, "downloads": -1, "filename": "newchain-keyfile-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6c514923994430972daadf656b69ab46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6938, "upload_time": "2019-04-02T06:57:21", "url": "https://files.pythonhosted.org/packages/1e/64/183f05b0dd8277f6a868906d3a118a88b34d70990d473e4a3123a7c0a46d/newchain-keyfile-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "73ed7e332f5e111c317cea8e88ae75bf", "sha256": "69b0fa7c3b683b4788596853b14e817a37fca933f1af585f405c046bad824585" }, "downloads": -1, "filename": "newchain_keyfile-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "73ed7e332f5e111c317cea8e88ae75bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6620, "upload_time": "2019-04-02T08:49:38", "url": "https://files.pythonhosted.org/packages/0d/34/14ab08c21b69bf99925a0b31ebadaffd4bdac08e011e827e180d509800ab/newchain_keyfile-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d3992549e13523fbce02144c4b5098f", "sha256": "74f6adc34b7af864fcc84312b476a052b8de2c6838b650bfeacb54f19f8443a3" }, "downloads": -1, "filename": "newchain-keyfile-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7d3992549e13523fbce02144c4b5098f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6979, "upload_time": "2019-04-02T08:49:40", "url": "https://files.pythonhosted.org/packages/84/09/0fc76e4f2c2cf14a9f6498d79ad1e981439d29596a4c60906ded2240bd68/newchain-keyfile-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "072d15f068b2c3d4e4517dc7a8cfa1f1", "sha256": "c604153fcee574395bc5b08289d3ae1909c0dde1592476cd763da30596fae5f4" }, "downloads": -1, "filename": "newchain_keyfile-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "072d15f068b2c3d4e4517dc7a8cfa1f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6625, "upload_time": "2019-04-02T09:03:36", "url": "https://files.pythonhosted.org/packages/03/8e/333b27b4203946972d507328268c812c8280260f96edfd4d2815739b27c5/newchain_keyfile-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d540b218c931b6e4581ba2fd2f268d7", "sha256": "6fc585dc6c80f3f46bafba2806fed798fa284b07b50149fefdf4bb24f8c7f457" }, "downloads": -1, "filename": "newchain-keyfile-0.1.2.tar.gz", "has_sig": false, "md5_digest": "2d540b218c931b6e4581ba2fd2f268d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6994, "upload_time": "2019-04-02T09:03:38", "url": "https://files.pythonhosted.org/packages/f7/fb/c8dc60a3cd17e59a78bbb116e7f95bf9fa374effc0c3156b124724bc6b94/newchain-keyfile-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "960ee6a63c680f251c22d889e6fde41e", "sha256": "cf2ad566f2d84b02955205c585bd9bc9c7d6566f382740dad01867feebe098f8" }, "downloads": -1, "filename": "newchain_keyfile-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "960ee6a63c680f251c22d889e6fde41e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6628, "upload_time": "2019-04-02T09:07:18", "url": "https://files.pythonhosted.org/packages/3c/5b/5b2f355e420d1dcce8dbade4d9709f58b0343a066dc3c1fa79075e9631ba/newchain_keyfile-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e66d007c5b8c205c6452e5494218380f", "sha256": "fb2eb1c400100006b03b14e08f89c6b6257e9d3662d6de5a330aeae7e570b514" }, "downloads": -1, "filename": "newchain-keyfile-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e66d007c5b8c205c6452e5494218380f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6990, "upload_time": "2019-04-02T09:07:20", "url": "https://files.pythonhosted.org/packages/a4/c7/7da0d302103df2e0c12df434c2523b76bff7590a919b30369a533a9df135/newchain-keyfile-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "960ee6a63c680f251c22d889e6fde41e", "sha256": "cf2ad566f2d84b02955205c585bd9bc9c7d6566f382740dad01867feebe098f8" }, "downloads": -1, "filename": "newchain_keyfile-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "960ee6a63c680f251c22d889e6fde41e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6628, "upload_time": "2019-04-02T09:07:18", "url": "https://files.pythonhosted.org/packages/3c/5b/5b2f355e420d1dcce8dbade4d9709f58b0343a066dc3c1fa79075e9631ba/newchain_keyfile-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e66d007c5b8c205c6452e5494218380f", "sha256": "fb2eb1c400100006b03b14e08f89c6b6257e9d3662d6de5a330aeae7e570b514" }, "downloads": -1, "filename": "newchain-keyfile-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e66d007c5b8c205c6452e5494218380f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6990, "upload_time": "2019-04-02T09:07:20", "url": "https://files.pythonhosted.org/packages/a4/c7/7da0d302103df2e0c12df434c2523b76bff7590a919b30369a533a9df135/newchain-keyfile-0.1.3.tar.gz" } ] }