Partilhar via


Arquitetura de atributos

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 #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 corresponde ao campo atributos e cada objeto ICryptAttribute na coleção corresponde a uma estrutura ASN.1 Attribute.

Cada de atributo consiste em um identificador de objeto (OID) e zero ou mais valores associados ao OID. Um único par de valores OID é representado por uma interfaceIX509Attribute. Você pode usar uma coleçãoIX509Attributes para inicializar um ICryptAttribute objeto, mas cada atributo na coleção deve ser associado ao mesmo 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/value:

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

Para criar um atributo ClientId

  1. Recupere um objeto ICryptAttributes de umIX509CertificateRequestPkcs10 ou objeto de IX509CertificateRequestCmc.
  2. Crie e inicialize um objeto IX509AttributeClientId.
  3. Crie uma coleçãoIX509Attributes e adicione o objeto IX509AttributeClientId.
  4. Use a coleçãoIX509Attributes para inicializar um ICryptAttribute objeto.
  5. Adicione o ICryptAttribute objeto à 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

IX509Atributos