CryptMsgCalculateEncodedLength 関数 (wincrypt.h)
CryptMsgCalculateEncodedLength 関数は、エンコードするデータのメッセージの種類、エンコード パラメーター、および合計長を指定して、エンコードされた暗号化メッセージに必要な最大バイト数を計算します。 結果は常に、必要な実際のバイト数以上になることに注意してください。
構文
DWORD CryptMsgCalculateEncodedLength(
[in] DWORD dwMsgEncodingType,
[in] DWORD dwFlags,
[in] DWORD dwMsgType,
[in] void const *pvMsgEncodeInfo,
[in, optional] LPSTR pszInnerContentObjID,
[in] DWORD cbData
);
パラメーター
[in] dwMsgEncodingType
使用するエンコードの種類を指定します。 次の例に示すように、証明書と メッセージエンコードの両方の種類 をビットごとの OR 操作と組み合わせて指定することは、常に許容されます。
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING
現在定義されているエンコードの種類は次のとおりです。
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] dwFlags
現在定義されているフラグを次の表に示します。
値 | 説明 |
---|---|
|
ストリーミングされた出力に外部 ContentInfo ラッパー (PKCS #7 で定義) がないことを示します。 これにより、それを囲むメッセージにストリーミングするのに適しています。 |
|
CryptMsgUpdate の後続の呼び出しに対して、デタッチされたデータが提供されていることを示します。 |
|
エンベロープ されたメッセージ内に入れ子になるメッセージの DER エンコードのサイズを計算するために使用されます。 これは、ストリーミングが実行されている場合に特に便利です。 |
|
データ型以外の 内部コンテンツ は、OCTET STRING 内にカプセル化されます。 このフラグは、署名付きメッセージと封筒メッセージの両方に適用されます。 |
[in] dwMsgType
現在定義されているメッセージの種類を次の表に示します。
値 | 説明 |
---|---|
|
オクテット (BYTE) 文字列。 |
|
|
|
|
|
実装されていません。 |
|
|
|
実装されていません。 |
[in] pvMsgEncodeInfo
エンコードするデータへのポインター。 ポイントされるデータの種類は、 dwMsgType の値によって異なります。 詳細については、 dwMsgType テーブルを参照してください。
[in, optional] pszInnerContentObjID
CryptMsgUpdate に提供されたデータが既にエンコードされている CryptMsgCalculateEncodedLength を呼び出すと、pszInnerContentObjID で適切なオブジェクト識別子が渡されます。 pszInnerContentObjID が NULL の場合、内部コンテンツ タイプは以前にエンコードされていないと見なされ、オクテット文字列としてエンコードされ、型CMSG_DATA指定されます。
ストリーミングが使用されている場合、 pszInnerContentObjID は NULL またはszOID_RSA_dataである必要があります。
次のアルゴリズム オブジェクト識別子が一般的に使用されます。
- szOID_RSA_data
- szOID_RSA_signedData
- szOID_RSA_envelopedData
- szOID_RSA_signEnvData
- szOID_RSA_digestedData
- szOID_RSA_encryptedData
- SPC_INDIRECT_DATA_OBJID
[in] cbData
コンテンツのサイズ (バイト単位)。
戻り値
エンコードされた暗号化メッセージに必要な長さを返します。 この長さは正確な長さではない可能性がありますが、必要な長さよりも短くはありません。 関数が失敗した場合、0 が返されます。
拡張エラー情報を取得するには、 GetLastError 関数を使用します。 次の表に、最も一般的に返されるエラー コードを示します。
リターン コード | 説明 |
---|---|
|
メッセージ型が無効です。 |
|
暗号化アルゴリズムは不明です。 |
|
1 つ以上の引数が無効です。 |
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |