Fungsi CertGetNameStringA (wincrypt.h)
Fungsi CertGetNameString mendapatkan subjek atau nama pengeluar sertifikat dari struktur CERT_CONTEXT sertifikat dan mengonversinya menjadi string karakter yang dihentikan null.
Sintaks
DWORD CertGetNameStringA(
[in] PCCERT_CONTEXT pCertContext,
[in] DWORD dwType,
[in] DWORD dwFlags,
[in] void *pvTypePara,
[out] LPSTR pszNameString,
[in] DWORD cchNameString
);
Parameter
[in] pCertContext
Penunjuk ke konteks sertifikat CERT_CONTEXT yang menyertakan subjek dan nama penerbit yang akan dikonversi.
[in] dwType
DWORD menunjukkan bagaimana nama akan ditemukan dan bagaimana output akan diformat.
Nilai | Makna |
---|---|
|
Jika sertifikat memiliki ekstensi Nama Alternatif Subjek atau Nama Alternatif Penerbit, gunakan pilihan rfc822Name pertama. Jika tidak ada pilihan rfc822Name yang ditemukan di ekstensi, gunakan bidang Nama Subjek untuk Email OID. Jika rfc822Name atau Email OID ditemukan, gunakan string . Jika tidak, mengembalikan string kosong (jumlah karakter yang dikembalikan adalah 1). pvTypePara tidak digunakan dan diatur ke NULL. |
|
Mengonversi BLOB Nama Subjek dengan memanggil CertNameToStr. pvTypePara menunjuk ke DWORD yang berisi dwStrType yang diteruskan ke CertNameToStr. Jika bidang Nama Subjek kosong dan sertifikat memiliki ekstensi Nama Alternatif Subjek, gunakan pilihan Nama direktori pertama dari CertNameToStr. |
|
pvTypePara menunjuk ke pengidentifikasi objek (OID) yang menentukan atribut nama yang akan dikembalikan. Misalnya, jika pvTypePara szOID_COMMON_NAME, menggunakan anggota Nama Subjek. Jika anggota Nama Subjek kosong dan sertifikat memiliki ekstensi Nama Alternatif Subjek, gunakan pilihan directoryName pertama. |
|
Melakukan iterasi melalui daftar atribut nama berikut dan menggunakan Nama Subjek atau ekstensi Nama Alternatif Subjek untuk kemunculan pertama: szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME, atau szOID_RSA_emailAddr.
Jika salah satu atribut ini tidak ditemukan, gunakan ekstensi Nama Alternatif Subjek untuk pilihan rfc822Name. Jika masih tidak ada kecocokan, gunakan atribut pertama. pvTypePara tidak digunakan dan diatur ke NULL. |
|
Memeriksa sertifikat untuk properti CERT_FRIENDLY_NAME_PROP_ID. Jika sertifikat memiliki properti ini, sertifikat akan dikembalikan. Jika sertifikat tidak memiliki properti , CERT_NAME_SIMPLE_DISPLAY_TYPE dikembalikan. |
|
Jika sertifikat memiliki ekstensi Nama Alternatif Subjek untuk penerbit, Nama Alternatif Penerbit, cari pilihan DNSName pertama.
Jika pilihan DNSName tidak ditemukan di ekstensi, cari bidang Nama Subjek untuk CN OID, "2.5.4.3". Jika DNSName atau CN OID ditemukan, kembalikan string. Jika tidak, kembalikan string kosong. |
|
Jika sertifikat memiliki ekstensi Nama Alternatif Subjek untuk penerbit, Nama Alternatif Penerbit, cari pilihan URL pertama. Jika pilihan URL ditemukan, kembalikan string. Jika tidak, kembalikan string kosong. |
|
Jika sertifikat memiliki ekstensi Nama Alternatif Subjek, cari pilihan OtherName yang mencari pszObjId == szOID_NT_PRINCIPAL_NAME, ("1.3.6.1.4.1.311.20.2.3").
Jika UPN OID ditemukan, dekode BLOB sebagai X509_UNICODE_ANY_STRING dan kembalikan string yang didekodekan. Jika tidak, kembalikan string kosong. |
[in] dwFlags
Menunjukkan jenis pemrosesan yang diperlukan.
Nilai | Makna |
---|---|
|
Memperoleh nama penerbit. Jika tidak diatur, memperoleh nama subjek. |
|
Melewati upaya awal default untuk mendekode nilai sebagai UTF8 dan mendekode sebagai karakter 8-bit. |
|
Jika parameter dwType diatur ke CERT_NAME_DNS_TYPE, semua nama yang berlaku dikembalikan untuk nilai DNS yang ditentukan. Jika tidak ada nama DNS tetapi ada komponen CN dalam subjek, CN dikembalikan sebagai gantinya. Jika ada CN dan nama DNS, hanya nama DNS yang dikembalikan. Ini meniluki kebijakan pembangunan rantai SSL. Jika Anda mengatur bendera ini untuk jenis nama selain CERT_NAME_DNS_TYPE, fungsi ini mengembalikan string kosong yang dihentikan null.
Windows 8 dan Windows Server 2012: Dukungan untuk bendera ini dimulai. |
|
Bendera ini memungkinkan pendekodean string IA5String ke nilai string Unicode berdasarkan nilai parameter dwType seperti yang didefinisikan di bawah ini:
|
[in] pvTypePara
Penunjuk ke DWORD yang berisi dwStrType atau pengidentifikasi objek (OID) yang menentukan atribut nama. Jenis yang diarahkan ditentukan oleh nilai dwType.
[out] pszNameString
Penunjuk ke buffer yang dialokasikan untuk menerima string yang dikembalikan. Jika pszNameString bukan NULL dan cchNameString bukan nol, pszNameString adalah string null-terminated.
Jika CERT_NAME_SEARCH_ALL_NAMES_FLAG ditentukan dalam parameter dwFlags dan CERT_NAME_DNS_TYPE diatur dalam parameter dwType , string yang dikembalikan akan berisi semua nama DNS yang berlaku. Setiap string dalam string output dihentikan null dan string terakhir akan dihentikan null ganda. Jika tidak ada nama DNS yang ditemukan, satu string kosong yang dihentikan null akan dikembalikan.
[in] cchNameString
Ukuran, dalam karakter, dialokasikan untuk string yang dikembalikan. Ukuran harus menyertakan karakter NULL yang mengakhiri.
Nilai kembali
Mengembalikan jumlah karakter yang dikonversi, termasuk karakter nol yang mengakhiri. Jika pszNameString adalah NULL atau cchNameString nol, mengembalikan ukuran string tujuan yang diperlukan (termasuk karakter NULL yang mengakhiri). Jika jenis nama yang ditentukan tidak ditemukan, mengembalikan string kosong yang dihentikan null dengan jumlah karakter yang dikembalikan 1.
Keterangan
Catatan
Header wincrypt.h mendefinisikan CertGetNameString sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosedur UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
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 |