我们需要在两种签名方案中进行选择:
为此我们的python软件需要支持这个方案之一。目前出于某些政治原因,首选ECDSA解决方案。
任何python加密模块(M2Crypto,...)都支持ECDSA解决方案吗?你有一个例子吗?
即使对于openssl,ECDSA的支持似乎也很年轻。
提前致谢
答案 0 :(得分:1)
M2Crypto,但可以选择停用它。例如,基于Fedora的系统在OpenSSL和M2Crypto中禁用ECDSA。 M2Crypto也有一些SMIME support,但由于我没有太多使用它,我不确定在这种情况下这是否会有所帮助。请参阅M2Crypto SMIME doc和SMIME unit tests,以及ec unit tests。
答案 1 :(得分:0)
OpenSSL库支持椭圆曲线加密(ECDSA)以及更常见的RSA。我建议使用pyOpenSSL桥。
答案 2 :(得分:0)
您可以尝试使用python ecdsa包,使用Python3:
pip3 install ecdsa
用法:
from ecdsa import SigningKey
sk = SigningKey.generate() # uses NIST192p
vk = sk.get_verifying_key()
sig = sk.sign(b"message")
vk.verify(sig, b"message") # True
使用公钥验证现有签名:
from ecdsa import VerifyingKey
message = b"message"
public_key = '7bc9c7867cffb07d3443754ecd3d0beb6c4a2f5b0a06ea96542a1601b87892371485fda33fe28ed1c1669828a4bb2514'
sig = '8eb2c6bcd5baf7121facfe6b733a7835d01cef3d430a05a4bcc6c5fbae37d64fb7a6f815bb96ea4f7ed8ea0ab7fd5bc9'
vk = VerifyingKey.from_string(bytes.fromhex(public_key))
vk.verify(bytes.fromhex(sig), message) # True
该软件包也与Python 2兼容