如何从智能卡获取universalPrincipalName对象?

时间:2016-08-19 13:24:02

标签: c smartcard pkcs#11

我正在使用pkcs11 lib来完成它,但我找不到与我想要存储在我的程序中的universalPrincipalName相对应的属性。

以下是dumpasn1的结果:

SEQUENCE {
   OBJECT IDENTIFIER subjectAltName (52 565 529 177) 
   OCTET STRING, encapsulates {
     SEQUENCE {
        [0] {
          OBJECT IDENTIFIER
            universalPrincipalName (1 783 756 578 457 155 473 200 654 565)
          [0] {
            UTF8String 'thefoo.bar@foo.com'
            }
          }

如何让'thefoo.bar@foo.com'将该字段存储在变量中。

我想我需要使用CK_ATTRIBUTE,但似乎没有一个对应于universalPrincipalName(即'thefoo.bar@foo.com')

CK_ATTRIBUTE getattribute[] = {
            {CKA_WHICH_ONE_TO_USE, NULL_PTR, 0}
    };

C_GetAttributeValue(hSession, privKeyObject, getattribute, size);

C_GetAttributeValue是否是获取此信息的正确函数,或者是否有其他方法可以获取universalPrincipalName?

1 个答案:

答案 0 :(得分:1)

没有为UPN定义标准的PKCS#11属性。您需要读取整个证书(证书对象的CKA_VALUE属性)并自行解析。