Bagikan melalui


Fungsi CryptMsgUpdate (wincrypt.h)

Fungsi CryptMsgUpdate menambahkan konten ke pesan kriptografi. Penggunaan fungsi ini memungkinkan pesan dibangun sepotong demi sepotong melalui panggilan berulang dari CryptMsgUpdate. Konten pesan yang ditambahkan dikodekan atau didekodekan tergantung pada apakah pesan dibuka dengan CryptMsgOpenToEncode atau CryptMsgOpenToDecode.

Sintaks

BOOL CryptMsgUpdate(
  [in] HCRYPTMSG  hCryptMsg,
  [in] const BYTE *pbData,
  [in] DWORD      cbData,
  [in] BOOL       fFinal
);

Parameter

[in] hCryptMsg

Handel pesan kriptografi pesan yang akan diperbarui.

[in] pbData

Penunjuk ke buffer yang menyimpan data yang akan dikodekan atau didekodekan.

[in] cbData

Jumlah byte data dalam penyangga pbData .

[in] fFinal

Menunjukkan bahwa blok data terakhir untuk pengodean atau pendekodean sedang diproses. Penggunaan bendera ini yang benar tergantung pada apakah pesan yang diproses telah mencopot data. Penyertaan data yang dilepas dalam pesan ditunjukkan dengan mengatur dwFlags ke CMSG_DETACHED_FLAG dalam panggilan ke fungsi yang membuka pesan.

Jika CMSG_DETACHED_FLAG tidak diatur dan pesan dibuka menggunakan CryptMsgOpenToDecode atau CryptMsgOpenToEncode, fFinal diatur ke TRUE, dan CryptMsgUpdate hanya dipanggil sekali.

Jika bendera CMSG_DETACHED_FLAG diatur dan pesan dibuka menggunakan CryptMsgOpenToEncode, fFinal diatur ke TRUE hanya pada panggilan terakhir ke CryptMsgUpdate.

Jika bendera CMSG_DETACHED_FLAG diatur dan pesan dibuka menggunakan CryptMsgOpenToDecode, fFinal diatur ke TRUE saat header diproses oleh satu panggilan ke CryptMsgUpdate. Ini diatur ke FALSE saat memproses data yang dilepas dalam panggilan berikutnya ke CryptMsgUpdate hingga blok data terakhir yang dilepas akan diproses. Pada panggilan terakhir ke CryptMsgUpdate, panggilan diatur ke TRUE.

Saat data yang dilepas didekodekan, header dan konten pesan terkandung dalam BLOB yang berbeda. Setiap BLOB mengharuskan fFinal diatur ke TRUE ketika panggilan terakhir ke fungsi dibuat untuk BLOB tersebut.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol (TRUE).

Jika fungsi gagal, nilai yang dikembalikan adalah nol (FALSE). Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

Kesalahan yang ditemui dalam fungsi panggilan balik yang ditentukan aplikasi yang ditentukan oleh pStreamInfo di CryptMsgOpenToDecode dan CryptMsgOpenToEncode mungkin disebarkan ke CryptMsgUpdate jika streaming digunakan. Jika ini terjadi, SetLastError tidak dipanggil oleh CryptMsgUpdate setelah fungsi panggilan balik kembali, yang mempertahankan kesalahan apa pun yang ditemui di bawah kontrol aplikasi. Ini adalah tanggung jawab fungsi panggilan balik (atau salah satu API yang dipanggilnya) untuk memanggil SetLastError jika terjadi kesalahan saat aplikasi memproses data yang dialirkan.

Tabel berikut mencantumkan kode kesalahan yang paling umum dikembalikan oleh fungsi GetLastError .

Menampilkan kode Deskripsi
CRYPT_E_INVALID_MSG_TYPE
Tipe pesan tidak valid.
CRYPT_E_MSG_ERROR
Terjadi kesalahan saat melakukan operasi kriptografi.
CRYPT_E_OID_FORMAT
Pengidentifikasi objek diformat dengan buruk.
CRYPT_E_UNEXPECTED_ENCODING
Pesan tidak dikodekan seperti yang diharapkan.
CRYPT_E_UNKNOWN_ALGO
Algoritma kriptografi tidak diketahui.
E_INVALIDARG
Satu atau beberapa argumen tidak valid.
E_OUTOFMEMORY
Kehabisan memori.
 

Kesalahan yang disebarkan mungkin ditemui dari salah satu fungsi berikut:

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.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header wincrypt.h
Pustaka Crypt32.lib
DLL Crypt32.dll

Lihat juga

CryptMsgGetParam

CryptMsgOpenToDecode

CryptMsgOpenToEncode

Fungsi Pesan tingkat rendah

Fungsi Pesan yang Disederhanakan