Fungsi CertSetCertificateContextProperty (wincrypt.h)

Fungsi CertSetCertificateContextProperty menetapkan properti yang diperluas untuk konteks sertifikat tertentu.

Sintaks

BOOL CertSetCertificateContextProperty(
  [in] PCCERT_CONTEXT pCertContext,
  [in] DWORD          dwPropId,
  [in] DWORD          dwFlags,
  [in] const void     *pvData
);

Parameter

[in] pCertContext

Penunjuk ke struktur CERT_CONTEXT .

[in] dwPropId

Properti yang akan diatur. Nilai dwPropId menentukan jenis dan konten parameter pvData . Pengidentifikasi yang saat ini ditentukan dan jenis pvData terkaitnya adalah sebagai berikut.

CatatanCRYPT_HASH_BLOB dan CRYPT_DATA_BLOB dijelaskan dalam topik CRYPT_INTEGER_BLOB .
 

CERT_ACCESS_STATE_PROP_ID

Jenis data pvData: Penunjuk ke nilai DWORD .

Mengembalikan nilai DWORD yang menunjukkan apakah operasi tulis ke sertifikat dipertahankan. Nilai DWORD tidak diatur jika sertifikat berada di penyimpanan memori atau di penyimpanan berbasis registri yang dibuka sebagai baca-saja.

CERT_AIA_URL_RETRIEVED_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_ARCHIVED_KEY_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_HASH_BLOB .

Properti ini menyimpan hash kunci terenkripsi untuk konteks sertifikat.

CERT_ARCHIVED_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Menunjukkan bahwa sertifikat dilewati selama enumerasi. Sertifikat dengan set properti ini masih ditemukan dengan operasi pencarian eksplisit, seperti menemukan sertifikat dengan hash tertentu atau nomor seri tertentu. Properti ini dapat diatur ke BLOB kosong, {0,NULL}.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_AUTO_ENROLL_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti yang diatur setelah sertifikat didaftarkan dengan menggunakan Pendaftaran Otomatis. Struktur CRYPT_DATA_BLOB yang ditunjukkan oleh pvData menyertakan nama Unicode yang dihentikan null dari jenis sertifikat yang sertifikatnya telah didaftarkan secara otomatis. Setiap panggilan berikutnya ke Pendaftaran Otomatis untuk pemeriksaan sertifikat untuk properti ini untuk menentukan apakah sertifikat telah didaftarkan.

CERT_AUTO_ENROLL_RETRY_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_BACKED_UP_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_CA_DISABLE_CRL_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Menonaktifkan pengambilan daftar pencabutan sertifikat (CRL) untuk sertifikat yang digunakan oleh otoritas sertifikasi (CA). Jika sertifikat CA berisi properti ini, sertifikat juga harus menyertakan properti CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID .

CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Berisi daftar URL protokol status sertifikat online (OCSP) yang akan digunakan untuk sertifikat yang dikeluarkan oleh sertifikat CA. Konten array adalah byte yang dikodekan Abstract Sintaks Notation One (ASN.1) dari struktur X509_AUTHORITY_INFO_ACCESS di mana pszAccessMethod diatur ke szOID_PKIX_OCSP.

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Mengatur lokasi sertifikat silang. Nilai ini hanya berlaku untuk sertifikat dan bukan untuk daftar pencabutan sertifikat (CRL) atau daftar kepercayaan sertifikat (CTL). Struktur CRYPT_DATA_BLOB berisi struktur CROSS_CERT_DIST_POINTS_INFO yang dikodekan Abstract Syntax Notation One (ASN.1) yang dikodekan dengan menggunakan fungsi CryptEncodeObject dengan nilai X509_CROSS_CERT_DIST_POINTS untuk parameter lpszStuctType.

CERT_CTL_USAGE_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Struktur CRYPT_DATA_BLOB berisi struktur CTL_USAGE yang dikodekan ASN.1. Struktur ini dikodekan dengan menggunakan fungsi CryptEncodeObject dengan set nilai X509_ENHANCED_KEY_USAGE.

CERT_DATE_STAMP_PROP_ID

Jenis data pvData: Penunjuk ke struktur FILETIME .

Properti ini mengatur waktu sertifikat ditambahkan ke penyimpanan.

