Arquitetura de atributo
As interfaces a seguir são usadas para adicionar atributos a uma solicitação de certificado:
- ICryptAttribute
- ICryptAttributes
- IX509Attribute
- IX509Attributes
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
- Recupere um objeto ICryptAttributes de um objeto IX509CertificateRequestPkcs10 ou objeto IX509CertificateRequestCmc.
- Crie e inicialize um objetoIX509AttributeClientId.
- Crie uma coleçãoIX509Attributes e adicione o objeto IX509AttributeClientId.
- Use a coleçãoIX509Attributes para inicializar um objetoICryptAttribute.
- 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"
Tópicos relacionados