eth-keyfile:用于处理存储以太坊私钥的加密密钥文件的库
项目描述
eth-keyfile
一个用于处理存储以太坊私钥的加密密钥文件的库
这个库和仓库之前位于 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
:密钥派生函数。允许的值是pbkdf2
和scrypt
。默认情况下将使用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=minor
或 make 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9708bc31f386b52cca0969238ff35b1ac72bd7a7186f2a84b86110d3c973bec1 |
|
MD5 | a953de1ae2c62535a2a1ad9f9b358ff3 |
|
BLAKE2b-256 | 3566dd823b1537befefbbff602e2ada88f1477c5b40ec3731e3d9bc676c5f716 |
eth_keyfile-0.8.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 65387378b82fe7e86d7cb9f8d98e6d639142661b2f6f490629da09fddbef6d64 |
|
MD5 | f757b85dac6923d1a8257f7db69ff99c |
|
BLAKE2b-256 | 88fc48a586175f847dd9e05e5b8994d2fe8336098781ec2e9836a2ad94280281 |