CERT_DESCRIPTION_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti yang diatur dan ditampilkan oleh antarmuka pengguna sertifikat. Properti ini memungkinkan pengguna untuk menjelaskan penggunaan sertifikat.

CERT_EFS_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_ENHKEY_USAGE_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti yang menunjukkan bahwa parameter pvData menunjuk ke struktur CRYPT_DATA_BLOB yang berisi struktur CERT_ENHKEY_USAGE yang dikodekan ASN.1. Struktur ini dikodekan dengan menggunakan fungsi CryptEncodeObject dengan set nilai X509_ENHANCED_KEY_USAGE.

CERT_ENROLLMENT_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Informasi pendaftaran permintaan tertunda yang berisi RequestID, CADNSName, CAName, dan DisplayName. Format data didefinisikan sebagai berikut.

Byte Konten
4 byte pertama ID permintaan tertunda
4 byte berikutnya Ukuran CADNSName, dalam karakter, termasuk karakter null yang mengakhiri, diikuti oleh string CADNSName dengan mengakhiri karakter null
4 byte berikutnya Ukuran CAName, dalam karakter, termasuk karakter null yang mengakhiri, diikuti oleh string CAName dengan mengakhiri karakter null
4 byte berikutnya Ukuran DisplayName, dalam karakter, termasuk karakter null yang mengakhiri, diikuti dengan string DisplayName dengan mengakhiri karakter null
 

CERT_EXTENDED_ERROR_INFO_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini menetapkan string yang berisi informasi kesalahan yang diperluas untuk konteks sertifikat.

CERT_FORTEZZA_DATA_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_FRIENDLY_NAME_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Struktur CRYPT_DATA_BLOB berisi nama tampilan sertifikat.

CERT_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini secara implisit diatur oleh panggilan ke fungsi CertGetCertificateContextProperty .

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

Jenis data pvData: Penunjuk ke jenis data HCRYPTPROV_OR_NCRYPT_KEY_HANDLE .

Properti ini memanggil NCryptIsKeyHandle untuk menentukan apakah ini NCRYPT_KEY_HANDLE. Untuk NCRYPT_KEY_HANDLE, menetapkan CERT_NCRYPT_KEY_HANDLE_PROP_ID; jika tidak, itu mengatur CERT_KEY_PROV_HANDLE_PROP_ID.

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Mengatur handel kunci CAPI yang terkait dengan sertifikat.

CERT_IE30_RESERVED_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini menetapkan hashMD5 dari kunci publik yang terkait dengan kunci privat yang digunakan untuk menandatangani sertifikat ini.

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Struktur CRYPT_DATA_BLOB berisi hash MD5 dari nama penerbit dan nomor seri dari sertifikat ini.

CERT_KEY_CONTEXT_PROP_ID

Jenis data pvData: Penunjuk ke struktur CERT_KEY_CONTEXT .

Struktur menentukan kunci privat sertifikat. Ini berisi HCRYPTPROV dan spesifikasi kunci untuk kunci privat. Untuk informasi selengkapnya tentang anggota hCryptProv dan pengaturan dwFlags , lihat CERT_KEY_PROV_HANDLE_PROP_ID, nanti dalam topik ini.

Catatan Lebih CERT_KEY_CONTEXT anggota struktur dapat ditambahkan untuk properti ini. Jika demikian, nilai anggota cbSize akan disesuaikan dengan sesuai. Anggota cbSize harus diatur ke ukuran struktur CERT_KEY_CONTEXT .
 

CERT_KEY_IDENTIFIER_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini biasanya secara implisit diatur oleh panggilan ke fungsi CertGetCertificateContextProperty .

CERT_KEY_PROV_HANDLE_PROP_ID

Jenis data pvData: Nilai HCRYPTPROV .

Handel HCRYPTPROV untuk kunci privat sertifikat diatur. Anggota hCryptProv dari struktur CERT_KEY_CONTEXT diperbarui jika ada. Jika tidak ada, itu dibuat dengan dwKeySpec dan diinisialisasi oleh CERT_KEY_PROV_INFO_PROP_ID. Jika CERT_STORE_NO_CRYPT_RELEASE_FLAG tidak diatur, nilai hCryptProv secara implisit dirilis baik ketika properti diatur ke NULL atau pada pengosongan akhir struktur CERT_CONTEXT .

CERT_KEY_PROV_INFO_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_KEY_PROV_INFO .

Struktur menentukan kunci privat sertifikat.

