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 .

Attributi supportati