跳至主要内容

eth-keyfile:用于处理存储以太坊私钥的加密密钥文件的库

项目描述

eth-keyfile

Join the conversation on Discord Build Status PyPI version Python versions

一个用于处理存储以太坊私钥的加密密钥文件的库

这个库和仓库之前位于 https://github.com/pipermerriam/ethereum-keyfile。它在2017年11月转到了以太坊基金会的GitHub上,并更名为 eth-keyfile。PyPi包的名称也从 ethereum-keyfile 改为 eth-keyfile

有关更多信息,请参阅下面的文档。查看变更日志

快速入门

python -m pip install eth-keyfile

文档

eth_keyfile.load_keyfile(path_or_file_obj) --> keyfile_json

接受一个字符串形式的文件系统路径或文件对象,并返回解析后的密钥文件JSON作为Python字典。

>>> from eth_keyfile import load_keyfile
>>> load_keyfile('path/to-my-keystore/keystore.json')
{
    "crypto" : {
        "cipher" : "aes-128-ctr",
        "cipherparams" : {
            "iv" : "6087dab2f9fdbbfaddc31a909735c1e6"
        },
        "ciphertext" : "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
        "kdf" : "pbkdf2",
        "kdfparams" : {
            "c" : 262144,
            "dklen" : 32,
            "prf" : "hmac-sha256",
            "salt" : "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
        },
        "mac" : "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
    },
    "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
    "version" : 3
}

eth_keyfile.create_keyfile_json(private_key, password, kdf="pbkdf2", work_factor=None, salt_size=16) --> keyfile_json

接受以下参数

  • private_key:长度为32的字节串
  • password:字节串,将用作解密结果密钥文件的密码。
  • kdf:密钥派生函数。允许的值是 pbkdf2scrypt。默认情况下将使用 pbkdf2
  • work_factor:给定密钥派生函数将使用的工作因子。默认情况下,pbkdf2 将使用 1000000,而 scrypt 将使用 262144
  • salt_size:盐的大小(以字节为单位)。

返回密钥文件JSON作为Python字典。

>>> 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'
>>> create_keyfile_json(private_key, b'foo')
{
    "address" : "1a642f0e3c3af545e7acbd38b07251b3990914f1",
    "crypto" : {
        "cipher" : "aes-128-ctr",
        "cipherparams" : {
            "iv" : "6087dab2f9fdbbfaddc31a909735c1e6"
        },
        "ciphertext" : "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
        "kdf" : "pbkdf2",
        "kdfparams" : {
            "c" : 262144,
            "dklen" : 32,
            "prf" : "hmac-sha256",
            "salt" : "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
        },
        "mac" : "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
    },
    "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
    "version" : 3
}

eth_keyfile.decode_keyfile_json(keyfile_json, password) --> private_key

接受密钥文件JSON作为Python字典和密钥文件的密码,返回解码后的私钥。

>>> keyfile_json = {
...     "crypto" : {
...         "cipher" : "aes-128-ctr",
...         "cipherparams" : {
...             "iv" : "6087dab2f9fdbbfaddc31a909735c1e6"
...         },
...         "ciphertext" : "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
...         "kdf" : "pbkdf2",
...         "kdfparams" : {
...             "c" : 262144,
...             "dklen" : 32,
...             "prf" : "hmac-sha256",
...             "salt" : "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
...         },
...         "mac" : "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
...     },
...     "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
...     "version" : 3
... }
>>> decode_keyfile_json(keyfile_json, b'foo')
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'

eth_keyfile.extract_key_from_keyfile(path_or_file_obj, password) --> private_key

接受一个表示文件系统路径的字符串或文件对象以及密钥文件的密码。返回私钥作为字节串。

>>> extract_key_from_keyfile('path/to-my-keystore/keyfile.json', b'foo')
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'

开发者设置

如果您想对eth-keyfile进行开发,请查看 Snake Charmers战术手册 以了解我们如何做。

  • 测试
  • 拉取请求
  • 文档

我们使用 pre-commit 来保持一致的代码风格。安装后,它将在每次提交时自动运行。您也可以通过 make lint 手动运行它。如果您需要提交跳过 pre-commit 检查的提交,可以使用 git commit --no-verify

开发环境设置

您可以使用以下命令设置您的开发环境

git clone git@github.com:ethereum/eth-keyfile.git
cd eth-keyfile
virtualenv -p python3 venv
. venv/bin/activate
python -m pip install -e ".[dev]"
pre-commit install

发布设置

要发布新版本

make release bump=$$VERSION_PART_TO_BUMP$$

如何增加版本号

此存储库的版本格式为稳定的 {major}.{minor}.{patch},以及不稳定的 {major}.{minor}.{patch}-{stage}.{devnum}stage 可以是 alpha 或 beta)。

要发布下一个版本,请指定要增加的部分,例如 make release bump=minormake release bump=devnum。这通常在主分支上执行,除非发布beta版(在这种情况下,beta版从主分支发布,而之前的稳定版从该分支发布)。

如果您处于beta版本,make release bump=stage 将切换到稳定版。

如果当前版本是稳定版,则要发布不稳定版本,请明确指定新版本,例如 make release bump="--new-version 4.0.0-alpha.1 devnum"

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

eth_keyfile-0.8.1.tar.gz (12.3 kB 查看哈希值)

上传时间 源代码

构建分发

eth_keyfile-0.8.1-py3-none-any.whl (7.5 kB 查看哈希值)

上传时间 Python 3

由以下支持