Atributos 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 TaggedRequest e pode conter zero ou uma mensagem PKCS #7 em uma sequência 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, TaggedRequest e 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á o 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 interface IX509AttributeExtensions . 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 são 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 a solicitação não seja uma repetição de uma mensagem anterior. Para obter mais informações, consulte a propriedade SenderNonce .

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 CMC. O valor do atributo é cadeia de caracteres que contém pares nome-valor concatenados. Para obter mais informações, consulte a propriedade NameValuePairs .

Atributos com suporte