Arquitectura de atributos

Las interfaces siguientes se usan para agregar atributos a una solicitud de certificado:

La arquitectura sigue que se define en el módulo ASN.1 de la sintaxis de solicitud de certificación PKCS #10.

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

Attributes ::= SET OF Attribute

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

La colección ICryptAttributes corresponde al campo de atributos y cada objeto ICryptAttribute de la colección corresponde a una estructura de atributo ASN.1.

Cada atributo consta de un identificador de objeto (OID) y cero o más valores asociados al OID. Un único par OID-value se representa mediante una interfaz IX509Attribute . Puede usar una colección IX509Attributes para inicializar un objeto ICryptAttribute , pero cada atributo de la colección debe estar asociado con el mismo OID. Normalmente, un atributo solo tiene un valor.

Puede usar cualquiera de las siguientes interfaces, que derivan de IX509Attribute, para crear un único par de atributos OID/valor:

Por ejemplo, el procedimiento siguiente muestra cómo crear un atributo ClientId .

Para crear un atributo ClientId

  1. Recupere un objeto ICryptAttributes de un objeto IX509CertificateRequestPkcs10 o IX509CertificateRequestCmc .
  2. Cree e inicialice un objeto IX509AttributeClientId .
  3. Cree una colección IX509Attributes y agregue el objeto IX509AttributeClientId .
  4. Utilice la colección IX509Attributes para inicializar un objeto ICryptAttribute .
  5. Agregue el objeto ICryptAttribute a la colección recuperada en el paso 1.

En el ejemplo siguiente se muestra la salida ASN.1 del atributo ClientId . El atributo contiene el nombre DNS del equipo en el que se generó la solicitud (test3d.jdomcsc.nttest.microsoft.com), el nombre SAM del usuario (JDOMCSC\administrator) y el nombre de la aplicación que generó la solicitud (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