如何通过python从智能卡读取证书?

如何通过python从智能卡读取证书?,python,smartcard,wincrypt,pyscard,Python,Smartcard,Wincrypt,Pyscard,我有一张智能卡(实际上是USB令牌),上面写着一些证书和密钥。现在我需要在Windows上使用python检索此证书。如何实现这一目标 我查看了pyscard包,但它似乎太低级了,可能不是最简单的方法。但是如果你知道这个低级的答案,那么你的帮助将被感激。 似乎pywin32(Win32 Crypt)中的CryptAcquireContext函数允许我使用智能卡中的私钥进行加密,但我无法获取证书本身 你有什么建议吗?不过我自己找到了答案。希望它能帮助别人: 通常,智能卡制造商提供一个实现标准的库(

我有一张智能卡(实际上是USB令牌),上面写着一些证书和密钥。现在我需要在Windows上使用python检索此证书。如何实现这一目标

我查看了
pyscard
包,但它似乎太低级了,可能不是最简单的方法。但是如果你知道这个低级的答案,那么你的帮助将被感激。
似乎pywin32(Win32 Crypt)中的
CryptAcquireContext
函数允许我使用智能卡中的私钥进行加密,但我无法获取证书本身


你有什么建议吗?

不过我自己找到了答案。希望它能帮助别人:
通常,智能卡制造商提供一个实现标准的库(
.so
.dll
) 有几种解决方案可用于通过此库与智能卡通信。例如:(CLI接口),(python包装器)

以下是一个如何使用PyKCS11实现的示例:

来自asn1crypto导入x509
从PyKCS11导入*
pkcs11=PyKCS11Lib()
pkcs11.荷载(“”)
#通过pkcs11.getSlotList(tokenPresent=False)获取插槽值。通常是0
session=pkcs11.openSession(插槽、CKF_串行_会话、CKF_RW_会话)
session.login(“”)
结果=[]
certs=session.findObjects([(CKA_类,CKO_证书)])
对于证书中的证书:
cka\u值,cka\u id=session.getAttributeValue(证书,[cka\u值,cka\u id])
证书编号=字节(cka值)
cert=x509.Certificate.load(证书编号)
结果追加(证书)
打印(结果)

通过这种方式,我可以在Linux和Windows上列出智能卡上的证书

我正在尝试创建一个python脚本,该脚本使用智能卡身份验证登录网站。你能帮我吗?