Bagikan melalui


Fungsi CertNameToStrA (wincrypt.h)

Fungsi CertNameToStr mengonversi nama yang dikodekan dalam struktur CERT_NAME_BLOB menjadi string karakter null-terminated.

Representasi string mengikuti spesifikasi nama khusus dalam RFC 1779. Pengecualian untuk aturan ini tercantum di bagian Keterangan, di bawah ini.

Sintaksis

DWORD CertNameToStrA(
  [in]  DWORD           dwCertEncodingType,
  [in]  PCERT_NAME_BLOB pName,
  [in]  DWORD           dwStrType,
  [out] LPSTR           psz,
  [in]  DWORD           csz
);

Parameter

[in] dwCertEncodingType

Jenis pengodean sertifikat yang digunakan untuk mengodekan nama. Jenis pengodean pesan pengidentifikasi, yang terkandung dalam WORD tinggi dari nilai ini, diabaikan oleh fungsi ini.

Parameter ini dapat berupa jenis pengodean sertifikat yang saat ini ditentukan berikut.

Nilai Arti
X509_ASN_ENCODING
1 (0x1)
Menentukan pengodean sertifikat X.509.

[in] pName

Penunjuk ke struktur CERT_NAME_BLOB yang akan dikonversi.

[in] dwStrType

Parameter ini menentukan format string output. Parameter ini juga menentukan opsi lain untuk konten string.

Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Arti
CERT_SIMPLE_NAME_STR
1
Semua pengidentifikasi objek (OID) dibuang. CERT_RDN entri dipisahkan oleh koma diikuti dengan spasi (, ). Beberapa atribut dalam CERT_RDN dipisahkan oleh tanda plus yang diapit dalam spasi ( + ), misalnya, Microsoft, Kim Abercrombie + Programmer.
CERT_OID_NAME_STR
2
OID disertakan dengan pemisah tanda sama dengan (=) dari nilai atributnya. CERT_RDN entri dipisahkan oleh koma diikuti dengan spasi (, ). Beberapa atribut dalam CERT_RDN dipisahkan oleh tanda plus diikuti dengan spasi (+ ).
CERT_X500_NAME_STR
3
OID dikonversi ke nama kunci X.500 mereka; jika tidak, mereka sama dengan CERT_OID_NAME_STR. Jika OID tidak memiliki nama X.500 yang sesuai, OID digunakan dengan awalan OID.

Nilai RDN dikutip jika berisi spasi kosong di depan atau di belakang atau salah satu karakter berikut:

  • Koma (,)
  • Tanda plus (+)
  • Tanda sama dengan (=)
  • Tanda inci (")
  • Garis miring terbelakang diikuti oleh huruf n (\n)
  • Kurang dari tanda (<)
  • Lebih besar dari tanda (>)
  • Tanda nomor (#)
  • Titik koma (;)
Karakter kutipan adalah tanda inci ("). Jika nilai RDN berisi tanda inci, nilai tersebut diapit dalam tanda kutip ("").
 

Opsi berikut juga dapat dikombinasikan dengan nilai di atas untuk menentukan opsi tambahan untuk string.

Nilai Arti
CERT_NAME_STR_SEMICOLON_FLAG
0x40000000
Ganti koma diikuti dengan pemisah spasi (, ) dengan titik koma diikuti dengan pemisah spasi (; ) .
CERT_NAME_STR_CRLF_FLAG
0x08000000
Ganti koma diikuti dengan pemisah spasi (, ) dengan garis miring terbelakang diikuti dengan huruf r diikuti dengan garis miring terbelakang diikuti oleh pemisah huruf n (\r\n).
CERT_NAME_STR_NO_PLUS_FLAG
0x20000000
Ganti tanda plus yang diapit dalam pemisah spasi ( + ) dengan pemisah spasi tunggal.
CERT_NAME_STR_NO_QUOTING_FLAG
0x10000000
Nonaktifkan kutipan.
CERT_NAME_STR_REVERSE_FLAG
0x02000000
Urutan RDN dalam string nama khusus dibalik setelah decoding. Bendera ini tidak diatur secara default.
CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG
0x00010000
Secara default, string kunci CERT_RDN_T61_STRING X.500 didekodekan sebagai UTF8. Jika dekode UTF8 gagal, kunci X.500 didekodekan sebagai karakter 8 bit. Gunakan CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG untuk melewati upaya awal untuk mendekode sebagai UTF8.
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Jika nama yang ditujukkan oleh parameter pName berisi RDN email, dan bagian nama host dari alamat email berisi kode Punycode IA5String, nama dikonversi ke unicode yang setara.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Nilai ini tidak didukung.

[out] psz

Penunjuk ke buffer karakter yang menerima string yang dikembalikan. Ukuran buffer ini ditentukan dalam parameter csz.

[in] csz

Ukurannya, dalam karakter, dari psz buffer. Ukuran harus menyertakan karakter null yang mengakhiri.

Mengembalikan nilai

Mengembalikan jumlah karakter yang dikonversi, termasuk karakter null yang dihentikan.

Jika psz NULL atau csz adalah nol, mengembalikan ukuran string tujuan yang diperlukan.

Komentar

Jika psz tidak NULL dan csz bukan nol, psz yang dikembalikan selalu merupakan string yang dihentikan null.

Sebaiknya jangan gunakan RDN multikomponen (misalnya, CN=James+O=Microsoft) untuk menghindari kemungkinan masalah pemesanan saat decoding terjadi. Sebagai gantinya, pertimbangkan untuk menggunakan RDN bernilai tunggal (misalnya, CN=James, O=Microsoft).

Representasi string mengikuti spesifikasi nama khusus dalam RFC 1779 kecuali untuk penyimpangan yang dijelaskan dalam daftar berikut.

  • Nama yang berisi tanda kutip diapit dalam tanda kutip ganda.
  • String kosong diapit dalam tanda kutip ganda.
  • String yang berisi spasi berturut-turut tidak diapit dalam tanda kutip.
  • Nilai Relative Distinguished Name (RDN) jenis CERT_RDN_ENCODED_BLOB atau CERT_RDN_OCTET_STRING diformat dalam heksadesimal.
  • Jika OID tidak memiliki nama X.500 yang sesuai, awalan "OID" digunakan sebelum OID.
  • Nilai RDN diapit dengan tanda kutip ganda (bukan "\") jika berisi spasi putih di depan, spasi kosong di belakang, atau salah satu karakter berikut:
    • Koma (,)
    • Tanda plus (+)
    • Tanda sama dengan (=)
    • Tanda inci (")
    • Garis miring terbelakang (/)
    • Kurang dari tanda (<)
    • Lebih besar dari tanda (>)
    • Tanda nomor (#)
    • Titik koma (;)
  • Nama kunci X.500 untuk stateOrProvinceName (2.5.4.8) OID adalah "S". Nilai ini berbeda dari nama kunci RFC 1779 X.500 ("ST").
Selain itu, nama kunci X.500 berikut tidak disebutkan dalam RFC 1779, tetapi dapat dikembalikan oleh API ini:
Kunci String pengidentifikasi objek
E 1.2.840.113549.1.9.1
T 2.5.4.12
G 2.5.4.42
Saya 2.5.4.43
SN 2.5.4.4
 

Contoh

Untuk contoh yang menggunakan fungsi ini, lihat

Contoh Program C: Mengonversi Nama dari Sertifikat ke ASN.1 dan Back.

Nota

Header wincrypt.h mendefinisikan CertNameToStr 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

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

Lihat juga

CertRDNValueToStr

certStrToName

Fungsi Konversi Data