PyKCS11获取令牌证书

2024-10-05 12:27:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用PyKCS11库从令牌设备读取证书。在

这是我现在使用的代码,问题是属性是二进制的。在

pkcs11 = PyKCS11Lib()
pkcs11.load("C:\Windows\System32\eTPKCS11.dll")
slot = pkcs11.getSlotList()[2]
session = pkcs11.openSession(slot, PyKCS11.CKF_SERIAL_SESSION)
objects = session.findObjects([(PyKCS11.CKA_CLASS, PyKCS11.CKO_CERTIFICATE)])
all_attributes = [PyKCS11.CKA_SUBJECT, PyKCS11.CKA_VALUE, PyKCS11.CKA_ISSUER, PyKCS11.CKA_CERTIFICATE_CATEGORY, PyKCS11.CKA_END_DATE]

for object in objects:
    try:
        attributes = session.getAttributeValue(object, all_attributes)
    except PyKCS11.PyKCS11Error as e:
        continue

    attrDict = dict(list(zip(all_attributes, attributes)))

    if attrDict[PyKCS11.CKA_CERTIFICATE_CATEGORY] == (0x2, 0x0, 0x0, 0x0):
        continue

    print attrDict[PyKCS11.CKA_SUBJECT]
    print attrDict[PyKCS11.CKA_VALUE]

session.closeSession()

它打印的是一个元组,类似于:(48L,130L,5L,192L,48L,130L,4L,168L)。在

如何提取使用者名称和x509证书?四

编辑

我终于解决了。为了防止其他人陷入困境,这是获得证书的方法:

^{pr2}$

Tags: objectsobjectvaluesessioncertificateallattributes证书

热门问题