CryptMsgUpdate 関数 (wincrypt.h)
CryptMsgUpdate 関数は、暗号化メッセージに内容を追加します。 この関数を使用すると、 CryptMsgUpdate を繰り返し呼び出すことで、メッセージを 1 つずつ作成できます。 追加されたメッセージ コンテンツは、メッセージが CryptMsgOpenToEncode または CryptMsgOpenToDecode で開かれたかどうかに応じてエンコードまたはデコードされます。
構文
BOOL CryptMsgUpdate(
[in] HCRYPTMSG hCryptMsg,
[in] const BYTE *pbData,
[in] DWORD cbData,
[in] BOOL fFinal
);
パラメーター
[in] hCryptMsg
更新するメッセージの暗号化メッセージ ハンドル。
[in] pbData
エンコードまたはデコードされるデータを保持するバッファーへのポインター。
[in] cbData
pbData バッファー内のデータのバイト数。
[in] fFinal
エンコードまたはデコード用のデータの最後のブロックが処理されていることを示します。 このフラグの正しい使用法は、処理中のメッセージがデータをデタッチしたかどうかによって異なります。 デタッチされたデータをメッセージに含めることは、メッセージを開いた関数の呼び出しで dwFlags を CMSG_DETACHED_FLAG に設定することによって示されます。
CMSG_DETACHED_FLAGが設定されておらず、 メッセージが CryptMsgOpenToDecode または CryptMsgOpenToEncode を使用して開かれた場合、 fFinal は TRUE に設定され、 CryptMsgUpdate は 1 回だけ呼び出されます。
CMSG_DETACHED_FLAG フラグが設定され、メッセージが CryptMsgOpenToEncode を使用して開かれた場合、fFinal は CryptMsgUpdate の最後の呼び出しでのみ TRUE に設定されます。
CMSG_DETACHED_FLAG フラグが設定され、メッセージが CryptMsgOpenToDecode を使用して開かれた場合、ヘッダーが CryptMsgUpdate の 1 回の呼び出しで処理されるときに fFinal が TRUE に設定されます。 最後にデタッチされたデータ ブロックが処理されるまで、CryptMsgUpdate の後続の呼び出しでデタッチされたデータの処理中に FALSE に設定されます。 CryptMsgUpdate の最後の呼び出しでは、TRUE に設定されます。
デタッチされたデータがデコードされると、メッセージのヘッダーと内容が異なる BLOB に含まれます。 各 BLOB では、その BLOB に対して関数の最後の呼び出しが行われるときに、 fFinal を TRUE に設定する必要があります。
戻り値
関数が成功した場合、戻り値は 0 以外 (TRUE) になります。
関数が失敗した場合、戻り値は 0 (FALSE) になります。 拡張エラー情報については、 GetLastError を呼び出します。
CryptMsgOpenToDecode および CryptMsgOpenToEncode の pStreamInfo によって指定されたアプリケーション定義コールバック関数で発生したエラーは、ストリーミングが使用されている場合に CryptMsgUpdate に反映される可能性があります。 この場合、コールバック関数が戻った後に SetLastError は CryptMsgUpdate によって呼び出されません。これにより、アプリケーションの制御下で発生したエラーが保持されます。 アプリケーションがストリーミング データの処理中にエラーが発生した場合に SetLastError を呼び出すには、コールバック関数 (または呼び出す API の 1 つ) が必要です。
次の表に、 GetLastError 関数によって最も一般的に返されるエラー コードを示します。
リターン コード | 説明 |
---|---|
|
メッセージ型が無効です。 |
|
暗号化操作の実行中にエラーが発生しました。 |
|
オブジェクト識別子の形式が正しくありません。 |
|
メッセージは期待どおりにエンコードされません。 |
|
暗号化アルゴリズムは不明です。 |
|
1 つ以上の引数が無効です。 |
|
メモリが不足しました。 |
伝達されたエラーは、次のいずれかの関数から発生する可能性があります。
関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |