Bagikan melalui


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
CERT_NAME_EMAIL_TYPE
1
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.
CERT_NAME_RDN_TYPE
2
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.
CERT_NAME_ATTR_TYPE
3
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.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
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.

CERT_NAME_FRIENDLY_DISPLAY_TYPE
5
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.
CERT_NAME_DNS_TYPE
6
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.

CERT_NAME_URL_TYPE
7
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.
CERT_NAME_UPN_TYPE
8
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
CERT_NAME_ISSUER_FLAG
0x1
Memperoleh nama penerbit. Jika tidak diatur, memperoleh nama subjek.
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
Melewati upaya awal default untuk mendekode nilai sebagai UTF8 dan mendekode sebagai karakter 8-bit.
CERT_NAME_SEARCH_ALL_NAMES_FLAG
0x2
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.

CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Bendera ini memungkinkan pendekodean string IA5String ke nilai string Unicode berdasarkan nilai parameter dwType seperti yang didefinisikan di bawah ini:
  • CERT_NAME_EMAIL_TYPE: Jika bagian nama host dari alamat email berisi komponen IA5String yang dikodekan Punycode, itu dikonversi ke Unicode yang setara.
  • CERT_NAME_SIMPLE_DISPLAY_TYPE: Jika Nama Subjek szOID_RSA_emailAddr atau rfc822Name dari Nama Alternatif Subjek dikembalikan dari sertifikat, dan bagian nama host dari alamat email berisi komponen IA5String yang dikodekan Punycode, itu dikonversi ke unicode yang setara.
  • CERT_NAME_DNS_TYPE: Jika sertifikat memiliki Nama Alternatif Penerbit, dengan pilihan DNSName, dan bagian nama host alamat email berisi komponen IA5String yang dikodekan Punycode, sertifikat tersebut dikonversi ke unicode yang setara.
  • CERT_NAME_URL_TYPE: URI didekodekan dan tidak dilewati. Jika nama host server URI berisi komponen IA5String yang dikodekan Punycode, string nama host dikonversi ke Setara Unicode.
Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Nilai ini tidak didukung.

[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

Lihat juga

Fungsi Konversi Data