【发布时间】:2020-01-20 07:40:02
【问题描述】:
我尝试通过 C++ cryptoAPI 进行签名和验证,效果很好。 cryptoAPI 使用 Windows 上的商店(个人)中的证书来执行此操作。我可以在没有导出私钥或输入密码的情况下通过 python 做同样的事情吗?
我尝试了 pycrypto、oscrypto、wincertstore 模块,但他们做不到。
【问题讨论】:
-
cryptography.io 具有 openssl 的所有功能,并拥有一整套用于处理 x509 证书的工具。另外 1) PyCrypto 已被弃用;请改用 PyCryptoDome。 2)这个问题离题了,这就是为什么我必须投票结束这个问题。
-
@Legorooj 我找不到相关的 API 来从“我的”证书存储中请求证书来签名和验证签名。你能给我看看页面吗?为什么这个问题跑题了?
-
嗯。刚刚发现您可以在
ssllib 中列出所有带有构建的证书;ssl.enum_certificates(store_name),其中商店名称为CA、ROOT或MY。我假设最后一个 - 这有帮助吗?它返回列表。您可以搜索这些然后将证书从商店中加载出来吗? -
@Legorooj 这当然对签名部分没有帮助。请注意,签名不是证书的功能。但是,Microsoft 将存储中的私钥视为证书的一部分。这是一个愚蠢的设计错误——不幸的是,在他们指定的 API 中有很多错误。
-
@Assam 好的,这更难,但我现在能想到的唯一解决方案似乎是;编写自定义 C++ 扩展。 docs.python.org/3/extending/extending.html
标签: python cryptography x509certificate cryptoapi