Compartilhar via


Arquitetura de atributo

As interfaces a seguir são usadas para adicionar atributos a uma solicitação de certificado:

A arquitetura segue a definida no módulo ASN.1 da sintaxe de solicitação de certificação PKCS nº 10.

CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 ANY,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type       EncodedObjectID,
   values     AttributeSetValue
}

A coleçãoICryptAttributes decorresponde ao campo de atributos e cada objetoICryptAttributena coleção corresponde a uma estrutura de Atributo do ASN.1.

Cada de atributo consiste em um OID (identificador de objeto) e zero ou mais valores associados ao OID. Um único par de valor OID é representado por uma interfaceIX509Attribute. Você pode usar uma coleção IX509Attributes para inicializar um objetoICryptAttribute, mas cada atributo na coleção deve ser associado à mesma OID. Normalmente, um atributo tem apenas um valor.

Você pode usar qualquer uma das seguintes interfaces, que derivam de IX509Attribute, para criar um único par de atributos OID/valor:

  • IX509AttributeClientId
  • IX509AttributeExtensions
  • IX509AttributeArchiveKey
  • IX509AttributeArchiveKeyHash
  • IX509AttributeCspProvider
  • IX509AttributeOSVersion
  • IX509AttributeRenewalCertificate

Por exemplo, o procedimento a seguir mostra como criar um atributo ClientId.

Para criar um atributo ClientId

  1. Recupere um objeto ICryptAttributes de um objeto IX509CertificateRequestPkcs10 ou objeto IX509CertificateRequestCmc.
  2. Crie e inicialize um objetoIX509AttributeClientId.
  3. Crie uma coleçãoIX509Attributes e adicione o objeto IX509AttributeClientId.
  4. Use a coleçãoIX509Attributes para inicializar um objetoICryptAttribute.
  5. Adicione o objetoICryptAttribute à coleção recuperada na etapa 1.

O exemplo a seguir mostra a saída ASN.1 do atributo ClientId. O atributo contém o nome DNS do computador no qual a solicitação foi gerada (test3d.jdomcsc.nttest.microsoft.com), o nome SAM do usuário (JDOMCSC\administrator) e o nome do aplicativo que gerou a solicitação (certreq).

0136: 30 57; SEQUENCE (57 Bytes)
0138: |  06 09                            ; OBJECT_ID (9 Bytes)
013a: |  |  2b 06 01 04 01 82 37 15  14
      |  |     ; 1.3.6.1.4.1.311.21.20 Client Information
0143: |  |  31 4a                         ; SET (4a Bytes)
0145: |  |     30 48                      ; SEQUENCE (48 Bytes)
0147: |  |        02 01                   ; INTEGER (1 Bytes)
0149: |  |        |  09
014a: |  |        0c 23                   ; UTF8_STRING (23 Bytes)
014c: |  |        |  74 65 73 74 33 64 2e 6a  64 6f 6d 63 73 63 2e 6e 
015c: |  |        |  74 74 65 73 74 2e 6d 69  63 72 6f 73 6f 66 74 2e 
016c: |  |        |  63 6f 6d                                         
      |  |        |     ; "test3d.jdomcsc.nttest.microsoft.com"
016f: |  |        0c 15                   ; UTF8_STRING (15 Bytes)
0171: |  |        |  4a 44 4f 4d 43 53 43 5c  61 64 6d 69 6e 69 73 74 
0181: |  |        |  72 61 74 6f 72                                   
      |  |        |     ; "JDOMCSC\administrator"
0186: |  |        0c 07                   ; UTF8_STRING (7 Bytes)
0188: |  |           63 65 72 74 72 65 71                             
      |  |              ; "certreq"

ICryptAttribute

ICryptAttributes

IX509Attribute

IX509Attributes