実際には、次の構文で示す CMC 要求の構造は、入れ子になった要求が含まれていることが多いため、比較的複雑です。 たとえば、CMC 要求には、TaggedRequest シーケンスに 0 個または 1 個の PKCS #10 要求を含めることができます。また、TaggedContentInfo シーケンスに 0 個または 1 個の 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 証明書要求に含まれます。 コレクション内の各構造体には、整数 ID、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 が含まれます。 現時点では、これらのフィールドのうち 1 つだけを 0 以外にできます。 含めることができる属性は、「サポートされる属性の 」トピックに記載されています。
CmcAddExtensions
この構造体には、X.509 バージョン 3 の拡張機能と、Microsoft によって定義された拡張機能を含めることができます。 この属性は、IX509AttributeExtensions インターフェイスを使用して定義されます。 入れ子になった PKCS #10 要求に拡張機能が適用される場合、certReferences フィールドには、要求を識別する BodyPartID が含まれます。 拡張が入れ子になった CMC 要求に適用される場合、pkiDataReference フィールドには、要求の BodyPartID が含まれます。 現時点では、これらのフィールドのうち 1 つだけを 0 以外にできます。
SenderNonce
nonce は、証明書要求と応答トランザクションに含めることができるランダムまたは擬似ランダムなバイナリ データであり、応答または要求が前のメッセージの繰り返しでないことを確認するのに役立ちます。 詳細については、SenderNonce プロパティを参照してください。
TransactID
ラウンド トリップ証明書要求と応答トランザクションは、識別子を使用して追跡できます。 クライアントはトランザクション ID を生成し、証明書または登録機関がトランザクションを完了するメッセージで応答するまで保持します。 応答には識別子が含まれます。 詳細については、TransactionId プロパティを参照してください。
RegInfo
この属性を使用すると、クライアントが CMC 要求に入れることを選択した登録情報を含めることができます。 属性値は、連結された名前と値のペアを含む文字列です。 詳細については、NameValuePairs プロパティを参照してください。
関連トピック
-
サポートされている属性 を する