CMC 屬性
實際上,由下列語法顯示的 CMC 要求結構相當複雜,因為它通常包含巢狀要求。 例如,CMC 要求可以在 TaggedRequest 序列中包含零或一個 PKCS #10 要求,而且它可以在 TaggedContentInfo 序列中包含零或一個 PKCS #7 訊息。 每個巢狀 PKCS #7 訊息都可以包含 CMC 要求,進而包含更多要求。 巢狀層級的數目理論上是無限制的,但憑證授權單位單位 (CA) 通常會設定為限制要求的大小。 屬性可以套用至最上層要求或巢狀要求。 以下各節將討論這一點。
CMCData 結構
CMC 要求包含 TagedAttribute、 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
TagedAttribute 結構
屬性會加入 至 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 屬性。
相關主題