Fungsi CryptDecryptMessage (wincrypt.h)

Fungsi CryptDecryptMessagemendekode dan mendekripsi pesan.

Sintaks

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
);

Parameter

[in] pDecryptPara

Penunjuk ke struktur CRYPT_DECRYPT_MESSAGE_PARA yang berisi parameter dekripsi.

[in] pbEncryptedBlob

Penunjuk ke buffer yang berisi pesan yang dikodekan dan dienkripsi untuk didekripsi .

[in] cbEncryptedBlob

Ukuran, dalam byte, dari pesan yang dikodekan dan dienkripsi.

[out, optional] pbDecrypted

Penunjuk ke buffer yang menerima pesan yang didekripsi.

Untuk mengatur ukuran informasi ini untuk tujuan alokasi memori, parameter ini bisa NULL. Pesan yang didekripsi tidak akan dikembalikan jika parameter ini NULL. Untuk informasi selengkapnya, lihat Mengambil Data Dengan Panjang Tidak Diketahui.

[in, out, optional] pcbDecrypted

Penunjuk ke DWORD yang menentukan ukuran, dalam byte, dari buffer yang diacu oleh parameter pbDecrypted . Ketika fungsi kembali, variabel ini berisi ukuran, dalam byte, dari pesan yang didekripsi yang disalin ke pbDecrypted.

Catatan Saat memproses data yang dikembalikan dalam buffer pbDecrypted , aplikasi harus menggunakan ukuran aktual data yang dikembalikan. Ukuran aktual bisa sedikit lebih kecil dari ukuran buffer yang ditentukan dalam pcbDecrypted pada input. Pada input, ukuran buffer biasanya ditentukan cukup besar untuk memastikan bahwa data output terbesar yang mungkin akan pas di buffer. Pada output, DWORD diperbarui ke ukuran aktual data yang disalin ke buffer.
 

[out, optional] ppXchgCert

Penunjuk ke struktur CERT_CONTEXTsertifikat yang sesuai dengan kunci pertukaran privat yang diperlukan untuk mendekripsi pesan. Untuk menunjukkan bahwa fungsi tidak boleh mengembalikan konteks sertifikat yang digunakan untuk mendekripsi, atur parameter ini ke NULL.

Nilai kembali

Jika fungsi berhasil, fungsi mengembalikan bukan nol (TRUE).

Jika fungsi gagal, fungsi akan mengembalikan nol (FALSE). Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

Catatan Kesalahan dari panggilan ke CryptImportKey dan CryptDecrypt mungkin disebarluaskan ke fungsi ini.
 
Fungsi GetLastError paling sering mengembalikan kode kesalahan berikut.
Menampilkan kode Deskripsi
ERROR_MORE_DATA
Jika buffer yang ditentukan oleh parameter pbDecrypted tidak cukup besar untuk menyimpan data yang dikembalikan, fungsi mengatur kode ERROR_MORE_DATA, dan menyimpan ukuran buffer yang diperlukan, dalam byte, dalam variabel yang ditunjukkan oleh pcbDecrypted.
E_INVALIDARG
Jenis pengodean pesan dan sertifikat tidak valid. Saat ini hanya PKCS_7_ASN_ENCODING dan X509_ASN_ENCODING_TYPE yang didukung. cbSize tidak valid dalam *pDecryptPara.
CRYPT_E_UNEXPECTED_MSG_TYPE
Bukan pesan kriptografi yang diselimuti .
NTE_BAD_ALGID
Pesan dienkripsi dengan menggunakan algoritma yang tidak diketahui atau tidak didukung.
CRYPT_E_NO_DECRYPT_CERT
Tidak ditemukan sertifikat yang memiliki properti kunci privat untuk digunakan untuk mendekripsi.
 

Jika fungsi gagal, GetLastError dapat mengembalikan kesalahan pengodean/pendekodean Abstract Syntax Notation One (ASN.1). Untuk informasi tentang kesalahan ini, lihat Nilai Pengembalian Pengodean/Pendekodean ASN.1.

Keterangan

Ketika NULL diteruskan untuk pbDecrypted, dan pcbDecrypted bukan NULL, NULL dikembalikan untuk alamat yang diteruskan di ppXchgCert; jika tidak, pointer ke CERT_CONTEXT dikembalikan. Untuk pesan yang berhasil didekripsi, penunjuk ini ke CERT_CONTEXT menunjuk ke konteks sertifikat yang digunakan untuk mendekripsi pesan. Ini harus dikosongkan dengan memanggil CertFreeCertificateContext. Jika fungsi gagal, nilai di ppXchgCert diatur ke NULL.

Contoh

Untuk contoh yang menggunakan fungsi ini, lihat Contoh Program C: Menggunakan CryptEncryptMessage dan CryptDecryptMessage.

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header wincrypt.h
Pustaka Crypt32.lib
DLL Crypt32.dll

Lihat juga

CryptDecryptAndVerifyMessageSignature

Fungsi Pesan Yang Disederhanakan