Fungsi CertStrToNameA (wincrypt.h)

Fungsi CertStrToName mengonversi string X.500 yang dihentikan null menjadi nama sertifikat yang dikodekan.

Sintaks

BOOL CertStrToNameA(
  [in]            DWORD  dwCertEncodingType,
  [in]            LPCSTR pszX500,
  [in]            DWORD  dwStrType,
  [in, optional]  void   *pvReserved,
  [out]           BYTE   *pbEncoded,
  [in, out]       DWORD  *pcbEncoded,
  [out, optional] LPCSTR *ppszError
);

Parameter

[in] dwCertEncodingType

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

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

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

[in] pszX500

Penunjuk ke string X.500 yang dihentikan null untuk dikonversi. Format string ini ditentukan oleh parameter dwStrType .

String ini diharapkan diformat sama dengan output dari fungsi CertNameToStr .

[in] dwStrType

Parameter ini menentukan jenis string. Parameter ini juga menentukan opsi lain untuk konten string.

Jika tidak ada bendera yang dikombinasikan dengan penentu jenis string, string dapat berisi koma (,) atau titik koma (;) sebagai pemisah dalam nama khusus relatif (RDN) dan tanda plus (+) sebagai pemisah dalam beberapa nilai RDN.

Tanda kutip ("") didukung. Kutipan dapat disertakan dalam nilai yang dikutip dengan menggunakan dua set tanda kutip, misalnya, CN="Pengguna ""satu""".

