Compartilhar via


Atributos do CMC

Na prática, a estrutura de uma solicitação CMC, mostrada pela sintaxe a seguir, é relativamente complexa porque geralmente contém solicitações aninhadas. Por exemplo, uma solicitação CMC pode conter zero ou uma solicitação PKCS #10 em uma sequência de TaggedRequest e pode conter zero ou uma mensagem PKCS #7 em uma sequência de TaggedContentInfo. Cada mensagem PKCS nº 7 aninhada pode conter uma solicitação CMC que pode, por sua vez, conter mais solicitações. O número de níveis de aninhamento é teoricamente ilimitado, mas a AC (autoridade de certificação) normalmente é configurada para limitar o tamanho de uma solicitação. Os atributos podem ser aplicados à solicitação de nível superior ou às solicitações aninhadas. Isso é discutido nas seções a seguir.

Estrutura CMCData

Uma solicitação CMC contém sequências de estruturas TaggedAttribute, TaggedRequeste taggedContentInfo ASN.1.

CmcData ::= SEQUENCE 
{
   controlSequence         ControlSequence,
   reqSequence             ReqSequence,
   cmsSequence             CmsSequence,
   otherMsgSequence        OtherMsgSequence
}


ControlSequence  ::=    SEQUENCE OF TaggedAttribute
ReqSequence      ::=    SEQUENCE OF TaggedRequest
CmsSequence      ::=    SEQUENCE OF TaggedContentInfo

TaggedAttribute ::= SEQUENCE 
{
   bodyPartID              BodyPartID,
   type                    EncodedObjectID,
   values                  AttributeSetValue
}

TaggedRequest ::= CHOICE 
{
   tcr                     [0] IMPLICIT TaggedCertificationRequest
}

TaggedContentInfo ::= SEQUENCE 
{
   bodyPartID              BodyPartID,
   contentInfo             ANY
}

BodyPartID ::= INTEGER (0..4294967295)
EncodedObjectID ::= OBJECT IDENTIFIER
AttributeSetValue ::= SET OF ANY

Estrutura TaggedAttribute

Os atributos são incluídos em uma solicitação de certificado CMC adicionando-os à coleção TaggedAttribute. Cada estrutura na coleção contém uma ID de inteiro, um OID (identificador de objeto ASN.1) e um conjunto de valores. Os valores possíveis podem ser qualquer um dos seguintes.

CmcAddAttributes ::= SEQUENCE 
{
   pkiDataReference        BodyPartID,
   certReferences          BodyPartIDSequence,
   attributes              Attributes
}

Attributes ::= SET OF Attribute
Attribute ::= SEQUENCE 
{
   type       EncodedObjectID,
   values     AttributeSetValue
}

CmcAddExtensions ::= SEQUENCE 
{
   pkiDataReference        BodyPartID,
   certReferences          BodyPartIDSequence,
   extensions              Extensions
}

Extensions ::= SEQUENCE OF Extension

Extension ::= SEQUENCE 
{
   extnId              EncodedObjectID,
   critical            BOOLEAN DEFAULT FALSE,
   extnValue           OCTETSTRING
}

SenderNonce ::= OCTET STRING

TransactID ::= OCTET STRING

RegInfo ::= OCTET STRING

CMCAddAttributes

Se os atributos nessa estrutura se aplicarem a uma solicitação PKCS nº 10 aninhada, o campo certReferences conterá a BodyPartID que identifica a solicitação. Se os atributos se aplicarem a uma solicitação CMC aninhada, o campo pkiDataReference conterá o BodyPartID da solicitação. Atualmente, apenas um desses campos pode ser diferente de zero. Os atributos que podem ser incluídos estão listados no tópico Atributos com Suporte.

CmcAddExtensions

Essa estrutura pode conter extensões X.509 versão 3 mais extensões definidas pela Microsoft. Esse atributo é definido usando a interfaceIX509AttributeExtensions. Se as extensões se aplicarem a uma solicitação PKCS nº 10 aninhada, o campo certReferences conterá o BodyPartID que identifica a solicitação. Se as extensões se aplicarem a uma solicitação CMC aninhada, o campo pkiDataReference conterá o BodyPartID da solicitação. Atualmente, apenas um desses campos pode ser diferente de zero.

SenderNonce

Um nonce é dados binários aleatórios ou pseudo-aleatórios que podem ser incluídos em uma solicitação de certificado e transação de resposta para ajudar a garantir que a resposta ou solicitação não seja uma repetição de uma mensagem anterior. Para obter mais informações, consulte a propriedadeSenderNonce.

TransactID

Uma solicitação de certificado de ida e volta e uma transação de resposta podem ser rastreadas usando um identificador. O cliente gera uma ID de transação e a retém até que a autoridade de registro ou certificado responda com uma mensagem que conclua a transação. A resposta inclui o identificador. Para obter mais informações, consulte a propriedade TransactionId.

RegInfo

Esse atributo pode ser usado para conter qualquer informação de registro que o cliente opte por colocar na solicitação do CMC. O valor do atributo é uma cadeia de caracteres que contém pares nome-valor concatenados. Para obter mais informações, consulte a propriedadeNameValuePairs.

atributos com suporte