Attributi CMC
In pratica, la struttura di una richiesta CMC, illustrata nella sintassi seguente, è relativamente complessa perché spesso contiene richieste annidate. Ad esempio, una richiesta CMC può contenere zero o una richiesta PKCS #10 in una sequenza TaggedRequest e può contenere zero o un messaggio PKCS #7 in una sequenza TaggedContentInfo . Ogni messaggio PKCS #7 annidato può contenere una richiesta CMC che, a sua volta, può contenere più richieste. Il numero di livelli di annidamento è teoricamente illimitato, ma l'autorità di certificazione (CA) è in genere configurata per limitare le dimensioni di una richiesta. Gli attributi possono essere applicati alla richiesta di primo livello o alle richieste annidate. Questo argomento è illustrato nelle sezioni seguenti.
Struttura CMCData
Una richiesta CMC contiene sequenze di strutture 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
Struttura TaggedAttribute
Gli attributi vengono inclusi in una richiesta di certificato CMC aggiungendoli alla raccolta TaggedAttribute . Ogni struttura dell'insieme contiene un ID intero, un identificatore di oggetto ASN.1 (OID) e un set di valori. I valori possibili possono essere uno dei seguenti.
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 gli attributi in questa struttura si applicano a una richiesta PKCS #10 nidificata, il campo certReferences conterrà BodyPartID che identifica la richiesta. Se gli attributi si applicano a una richiesta CMC nidificata, il campo pkiDataReference conterrà il BodyPartID della richiesta. Attualmente, solo uno di questi campi può essere diverso da zero. Gli attributi che è possibile includere sono elencati nell'argomento Attributi supportati .
CmcAddExtensions
Questa struttura può contenere estensioni X.509 versione 3 e estensioni definite da Microsoft. Questo attributo viene definito usando l'interfaccia IX509AttributeExtensions . Se le estensioni si applicano a una richiesta PKCS #10 annidata, il campo certReferences conterrà BodyPartID che identifica la richiesta. Se le estensioni si applicano a una richiesta CMC nidificata, il campo pkiDataReference conterrà il BodyPartID della richiesta. Attualmente, solo uno di questi campi può essere diverso da zero.
SenderNonce
Un nonce è dati binari casuali o pseudo-casuali che possono essere inclusi in una richiesta di certificato e in una transazione di risposta per garantire che la risposta o la richiesta non sia una ripetizione di un messaggio precedente. Per altre informazioni, vedere la proprietà SenderNonce .
TransactID
È possibile tenere traccia di una richiesta di certificato round trip e di una transazione di risposta usando un identificatore. Il client genera un ID transazione e lo mantiene finché l'autorità di certificazione o di registrazione non risponde con un messaggio che completa la transazione. La risposta include l'identificatore. Per altre informazioni, vedere la proprietà TransactionId .
RegInfo
Questo attributo può essere usato per contenere tutte le informazioni di registrazione che il client sceglie di inserire nella richiesta CMC. Il valore dell'attributo è una stringa che contiene coppie nome-valore concatenate. Per altre informazioni, vedere la proprietà NameValuePairs .
Argomenti correlati