2016-08-19 5 views
1

Я использую pkcs11 lib для этого, но я не могу найти атрибут, соответствующий универсальномуPrincipalName, которое я хочу сохранить в своей программе.Как получить объект 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 'thefo[email protected]' 
      } 
      } 

Как я могу получить «[email protected]», чтобы сохранить это поле в переменной.

Я думаю, что нужно использовать CK_ATTRIBUTEs, но никто, кажется, не соответствует universalPrincipalName (т.е. «[email protected]»)

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

C_GetAttributeValue(hSession, privKeyObject, getattribute, size); 

ли C_GetAttributeValue право функции, чтобы получить эту информацию или может быть, есть еще один способ получить универсальное имяPrincipalName?

ответ

1

Для UPN не существует стандартного атрибута PKCS # 11. Вам необходимо прочитать весь сертификат (атрибут CKA_VALUE объекта сертификата) и проанализировать его самостоятельно.

+0

Я не знаю, как разбирать сертификат. Как я могу сказать, чтобы просто прочитать UPN из соответствующего идентификатора объекта? Есть функция, чтобы получить имя идентификатора объекта? – poloDD

+0

С \t \t \t \t данные CK_ATTRIBUTE [2] = { \t \t \t \t \t {CKA_LABEL, NULL_PTR, 0}, \t \t \t \t \t {CKA_VALUE, NULL_PTR, 0}, \t \t \t \t}; Я получаю это от C_GetAttributeValue: data [1] .pValue = 0 0 Ġ8 [ j 0. Поэтому я не могу разобрать его, чтобы получить UPN. Нужно ли мне декодировать результат pValue? – poloDD

 Смежные вопросы

  • Нет связанных вопросов^_^