Fungsi CryptEncodeObject (wincrypt.h)

Fungsi CryptEncodeObject mengodekan struktur jenis yang ditunjukkan oleh nilai parameter lpszStructType . Penggunaan CryptEncodeObjectEx direkomendasikan sebagai API yang melakukan fungsi yang sama dengan peningkatan performa yang signifikan.

Sintaks

BOOL CryptEncodeObject(
  [in]      DWORD      dwCertEncodingType,
  [in]      LPCSTR     lpszStructType,
  [in]      const void *pvStructInfo,
  [out]     BYTE       *pbEncoded,
  [in, out] DWORD      *pcbEncoded
);

Parameter

[in] dwCertEncodingType

Jenis pengodean yang digunakan. Selalu dapat diterima untuk menentukan jenis pengodean sertifikat dan pesan dengan menggabungkannya dengan operasi bitwise-OR seperti yang ditunjukkan dalam contoh berikut:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Jenis pengodean yang saat ini ditentukan adalah:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING
Catatan Jenis pengodean sertifikat atau pesan diperlukan. X509_ASN_ENCODING adalah default. Jika jenis tersebut ditunjukkan, jenis tersebut digunakan. Jika tidak, jika jenis PKCS7_ASN_ENCODING ditunjukkan, jenis tersebut akan digunakan.
 

[in] lpszStructType

Penunjuk ke OID yang menentukan jenis struktur. Jika kata urutan tinggi dari parameter lpszStructType adalah nol, kata urutan rendah menentukan pengidentifikasi bilangan bulat untuk jenis struktur yang ditentukan. Jika tidak, parameter ini adalah penunjuk panjang ke string yang dihentikan null.

Untuk informasi selengkapnya tentang string pengidentifikasi objek, konstanta yang telah ditentukan dan struktur yang sesuai, lihat Konstanta untuk CryptEncodeObject dan CryptDecodeObject.

[in] pvStructInfo

Penunjuk ke struktur yang akan dikodekan. Struktur harus dari jenis yang ditentukan oleh lpszStructType.

[out] pbEncoded

Penunjuk ke buffer untuk menerima struktur yang dikodekan. Ketika buffer yang ditentukan tidak cukup besar untuk menerima struktur yang didekodekan, fungsi mengatur kode ERROR_MORE_DATA dan menyimpan ukuran buffer yang diperlukan, dalam byte, dalam variabel yang ditunjukkan oleh pcbEncoded.

Parameter ini dapat berupa NULL untuk mengambil ukuran informasi ini untuk tujuan alokasi memori. Untuk informasi selengkapnya, lihat Mengambil Data Dengan Panjang Tidak Diketahui.

[in, out] pcbEncoded

Penunjuk ke variabel DWORD yang berisi ukuran, dalam byte, dari buffer yang diacu oleh parameter pbEncoded . Saat fungsi kembali, nilai DWORD berisi jumlah byte yang dikodekan yang dialokasikan yang disimpan dalam buffer.

Catatan Saat memproses data yang dikembalikan dalam buffer, aplikasi harus menggunakan ukuran aktual data yang dikembalikan. Ukuran aktual bisa sedikit lebih kecil dari ukuran buffer yang ditentukan pada input. (Pada input, ukuran buffer biasanya ditentukan cukup besar untuk memastikan bahwa data output terbesar yang mungkin cocok di buffer.) Pada output, variabel yang diacu oleh parameter ini diperbarui untuk mencerminkan ukuran aktual data yang disalin ke buffer.
 

Mengembalikan nilai

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. Beberapa kemungkinan kode kesalahan tercantum dalam tabel berikut.

Menampilkan kode Deskripsi
CRYPT_E_BAD_ENCODE
Terjadi kesalahan saat pengodean.
ERROR_FILE_NOT_FOUND
Fungsi pengodean tidak dapat ditemukan untuk dwCertEncodingType dan lpszStructType yang ditentukan.
ERROR_MORE_DATA
Jika buffer yang ditentukan oleh parameter pbEncoded 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 pcbEncoded.
 

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

Saat mengodekan objek kriptografi menggunakan fungsi CryptEncodeObjectEx pilihan, karakter NULL yang mengakhiri disertakan. Saat mendekode, menggunakan fungsi CryptDecodeObjectEx pilihan, karakter NULL yang mengakhiri tidak dipertahankan.

Contoh

Untuk contoh yang menggunakan fungsi ini, lihat Contoh Program C: Membuat Permintaan Sertifikat dan Contoh Program C: Pengodean dan Pendekodean ASN.1.

Persyaratan

   
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

CryptDecodeObject

CryptEncodeObjectEx

Fungsi Pengodean dan Pendekodean Objek