用于处理用于存储以太坊私钥的加密密钥文件的库。
eth-keyfile的Python项目详细描述
用于处理用于存储以太坊的加密密钥文件的库 私钥
This library and repository was previously located at https://github.com/pipermerriam/ethereum-keyfile. It was transferred to the Ethereum foundation github in November 2017 and renamed to ^{tt1}$. The PyPi package was also renamed from ^{tt2}$ to `eth-keyfile.
安装
pip install eth-keyfile
开发
pip install -e . -r requirements-dev.txt
运行测试
您可以使用以下命令运行测试:
py.test tests
或者您可以安装tox来运行完整的测试套件。
释放
要将降价自述转换为正确的 在pypi上正确呈现的格式。
对于类似Debian的系统:
apt install pandoc
或在OSX上:
brew install pandoc
发布新版本:
make release bump=$$VERSION_PART_TO_BUMP$$
如何颠簸
此repo的版本格式为 稳定,{major}.{minor}.{patch}-{stage}.{devnum}表示不稳定 (stage可以是alpha或beta)。
若要在行中发布下一个版本,请指定要凹凸的部分,如 make release bump=minor或make release bump=devnum。
如果您是beta版本,make release bump=stage将切换到 马厩。
若要在当前版本稳定时发布不稳定版本,请指定 新版本显式地 make release bump="--new-version2.0.0-alpha.1 devnum"
文档
eth_keyfile.load_keyfile(path_or_file_obj) --> keyfile_json
接受表示为字符串或文件对象的文件系统路径 并将解析后的密钥文件json作为python字典返回。
>>>frometh_keyfileimportload_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) --> keyfile_json
采用以下参数:
- private_key:长度为32的bytestring
- password:一个bytestring,它将是 用于解密生成的密钥文件。
- kdf:密钥派生函数。允许的值是pbkdf2 和scrypt。默认情况下,将使用pbkdf2。
- work_factor:将用于给定密钥的工作因子 求导函数。默认情况下,1000000将用于 pbkdf2和262144用于scrypt。
将keyfile 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
将keyfile 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
采用由字符串或文件对象表示的文件系统路径, 密钥文件的密码。将私钥作为bytestring返回。
>>>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'