次の方法で共有


CryptSignAndEncryptMessage 関数 (wincrypt.h)

CryptSignAndEncryptMessage 関数は、指定されたコンテンツのハッシュを作成し、ハッシュに署名し、コンテンツを暗号化し、暗号化されたコンテンツと署名されたハッシュをハッシュしてから、暗号化されたコンテンツと署名されたハッシュの両方をエンコードします。 結果は、ハッシュが最初に署名されてから暗号化された場合と同じです。

構文

BOOL CryptSignAndEncryptMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA    pSignPara,
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeSignedAndEncrypted,
  [in]      DWORD                       cbToBeSignedAndEncrypted,
  [out]     BYTE                        *pbSignedAndEncryptedBlob,
  [in, out] DWORD                       *pcbSignedAndEncryptedBlob
);

パラメーター

[in] pSignPara

シグネチャ パラメーターを含む CRYPT_SIGN_MESSAGE_PARA 構造体へのポインター。

[in] pEncryptPara

暗号化パラメーターを含む CRYPT_ENCRYPT_MESSAGE_PARA 構造体へのポインター。

[in] cRecipientCert

rgpRecipientCert 内の配列要素の数。

[in] rgpRecipientCert

CERT_CONTEXT構造体へのポインターの配列。 各構造体は、メッセージの目的の受信者の証明書です。

[in] pbToBeSignedAndEncrypted

署名および暗号化されるコンテンツを含むバッファーへのポインター。

[in] cbToBeSignedAndEncrypted

pbToBeSignedAndEncrypted バッファーのサイズ (バイト単位)。

[out] pbSignedAndEncryptedBlob

暗号化およびエンコードされたメッセージを受信するバッファーへのポインター。

このパラメーターは、メモリ割り当てのためにこの情報のサイズを設定するために NULL にすることができます 。 詳細については、「 不明な長さのデータの取得」を参照してください。

[in, out] pcbSignedAndEncryptedBlob

pbSignedAndEncryptedBlob が指すバッファーのサイズをバイト単位で指定する DWORD へのポインター。 関数が戻るとき、この変数には、*pbSignedAndEncryptedBlob にコピーされた署名済みおよび暗号化されたメッセージのサイズ (バイト単位) が含まれます。

メモ 返されるデータを処理する場合、アプリケーションは返されるデータの実際のサイズを使用する必要があります。 実際のサイズは、入力時に指定されたバッファーのサイズよりも少し小さくすることができます。 (入力では、バッファー サイズは通常、可能な最大の出力データがバッファーに収まるように十分な大きさで指定されます)。出力時に、このパラメーターが指す変数が更新され、バッファーにコピーされたデータの実際のサイズが反映されます。
 

戻り値

関数が成功した場合、戻り値は 0 以外 (TRUE) になります。

関数が失敗した場合、戻り値は 0 (FALSE) になります。

拡張エラー情報については、 GetLastError を呼び出します。

GetLastError 関数によって最も一般的に返されるエラー コードを次に示します。

リターン コード 説明
ERROR_MORE_DATA
pbSignedAndEncryptedBlob パラメーターで指定されたバッファーが、返されるデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATAコードを設定し、必要なバッファー サイズをバイト単位で pcbSignedAndEncryptedBlob が指す変数に格納します。
 
メモ 呼び出された関数 CryptSignMessageCryptEncryptMessage からの エラーは、この関数に反映される可能性があります。
 

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Crypt32.lib
[DLL] Crypt32.dll

こちらもご覧ください

CryptDecryptAndVerifyMessageSignature

CryptSignMessage

簡略化されたメッセージ関数