CertCreateSelfSignCertificate (wincrypt.h)

Fungsi CertCreateSelfSignCertificate membangun sertifikat yang ditandatangani sendiri dan mengembalikan pointer ke struktur CERT_CONTEXT yang mewakili sertifikat.

Sintaks

PCCERT_CONTEXT CertCreateSelfSignCertificate(
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]           PCERT_NAME_BLOB                 pSubjectIssuerBlob,
  [in]           DWORD                           dwFlags,
  [in, optional] PCRYPT_KEY_PROV_INFO            pKeyProvInfo,
  [in, optional] PCRYPT_ALGORITHM_IDENTIFIER     pSignatureAlgorithm,
  [in, optional] PSYSTEMTIME                     pStartTime,
  [in, optional] PSYSTEMTIME                     pEndTime,
  [optional]     PCERT_EXTENSIONS                pExtensions
);

Parameter

[in, optional] hCryptProvOrNCryptKey

Handel penyedia kriptografi yang digunakan untuk menandatangani sertifikat yang dibuat. Jika NULL, informasi dari parameter pKeyProvInfo digunakan untuk memperoleh handel yang diperlukan. Jika pKeyProvInfo juga NULL, jenis penyedia default, jenis penyedia PROV_RSA_FULL, spesifikasi kunci default, AT_SIGNATURE, dan kontainer kunci yang baru dibuat dengan nama kontainer unik digunakan.

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 penyedia layanan kriptografi (CSP) CNG.

[in] pSubjectIssuerBlob

Penunjuk ke BLOB yang berisi nama khusus (DN) untuk subjek sertifikat. Parameter ini tidak boleh NULL. Minimal, pointer ke DN kosong harus disediakan. BLOB ini biasanya dibuat dengan menggunakan fungsi CertStrToName . Ini juga dapat dibuat dengan menggunakan fungsi CryptEncodeObject dan menentukan X509_NAME atau X509_UNICODE_NAME StructType.

[in] dwFlags

Sekumpulan bendera yang mengambil alih perilaku default fungsi ini. Ini bisa menjadi nol atau kombinasi dari satu atau beberapa nilai berikut.

Nilai Makna
CERT_CREATE_SELFSIGN_NO_KEY_INFO
2
Secara default, PCCERT_CONTEXT yang dikembalikan mereferensikan kunci privat dengan mengatur CERT_KEY_PROV_INFO_PROP_ID. Jika Anda tidak ingin PCCERT_CONTEXT yang dikembalikan mereferensikan kunci privat dengan mengatur CERT_KEY_PROV_INFO_PROP_ID, tentukan CERT_CREATE_SELFSIGN_NO_KEY_INFO.
CERT_CREATE_SELFSIGN_NO_SIGN
1
Secara default, sertifikat yang sedang dibuat ditandatangani. Jika sertifikat yang dibuat hanya tempat penampung dummy, sertifikat mungkin tidak perlu ditandatangani. Penandatanganan sertifikat dilewati jika CERT_CREATE_SELFSIGN_NO_SIGN ditentukan.

[in, optional] pKeyProvInfo

Penunjuk ke struktur CRYPT_KEY_PROV_INFO . Sebelum sertifikat dibuat, CSP dikueri untuk penyedia kunci, jenis penyedia kunci, dan nama kontainer kunci . Jika kueri CSP tidak mendukung kueri ini, fungsi gagal. Jika penyedia default tidak mendukung kueri ini, nilai pKeyProvInfo harus ditentukan. RSA BASE memang mendukung kueri ini.

Jika parameter pKeyProvInfo bukan NULL, nilai terkait diatur dalam nilai CERT_KEY_PROV_INFO_PROP_ID sertifikat yang dihasilkan. Anda harus memastikan bahwa semua parameter struktur yang disediakan ditentukan dengan benar.

[in, optional] pSignatureAlgorithm

Penunjuk ke struktur CRYPT_ALGORITHM_IDENTIFIER . Jika NULL, algoritma default, SHA1RSA, digunakan.

[in, optional] pStartTime

Penunjuk ke struktur SYSTEMTIME . Jika NULL, waktu saat ini sistem digunakan secara default.

[in, optional] pEndTime

Penunjuk ke struktur SYSTEMTIME . Jika NULL, nilai pStartTime ditambah satu tahun akan digunakan secara default.

[optional] pExtensions

Penunjuk ke array CERT_EXTENSIONS struktur CERT_EXTENSION . Secara default, array kosong. Nama subjek alternatif, jika diinginkan, dapat ditentukan sebagai salah satu ekstensi ini.

Mengembalikan nilai

Jika fungsi berhasil, variabel PCCERT_CONTEXT yang menunjuk ke sertifikat yang dibuat dikembalikan. Jika fungsi gagal, fungsi akan mengembalikan NULL. Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Karena pEndTime harus merupakan tanggal yang valid, dan secara otomatis dihasilkan jika tidak disediakan oleh pengguna, kegagalan tak terduga dapat dengan mudah disebabkan ketika API ini dipanggil pada hari kabut tanpa menyertai logika aplikasi untuk mengimbanginya. Untuk informasi lebih lanjut, silakan lihat kesiapan tahun kabut.

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

CERT_EXTENSION

CERT_EXTENSIONS

CRYPT_ALGORITHM_IDENTIFIER

CertStrToName

CryptEncodeObject

GetLastError

PCCERT_CONTEXT

SYSTEMTIME