Nilai yang dimulai dengan tanda angka (#) diperlakukan sebagai heksadesimal ASCII dan dikonversi menjadi CERT_RDN_OCTET_STRING. Ruang putih yang disematkan diabaikan. Misalnya, 1.2.3 = # AB CD 01 sama dengan 1.2.3=#ABCD01.

Spasi kosong yang mengelilingi kunci, pengidentifikasi objek, dan nilai diabaikan.

Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
CERT_SIMPLE_NAME_STR
1
Jenis string ini tidak didukung.
CERT_OID_NAME_STR
2
Memvalidasi bahwa jenis string didukung. String dapat berupa pengidentifikasi objek (OID) atau nama X.500.
CERT_X500_NAME_STR
3
Identik dengan CERT_OID_NAME_STR. Memvalidasi bahwa jenis string didukung. String dapat berupa pengidentifikasi objek (OID) atau nama X.500.
 

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

Nilai Makna
CERT_NAME_STR_COMMA_FLAG
0x04000000
Hanya koma (,) yang didukung sebagai pemisah RDN.
CERT_NAME_STR_SEMICOLON_FLAG
0x40000000
Hanya titik koma (;) yang didukung sebagai pemisah RDN.
CERT_NAME_STR_CRLF_FLAG
0x08000000
Hanya r garis miring terbalik (\r) atau garis miring terbalik n (\n) yang didukung sebagai pemisah RDN.
CERT_NAME_STR_NO_PLUS_FLAG
0x20000000
Tanda plus (+) diabaikan sebagai pemisah, dan beberapa nilai per RDN tidak didukung.
CERT_NAME_STR_NO_QUOTING_FLAG
0x10000000
Kutipan tidak didukung.
CERT_NAME_STR_REVERSE_FLAG
0x02000000
Urutan RDN dalam nama yang dibedakan dibalik sebelum pengodean. Bendera ini tidak diatur secara default.
CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG
0x00020000
Jenis nilai yang dikodekan CERT_RDN_T61_STRING digunakan alih-alih CERT_RDN_UNICODE_STRING. Bendera ini dapat digunakan jika semua karakter Unicode kurang dari atau sama dengan 0xFF.
CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG
0x00040000
Jenis nilai yang dikodekan CERT_RDN_UTF8_STRING digunakan alih-alih CERT_RDN_UNICODE_STRING.
CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG
0x00080000
Memaksa kunci X.500 dikodekan sebagai string UTF-8 (CERT_RDN_UTF8_STRING) daripada sebagai string Unicode (CERT_RDN_PRINTABLE_STRING) yang dapat dicetak. Ini adalah nilai default untuk otoritas sertifikasi Microsoft yang dimulai dengan Windows Server 2003.
CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG
0x00100000
Mencegah memaksa kunci Unicode (CERT_RDN_PRINTABLE_STRING) X.500 yang dapat dicetak untuk dikodekan dengan menggunakan UTF-8 (CERT_RDN_UTF8_STRING). Gunakan untuk mengaktifkan pengodean kunci X.500 sebagai nilai Unicode saat CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG diatur.
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Jika string berisi nilai RDN email, dan alamat email berisi karakter Unicode di luar kumpulan karakter ASCII, bagian nama host alamat email dikodekan dalam Punycode. Alamat email yang dihasilkan kemudian dikodekan sebagai string IA5String . Pengodean Punycode dari nama host dilakukan berdasarkan label demi label.

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

[in, optional] pvReserved

Dicadangkan untuk penggunaan di masa mendatang dan harus NULL.

[out] pbEncoded

Penunjuk ke buffer yang menerima struktur yang dikodekan.

Ukuran buffer ini ditentukan dalam parameter pcbEncoded .

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

[in, out] pcbEncoded

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

Jika pbEncodedadalah NULL, DWORD menerima ukuran, dalam byte, yang diperlukan untuk buffer.

[out, optional] ppszError

Penunjuk ke penunjuk string yang menerima informasi kesalahan tambahan tentang string input yang tidak valid.

Jika string pszX500 tidak valid, ppszError diperbarui oleh fungsi ini untuk menunjuk ke awal urutan karakter yang tidak valid. Jika tidak ada kesalahan yang terdeteksi dalam string input, ppszError diatur ke NULL.

Jika informasi ini tidak diperlukan, teruskan NULL untuk parameter ini.

Parameter ini diperbarui untuk kode kesalahan berikut yang dikembalikan dari GetLastError.

CRYPT_E_INVALID_X500_STRING

CRYPT_E_INVALID_NUMERIC_STRING

CRYPT_E_INVALID_PRINTABLE_STRING

CRYPT_E_INVALID_IA5_STRING

Mengembalikan nilai

Mengembalikan bukan nol jika berhasil atau nol sebaliknya.

Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Tabel berikut berisi kunci X.500 yang didukung, string pengidentifikasi objek, pengidentifikasi string yang sesuai (dari Wincrypt.h), dan jenis nilai.

Kunci String pengidentifikasi objek Pengidentifikasi string Jenis nilai RDN
CN 2.5.4.3 szOID_COMMON_NAME Dicetak

T61

L 2.5.4.7 szOID_LOCALITY_NAME Dicetak

T61

O 2.5.4.10 szOID_ORGANIZATION_NAME Dicetak

T61

OU 2.5.4.11 szOID_ORGANIZATIONAL_UNIT_NAME Dicetak

T61

E

Email

1.2.840.113549.1.9.1 szOID_RSA_emailAddr IA5
C 2.5.4.6 szOID_COUNTRY_NAME Dicetak
S

ST

2.5.4.8 szOID_STATE_OR_PROVINCE_NAME Dicetak

T61

STREET 2.5.4.9 szOID_STREET_ADDRESS Dicetak

T61

T

Judul

2.5.4.12 szOID_TITLE Dicetak

T61

G

GivenName

2.5.4.42 szOID_GIVEN_NAME Dicetak

T61

I

Initials

2.5.4.43 szOID_INITIALS Dicetak

T61

SN 2.5.4.4 szOID_SUR_NAME Dicetak

T61

DC 0.9.2342.19200300.100.1.25 szOID_DOMAIN_COMPONENT IA5

UTF8

 

Jika Dapat dicetak atau T61 diizinkan sebagai jenis nilai RDN untuk kunci, Cetak dipilih secara otomatis jika komponen string nama adalah anggota dari kumpulan karakter berikut:

  • A, B, ..., Z
  • a, b, ..., z
  • 0, 1, ..., 9
  • (spasi) ' ( ) + , - . / : = ?

Jenis T61 dikodekan UTF8.

Contoh

Untuk contoh yang menggunakan fungsi ini, lihat Contoh Program C: Mengonversi Nama dari Sertifikat ke ASN.1 dan Kembali.

Catatan

Header wincrypt.h mendefinisikan CertStrToName sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor 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

Persyaratan Nilai
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

CertNameToStr

Fungsi Konversi Data

GetLastError

Mengambil Data Dengan Panjang Tidak Diketahui