Bagikan melalui


Fungsi CryptExportPublicKeyInfoEx (wincrypt.h)

Fungsi CryptExportPublicKeyInfoEx mengekspor informasi kunci publik yang terkait dengan kunci privat penyedia yang sesuai. Fungsi ini memungkinkan aplikasi untuk menentukan algoritma kunci publik, mengesampingkan default yang disediakan oleh penyedia layanan kriptografi (CSP).

Sintaks

BOOL CryptExportPublicKeyInfoEx(
  [in]      HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]      DWORD                           dwKeySpec,
  [in]      DWORD                           dwCertEncodingType,
  [in]      LPSTR                           pszPublicKeyObjId,
  [in]      DWORD                           dwFlags,
  [in]      void                            *pvAuxInfo,
  [out]     PCERT_PUBLIC_KEY_INFO           pInfo,
  [in, out] DWORD                           *pcbInfo
);

Parameter

[in] hCryptProvOrNCryptKey

Handel CSP yang akan digunakan saat mengekspor informasi kunci publik. Handel ini harus merupakan handel HCRYPTPROV yang telah dibuat dengan menggunakan fungsi CryptAcquireContext atau handel NCRYPT_KEY_HANDLE yang telah dibuat dengan menggunakan fungsi NCryptOpenKey . Aplikasi baru harus selalu meneruskan handel NCRYPT_KEY_HANDLE CSP CNG.

[in] dwKeySpec

Mengidentifikasi kunci privat yang akan digunakan dari kontainer penyedia. Ini bisa AT_KEYEXCHANGE atau AT_SIGNATURE. Parameter ini diabaikan jika NCRYPT_KEY_HANDLE digunakan dalam parameter hCryptProvOrNCryptKey .

[in] dwCertEncodingType

Menentukan 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

[in] pszPublicKeyObjId

Menentukan algoritma kunci publik.

CatatanpszPublicKeyObjId dan dwCertEncodingType digunakan bersama-sama untuk menentukan CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC yang dapat diinstal untuk dipanggil. Jika fungsi yang dapat diinstal tidak ditemukan untuk parameter pszPublicKeyObjId , upaya dilakukan untuk mengekspor kunci sebagai Kunci Umum RSA (szOID_RSA_RSA).
 

[in] dwFlags

Nilai bendera DWORD yang menunjukkan bagaimana informasi kunci publik diekspor. Nilai bendera diteruskan langsung ke fungsi CryptFindOIDInfo saat memetakan pengidentifikasi objek kunci publik ke string Unicode algoritma kunci publik CNG yang sesuai. Nilai bendera berikut dapat diatur.

Nilai Makna
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
Lompati kunci publik di grup CRYPT_PUBKEY_ALG_OID_GROUP_ID yang secara eksplisit ditandai dengan bendera CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG .
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Lompati kunci umum di grup CRYPT_PUBKEY_ALG_OID_GROUP_ID yang secara eksplisit ditandai dengan bendera CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG .

[in] pvAuxInfo

Parameter ini dicadangkan untuk digunakan di masa mendatang dan harus diatur ke NULL.

[out] pInfo

Pointer ke struktur CERT_PUBLIC_KEY_INFO untuk menerima informasi kunci publik yang akan diekspor.

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

[in, out] pcbInfo

Penunjuk ke DWORD yang berisi ukuran, dalam byte, dari buffer yang diacu oleh parameter pInfo . Saat fungsi kembali, DWORD berisi jumlah byte yang disimpan dalam buffer.

Catatan Saat memproses data yang dikembalikan dalam buffer, aplikasi perlu 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 akan pas di buffer.) Pada output, variabel yang diacu oleh parameter ini diperbarui untuk mencerminkan ukuran aktual data yang disalin ke buffer.
 

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.

Catatan Kesalahan dari fungsi yang disebut CryptGetUserKey dan CryptExportKey dapat disebarkan ke fungsi ini.
 
Fungsi ini memiliki kode kesalahan berikut.
Menampilkan kode Deskripsi
ERROR_FILE_NOT_FOUND
Fungsi ekspor yang dapat diinstal atau didaftarkan tidak dapat ditemukan untuk parameter dwCertEncodingType dan pszPublicKeyObjId yang ditentukan.
ERROR_MORE_DATA
Jika buffer yang ditentukan oleh parameter pInfo 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 parameter pcbInfo .
 

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 [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

CryptImportPublicKeyInfoEx

Fungsi Manajemen Data