括约肌的python绑定+
PySPX的Python项目详细描述
PYSPx
这个存储库包含一个python包,它为SPHINCS+提供绑定。它支持作为the SPHINCS+ submission到NIST's Post-Quantum Cryptography Standardization project的一部分包含的所有参数集。
虽然这个包在功能上是完整的,但它可能仍然会受到一些小的api更改的影响。 目前,绑定只包装引用代码。针对特定平台(如支持avx2或aesni的机器)优化的代码将被忽略。
安装
包是available on PyPI,只需调用pip install pyspx
即可安装。
对于Linux,二进制控制盘基于manylinux1
docker映像可用。在其他平台上,编译sphincs+代码可能需要一些时间。目前,sphincsplus
引用代码的sha256函数需要openssl
。从源代码处编译时,请确保使用开发文件安装openssl。
api
安装包后,导入sphincs+的特定实例,如下所示(例如,对于shake256-128f
):
import pyspx.shake256_128f
这将公开以下直接的函数。所有参数都假定为bytes
对象。类似地,返回的密钥和签名是bytes
。verify
函数返回一个布尔值,指示成功或失败。
>>> public_key, secret_key = pyspx.shake256_128f.generate_keypair(seed)
>>> signature = pyspx.shake256_128f.sign(message, secret_key)
>>> pyspx.shake256_128f.verify(message, signature, public_key)
True
此外,由于选定的参数集,以下属性将显示预期的大小:
>>> pyspx.shake256_128f.crypto_sign_BYTES
29792
>>> pyspx.shake256_128f.crypto_sign_PUBLICKEYBYTES
64
>>> pyspx.shake256_128f.crypto_sign_SECRETKEYBYTES
128
>>> pyspx.shake256_128f.crypto_sign_SEEDBYTES
96
自定义括约肌+参数
使用附加的括约肌+参数进行编译相当容易。
为此,克隆存储库,初始化src/sphincsplus
子模块,
并将新参数集添加到src/sphincsplus/ref/params
。
确保遵循params-sphincs-[parameters-shorthand].h
命名约定。
从这个修改过的源安装python包将使用上述api公开参数集。