Bagikan melalui


IX509CertificateRequestPkcs7::InitializeFromCertificate method (certenroll.h)

Metode InitializeFromCertificate menginisialisasi permintaan sertifikat dengan menggunakan sertifikat yang ada. Sertifikat terkandung dalam array byte yang dikodekan dengan menggunakan Distinguished Encoding Rules (DER) sebagaimana didefinisikan oleh standar Abstract Syntax Notation One (ASN.1). Array byte yang dikodekan DER diwakili oleh string yang merupakan urutan biner murni atau dikodekan Unicode.

Sintaks

HRESULT InitializeFromCertificate(
  [in] X509CertificateEnrollmentContext Context,
  [in] VARIANT_BOOL                     RenewalRequest,
  [in] BSTR                             strCertificate,
  [in] EncodingType                     Encoding,
  [in] X509RequestInheritOptions        InheritOptions
);

Parameter

[in] Context

Nilai enumerasi X509CertificateEnrollmentContext yang menentukan apakah sertifikat yang diminta ditujukan untuk pengguna akhir, komputer, atau administrator yang bertindak atas nama komputer.

[in] RenewalRequest

VARIANT_BOOL yang menunjukkan apakah entitas akhir meminta agar sertifikat yang diidentifikasi oleh parameter strCertificate diperbarui.

[in] strCertificate

Variabel BSTR yang berisi sertifikat yang dikodekan DER.

Dimulai dengan Windows 7 dan Windows Server 2008 R2, Anda dapat menentukan cetak jempol sertifikat atau nomor seri daripada sertifikat yang dikodekan. Melakukannya menyebabkan fungsi mencari penyimpanan lokal yang sesuai untuk sertifikat yang cocok. Perlu diingat poin-poin berikut:

  • BSTR harus berupa jumlah digit heksadesimal yang merata.
  • Spasi putih antara pasangan heksadesimal diabaikan.
  • Parameter Pengodean harus diatur ke XCN_CRYPT_STRING_HEXRAW.
  • Parameter Konteks menentukan apakah penyimpanan lokal atau komputer atau keduanya dicari.
  • Jika kunci privat diperlukan, hanya penyimpanan pribadi dan permintaan yang dicari.
  • Jika kunci privat tidak diperlukan, penyimpanan OS akar dan menengah juga dicari.

[in] Encoding

Nilai enumerasi EncodingType yang menentukan jenis pengodean yang diterapkan ke sertifikat yang dikodekan DER. Nilai defaultnya adalah XCN_CRYPT_STRING_BASE64.

[in] InheritOptions

Nilai enumerasi X509RequestInheritOptions yang menentukan cara membuat objek permintaan sertifikat dari sertifikat yang ada. Anda dapat menentukan cara mewarisi kunci dengan memilih salah satu nilai berikut. Nilai defaultnya adalah InheritDefault.

Nilai Makna
InheritDefault
Penyedia dan pewarisan kunci tidak ditentukan.
WarisiNewDefaultKey
Membuat kunci baru tetapi mewarisi penyedia kriptografi default.
WarisiNewSimilarKey
Membuat kunci baru tetapi mewarisi penyedia kriptografi yang digunakan untuk membuat sertifikat yang ada.
InheritPrivateKey
Mewarisi kunci privat dan publik.
InheritPublicKey
Hanya mewarisi kunci publik.
 

Anda juga dapat menggunakan operasi bitwise-AND untuk menggabungkan nilai pewarisan kunci dengan kombinasi nilai berikut.

Nilai Makna
InheritRenewalCertificateFlag
Mewarisi sertifikat perpanjangan. Menentukan bendera ini menetapkan nilai ICertPropertyRenewal .
InheritTemplateFlag
Mewarisi templat sertifikat.
InheritSubjectFlag
Mewarisi nama yang dibedakan subjek.
InheritExtensionsFlag
Mewarisi ekstensi yang relevan dari sertifikat.
InheritSubjectAltNameFlag
Mewarisi ekstensi SubjectAlternativeName .
InheritValidityPeriodFlag
Mewarisi periode validitas.
 

Anda juga dapat menentukan InheritNone untuk mencegah salah satu bendera dalam tabel sebelumnya (bendera yang tidak terkait dengan pewarisan kunci) diimplementasikan secara default. Jika Anda menentukan InheritNone tetapi juga menentukan bendera yang tidak terkait dengan pewarisan kunci, metode mengembalikan E_INVALIDARG.

Jika Anda mengatur parameter InheritOptions ke nol (0) atau menentukan InheritDefault dan tidak menentukan nilai pewarisan kunci, InheritNewSimilarKey digunakan secara default.

Jika Anda mengatur parameter InheritOptions ke nol (0) atau menentukan InheritDefault dan tidak menentukan nilai apa pun yang tidak terkait dengan pewarisan kunci, bendera berikut diatur secara default:

  • InheritSubjectFlag
  • InheritExtensionsFlag
  • InheritValidityPeriodFlag
  • InheritTemplateFlag (jika sertifikat berisi ekstensi templat)
  • InheritRenewalCertificateFlag (jika klien memperbarui sertifikat)

Mengembalikan nilai

Jika fungsi berhasil, fungsi akan mengembalikan S_OK.

Jika fungsi gagal, fungsi mengembalikan nilai HRESULT yang menunjukkan kesalahan. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, yang ada dalam tabel berikut. Untuk daftar kode kesalahan umum, lihat Nilai HRESULT Umum.

Menampilkan kode Deskripsi
ERROR_ALREADY_INITIALIZED
Objek permintaan sertifikat telah diinisialisasi.

Keterangan

Metode InitializeFromCertificate memvalidasi opsi yang ditentukan dalam parameter InheritOptions dan menginisialisasi objek permintaan PKCS #7 baru dengan melakukan tindakan berikut:

  • Membuat objek permintaan PKCS #10 dari sertifikat, konteks pendaftaran, dan mewarisi opsi yang ditentukan pada input. Objek PKCS #10 mewarisi:
    • Templat jika ada di sertifikat asli dan Anda mengatur nilai InheritTemplateFlag .
    • Nama pembeda subjek jika Anda menentukan InheritSubjectFlag.
    • Nama alternatif subjek jika Anda menentukan InheritSubjectAltNameFlag.
    • Ekstensi jika Anda menentukan InheritExtensionsFlag.
  • Menyalin sertifikat asli, jika akan diperbarui, ke properti RenewalCertificate pada permintaan PKCS #10 baru.
  • Membuat ISignerCertificate dari sertifikat asli, jika akan diperbarui, dan mengaturnya pada properti SignerCertificate .
  • Mengatur permintaan PKCS #10 sebagai objek permintaan dalam.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header certenroll.h
DLL CertEnroll.dll

Lihat juga

IX509CertificateRequestPkcs7