CMC 屬性
實際上,下列語法所顯示的 CMC 要求結構相對複雜,因為它通常包含巢狀要求。 例如,CMC 要求可以在 TaggedRequest 序列中包含零或一個 PKCS #10 要求,而且它可以在 TaggedContentInfo 序列中包含零或一個 PKCS #7 訊息。 每個巢狀 PKCS #7 訊息都可以包含 CMC 要求,進而包含更多要求。 巢狀層級的數目理論上是無限制的,但證書頒發機構單位 (CA) 通常會設定為限制要求的大小。 屬性可以套用至最上層要求或巢狀要求。 下列各節將討論這一點。
CMCData 結構
CMC 要求包含 TaggedAttribute、TaggedRequest和 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
TaggedAttribute 結構
屬性會藉由將屬性新增至 TaggedAttribute 集合,以包含在 CMC 憑證要求中。 集合中的每個結構都包含整數標識碼、ASN.1 對象標識碼(OID),以及一組值。 可能的值可以是下列任一項。
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
如果這個結構中的屬性套用至巢狀 PKCS #10 要求,certReferences 字段將包含可識別要求的 BodyPartID。 如果屬性套用至巢狀 CMC 要求,則 pkiDataReference 欄位 會包含要求的 BodyPartID。 目前,這些欄位中只有一個可以是非零。 可包含的屬性會列在 支援的屬性 主題中。
CmcAddExtensions
此結構可以包含 X.509 第 3 版延伸模組,以及Microsoft所定義的延伸模組。 此屬性是使用 IX509AttributeExtensions 介面來定義。 如果延伸模組套用至巢狀 PKCS #10 要求,certReferences 字段將會包含可識別要求的 BodyPartID。 如果延伸模組套用至巢狀 CMC 要求,pkiDataReference 欄位將包含要求的 BodyPartID。 目前,這些欄位中只有一個可以是非零。
SenderNonce
Nonce 是隨機或虛擬隨機二進位數據,可包含在憑證要求和回應交易中,以協助確保回應或要求不是先前訊息的重複。 如需詳細資訊,請參閱 SenderNonce 屬性。
TransactID
您可以使用識別碼來追蹤來回憑證要求和回應交易。 用戶端會產生交易標識碼,並保留它,直到憑證或註冊授權單位回應完成交易的訊息為止。 回應包含標識碼。 如需詳細資訊,請參閱 TransactionId 屬性。
RegInfo
這個屬性可用來包含客戶端選擇放入 CMC 要求的任何註冊資訊。 屬性值是包含串連名稱/值組的字串。 如需詳細資訊,請參閱 NameValuePairs 屬性。
相關主題