CERT_KEY_SPEC_PROP_ID

Jenis data pvData: Penunjuk ke nilai DWORD .

Nilai DWORD yang menentukan kunci privat. Anggota dwKeySpec dari struktur CERT_KEY_CONTEXT diperbarui jika ada. Jika tidak, itu dibuat dengan hCryptProv diatur ke nol.

CERT_MD5_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_HASH_BLOB .

Properti ini secara implisit diatur oleh panggilan ke fungsi CertGetCertificateContextProperty .

CERT_NCRYPT_KEY_HANDLE_PROP_ID

Jenis data pvData: Penunjuk ke jenis data NCRYPT_KEY_HANDLE .

Properti ini mengatur NCRYPT_KEY_HANDLE untuk kunci privat sertifikat dan mengatur dwKeySpec ke CERT_NCRYPT_KEY_SPEC.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Mengatur handel kunci CNG yang terkait dengan sertifikat.

CERT_NEW_KEY_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Struktur CRYPT_DATA_BLOB berisi struktur CERT_ALT_NAME_INFO yang dikodekan ASN.1 yang dikodekan dengan menggunakan fungsi CryptEncodeObject dengan kumpulan nilai X509_ALTERNATE_NAME.

CERT_NEXT_UPDATE_LOCATION_PROP_ID saat ini hanya digunakan dengan CTL.

CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_OCSP_CACHE_PREFIX_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_OCSP_RESPONSE_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini menetapkan respons protokol status sertifikat online (OCSP) yang dikodekan dari CERT_SERVER_OCSP_RESPONSE_CONTEXT untuk sertifikat ini.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini secara implisit diatur dengan memanggil fungsi CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Pengidentifikasi ini tidak didukung.

CERT_PUBKEY_ALG_PARA_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini digunakan dengan kunci publik yang mendukung pewarisan parameter algoritma. BLOB data berisi parameter Algoritma PublicKey yang dikodekan ASN.1. Untuk DSS, ini adalah parameter yang dikodekan dengan menggunakan fungsi CryptEncodeObject . Ini hanya digunakan jika CMS_PKCS7 ditentukan.

CERT_PUBKEY_HASH_RESERVED_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_PVK_FILE_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Struktur CRYPT_DATA_BLOB menentukan nama file yang berisi kunci privat yang terkait dengan kunci publik sertifikat. Di dalam struktur CRYPT_DATA_BLOB , anggota pbData adalah penunjuk ke string karakter lebar Unicode yang dihentikan null, dan anggota cbData menunjukkan panjang string.

CERT_RENEWAL_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini menentukan hash sertifikat yang diperbarui.

CERT_REQUEST_ORIGINATOR_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Struktur CRYPT_DATA_BLOB berisi string Unicode yang dihentikan null yang berisi nama komputer DNS untuk asal permintaan konteks sertifikat.

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Mengembalikan penunjuk ke struktur CERT_POLICIES_INFO yang dikodekan yang berisi kebijakan aplikasi sertifikat akar untuk konteks. Properti ini dapat didekodekan dengan menggunakan fungsi CryptDecodeObject dengan parameter lpszStructType diatur ke X509_CERT_POLICIES dan parameter dwCertEncodingType diatur ke kombinasi X509_ASN_ENCODING bitwise ATAUPKCS_7_ASN_ENCODING.

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_SIGN_HASH_CNG_ALG_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini secara implisit diatur dengan memanggil fungsi CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Pengidentifikasi ini tidak didukung.

CERT_SHA1_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_HASH_BLOB .

Properti ini secara implisit diatur oleh panggilan ke fungsi CertGetCertificateContextProperty .

CERT_SIGNATURE_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_HASH_BLOB .

Jika hash tanda tangan tidak ada, hash tersebut dihitung dengan menggunakan fungsi CryptHashToBeSigned . pvData menunjuk ke hash yang ada atau dihitung. Biasanya, panjang hash adalah 20 byte untuk SHA dan 16 untuk MD5.

CERT_SMART_CARD_DATA_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini mengatur properti data kartu pintar dari konteks sertifikat kartu pintar.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini mengatur properti informasi konteks sertifikat akar kartu pintar.

CERT_SOURCE_LOCATION_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_SOURCE_URL_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_SUBJECT_DISABLE_CRL_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_SUBJECT_INFO_ACCESS_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini menetapkan ekstensi akses informasi subjek dari konteks sertifikat sebagai struktur CERT_SUBJECT_INFO_ACCESS yang dikodekan.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Mengembalikan hash MD5 dari nama subjek yang dikodekan dari konteks sertifikat.

CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini secara implisit diatur dengan memanggil fungsi CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Pengidentifikasi ini tidak didukung.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_DATA_BLOB .

Properti ini menetapkan hash MD5 dari kunci umum sertifikat ini.

pvData adalah penunjuk ke struktur CRYPT_DATA_BLOB .

Pengguna dapat menentukan jenis dwPropId tambahan dengan menggunakan nilai DWORD dari CERT_FIRST_USER_PROP_ID ke CERT_LAST_USER_PROP_ID. Untuk semua jenis dwPropId yang ditentukan pengguna, pvData menunjuk ke struktur CRYPT_DATA_BLOB yang dikodekan.

[in] dwFlags

CERT_STORE_NO_CRYPT_RELEASE_FLAG dapat diatur untuk properti dwPropId CERT_KEY_PROV_HANDLE_PROP_ID atau CERT_KEY_CONTEXT_PROP_ID.

Jika nilai CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG diatur, kesalahan penulisan penyedia apa pun diabaikan dan properti konteks yang di-cache selalu diatur.

Jika CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG diatur, kumpulan properti konteks apa pun tidak akan dipertahankan.

[in] pvData

Penunjuk ke jenis data yang ditentukan oleh nilai dwPropId.

Catatan Untuk dwPropId apa pun, mengatur pvData ke NULL akan menghapus properti .
 

Mengembalikan nilai

Jika fungsi berhasil, fungsi mengembalikan TRUE.

Jika fungsi gagal, fungsi mengembalikan FALSE. Untuk informasi kesalahan yang diperluas, hubungi GetLastError. Salah satu kemungkinan kode kesalahan adalah sebagai berikut.

Menampilkan kode Deskripsi
E_INVALIDARG
Properti tidak valid. Pengidentifikasi yang ditentukan lebih besar dari 0x0000FFFF, atau, untuk properti CERT_KEY_CONTEXT_PROP_ID, anggota cbSize yang tidak valid ditentukan dalam struktur CERT_KEY_CONTEXT .

Keterangan

Jika properti sudah ada, nilai lamanya akan diganti.

Kode Anda dapat menggunakan makro untuk mengevaluasi kelas hash untuk konteks sertifikat. Header Wincrypt.h menentukan makro berikut untuk tujuan ini. Makro ini digunakan secara internal oleh fungsi CertSetCertificateContextProperty .

IS_CERT_HASH_PROP_ID(X)IS_PUBKEY_HASH_PROP_ID(X)IS_CHAIN_HASH_PROP_ID(X) Setiap makro mengambil nilai dwPropId (X) sebagai input dan mengevaluasi ke nilai Boolean. Tabel berikut ini memperlihatkan nilai dwPropId yang mengevaluasi ke TRUE untuk setiap makro.

Makro Mengevaluasi ke TRUE jika dwPropId adalah
IS_CERT_HASH_PROP_ID(dwPropId)
CERT_SHA1_HASH_PROP_ID,
CERT_MD5_HASH_PROP_ID, atau
CERT_SIGNATURE_HASH_PROP_ID
IS_PUBKEY_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID atau
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
IS_CHAIN_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID, atau
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
 

Makro IS_STRONG_SIGN_PROP_ID(x) mengevaluasi ke TRUE jika properti CERT_SIGN_HASH_CNG_ALG_PROP_ID, CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID, atau CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID diatur dalam parameter dwPropId .

Contoh

Untuk contoh yang menggunakan fungsi ini, lihat Contoh Program C: Mendapatkan dan Mengatur Properti Sertifikat.

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

CERT_ALT_NAME_INFO

CERT_CONTEXT

CERT_ENHKEY_USAGE

CERT_KEY_CONTEXT

CROSS_CERT_DIST_POINTS_INFO

CRYPT_DATA_BLOB

CRYPT_HASH_BLOB

CRYPT_KEY_PROV_INFO

CTL_USAGE

CertGetCertificateContextProperty

CertSetCRLContextProperty

CryptEncodeObject

CryptHashToBesigned

Fungsi Properti yang Diperluas