CryptDecryptAndVerifyMessageSignature 関数 (wincrypt.h)
CryptDecryptAndVerifyMessageSignature 関数は、メッセージの暗号化を解除し、その署名を検証します。
構文
BOOL CryptDecryptAndVerifyMessageSignature(
[in] PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
[in] PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
[in] DWORD dwSignerIndex,
[in] const BYTE *pbEncryptedBlob,
[in] DWORD cbEncryptedBlob,
[out, optional] BYTE *pbDecrypted,
[in, out, optional] DWORD *pcbDecrypted,
[out, optional] PCCERT_CONTEXT *ppXchgCert,
[out, optional] PCCERT_CONTEXT *ppSignerCert
);
パラメーター
[in] pDecryptPara
復号化パラメーターを含む CRYPT_DECRYPT_MESSAGE_PARA 構造体へのポインター。
[in] pVerifyPara
検証パラメーターを含む CRYPT_VERIFY_MESSAGE_PARA 構造体へのポインター。
[in] dwSignerIndex
メッセージの特定の署名者を識別します。 メッセージは複数の署名者によって署名でき、この関数は複数回呼び出して、このパラメーターを複数の署名者のチェックに変更できます。 最初の署名者の場合は 0 に設定されます。 関数が FALSE を返し、 GetLastError が CRYPT_E_NO_SIGNERを返した場合、前の呼び出しはメッセージの最後の署名者を受け取ります。
[in] pbEncryptedBlob
暗号化解除および検証される署名済み、エンコード済み、および暗号化されたメッセージへのポインター。
[in] cbEncryptedBlob
暗号化されたメッセージのサイズ (バイト単位)。
[out, optional] pbDecrypted
復号化されたメッセージを受信するバッファーへのポインター。
復号化されたメッセージが不要な場合、またはメモリ割り当てのために復号化されたメッセージのサイズを設定する場合、このパラメーターは NULL にすることができます 。 このパラメーターが NULL の場合、復号化されたメッセージは返されません。 詳細については、「不明な 長さのデータの取得」を参照してください。
[in, out, optional] pcbDecrypted
pbDecrypted パラメーターが指すバッファーのサイズをバイト単位で指定する DWORD へのポインター。 関数が戻るときに、 pbDecrypted にコピーされた暗号化解除されたメッセージのサイズが含まれます。
[out, optional] ppXchgCert
メッセージの暗号化を解除するために必要な秘密交換キーに対応する証明書のCERT_CONTEXT構造へのポインター。
[out, optional] ppSignerCert
署名者の証明書 のCERT_CONTEXT 構造へのポインター。
戻り値
関数が成功した場合、関数は 0 以外 (TRUE) を返します。
関数が失敗した場合は、0 (FALSE) を返します。 拡張エラー情報については、 GetLastError を呼び出します。
リターン コード | 説明 |
---|---|
|
pbDecrypted パラメーターで指定されたバッファーが、返されたデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pcbDecrypted が指す変数に格納します。 |
注釈
正常に復号化および検証されたメッセージの場合、ppXchgCert と ppSignerCert が指す証明書コンテキスト ポインターが更新されます。 CertFreeCertificateContext を呼び出して解放する必要があります。 関数が失敗した場合は、 NULL に設定されます。
呼び出し元が Exchange 証明書または署名者 証明書のコンテキストに関心を持たないことを示すには、 ppXchgCert パラメーターと ppSignerCert パラメーターを NULL に設定 します。
例
この関数を使用する例については、「 Example C Program: Sending and Receiving a Signed and Encrypted Message」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |