CryptDecryptMessage 関数 (wincrypt.h)
CryptDecryptMessage 関数は、メッセージのデコードと復号化を行います。
構文
BOOL CryptDecryptMessage(
[in] PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
[in] const BYTE *pbEncryptedBlob,
[in] DWORD cbEncryptedBlob,
[out, optional] BYTE *pbDecrypted,
[in, out, optional] DWORD *pcbDecrypted,
[out, optional] PCCERT_CONTEXT *ppXchgCert
);
パラメーター
[in] pDecryptPara
復号化パラメーターを含む CRYPT_DECRYPT_MESSAGE_PARA 構造体へのポインター。
[in] pbEncryptedBlob
暗号化解除する エンコード されたメッセージと 暗号化された メッセージを含むバッファーへのポインター。
[in] cbEncryptedBlob
エンコードされたメッセージと暗号化されたメッセージのサイズ (バイト単位)。
[out, optional] pbDecrypted
復号化されたメッセージを受信するバッファーへのポインター。
メモリ割り当てのためにこの情報のサイズを設定するには、このパラメーターを NULL にできます。 このパラメーターが NULL の場合、復号化されたメッセージは返されません。 詳細については、「 不明な長さのデータの取得」を参照してください。
[in, out, optional] pcbDecrypted
pbDecrypted パラメーターによって指されるバッファーのサイズをバイト単位で指定する DWORD へのポインター。 関数が戻るとき、この変数には pbDecrypted にコピーされた復号化されたメッセージのサイズ (バイト単位) が含まれます。
[out, optional] ppXchgCert
メッセージの暗号化を解除するために必要な秘密交換キーに対応する証明書のCERT_CONTEXT構造へのポインター。 関数が復号化に使用する 証明書コンテキスト を返してはならないことを示すには、このパラメーターを NULL に設定 します。
戻り値
関数が成功した場合、関数は 0 以外 (TRUE) を返します。
関数が失敗した場合は、0 (FALSE) を返します。 拡張エラー情報については、 GetLastError を呼び出します。
リターン コード | 説明 |
---|---|
|
pbDecrypted パラメーターで指定されたバッファーが、返されたデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pcbDecrypted が指す変数に格納します。 |
|
メッセージと 証明書のエンコードの種類が無効です。 現在、PKCS_7_ASN_ENCODINGとX509_ASN_ENCODING_TYPEのみがサポートされています。 *pDecryptPara の cbSize が無効です。 |
|
エンベロープされた暗号化メッセージではありません。 |
|
メッセージは、不明またはサポートされていないアルゴリズムを使用して暗号化されました。 |
|
暗号化解除に使用する 秘密キー プロパティを持つ証明書が見つかりませんでした。 |
関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。
解説
pbDecrypted に NULL が渡され、pcbDecrypted が NULL でない場合、ppXchgCert で渡されたアドレスに対して NULL が返されます。それ以外の場合は、CERT_CONTEXTへのポインターが返されます。 正常に復号化されたメッセージの場合、 CERT_CONTEXT へのこのポインターは、メッセージの暗号化を解除するために使用される 証明書コンテキスト を指します。 CertFreeCertificateContext を呼び出して解放する必要があります。 関数が失敗した場合、 ppXchgCert の値は NULL に設定されます。
例
この関数を使用する例については、「 サンプル C プログラム: CryptEncryptMessage と CryptDecryptMessage の使用」を参照してください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |