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 .
Tópicos relacionados