Share via


Arquitetura de atributo

As seguintes interfaces 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ção ICryptAttributes corresponde ao campo de atributos e cada objeto ICryptAttribute na coleção corresponde a uma estrutura atributo ASN.1.

Cada 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 interface IX509Attribute . Você pode usar uma coleção IX509Attributes para inicializar um objeto ICryptAttribute , 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, derivadas de IX509Attribute, para criar um único par de atributos OID/valor:

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