Fungsi CertGetCertificateContextProperty (wincrypt.h)

Fungsi CertGetCertificateContextProperty mengambil informasi yang terkandung dalam properti yang diperluas dari konteks sertifikat.

Sintaks

BOOL CertGetCertificateContextProperty(
  [in]      PCCERT_CONTEXT pCertContext,
  [in]      DWORD          dwPropId,
  [out]     void           *pvData,
  [in, out] DWORD          *pcbData
);

Parameter

[in] pCertContext

Penunjuk ke struktur CERT_CONTEXTsertifikat yang berisi properti yang akan diambil.

[in] dwPropId

Properti yang akan diambil. Pengidentifikasi yang ditentukan saat ini dan jenis data yang akan dikembalikan dalam pvData tercantum dalam tabel berikut.

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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan hash kunci terenkripsi yang disimpan sebelumnya untuk konteks sertifikat.

CERT_ARCHIVED_PROP_ID

Jenis data pvData: NULL. Jika fungsi CertGetCertificateContextProperty mengembalikan true, maka ID properti yang ditentukan ada untuk CERT_CONTEXT.

Menunjukkan sertifikat dilewati selama enumerasi. Sertifikat dengan set properti ini ditemukan dengan operasi pencarian eksplisit, seperti yang digunakan untuk menemukan sertifikat dengan hash tertentu atau nomor seri. Tidak ada data dalam pvData yang terkait dengan properti ini.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_AUTO_ENROLL_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan string Unicode yang dihentikan null yang menamai jenis sertifikat yang sertifikatnya telah didaftarkan secara otomatis.

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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Lokasi sertifikat silang. Saat ini, pengidentifikasi ini hanya berlaku untuk sertifikat dan bukan untuk CRL atau daftar kepercayaan sertifikat (CCL).

Array BYTE berisi struktur CROSS_CERT_DIST_POINTS_INFO yang dikodekan ASN.1 yang dikodekan dengan menggunakan fungsi CryptDecodeObject dengan nilai X509_CROSS_CERT_DIST_POINTS untuk parameter lpszStuctType .

CERT_CTL_USAGE_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan array byte yang berisi struktur CTL_USAGE yang dikodekan ASN.1.

CERT_DATE_STAMP_PROP_ID

Jenis data pvData: Penunjuk ke struktur FILETIME .

Waktu ketika sertifikat ditambahkan ke penyimpanan.

CERT_DESCRIPTION_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan properti yang 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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan array byte yang berisi struktur CERT_ENHKEY_USAGE yang dikodekan ASN.1. Struktur ini berisi array pengidentifikasi objek Penggunaan Kunci yang Ditingkatkan (OID), yang masing-masing menentukan penggunaan sertifikat yang valid.

CERT_ENROLLMENT_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan string karakter Unicode yang dihentikan null 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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan string karakter Unicode yang dihentikan null yang berisi nama tampilan untuk sertifikat.

CERT_HASH_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan hash SHA1. Jika hash tidak ada, hash dihitung dengan menggunakan fungsi CryptHashCertificate .

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

Jenis data pvData: Penunjuk ke jenis data HCRYPTPROV_OR_NCRYPT_KEY_HANDLE .

Mengembalikan pilihan HCRYPTPROV atau NCRYPT_KEY_HANDLE .

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Mengembalikan handel kunci Cryptography API (CAPI) yang terkait dengan sertifikat. Pemanggil bertanggung jawab untuk membebaskan handel. Ini tidak akan dikosongkan ketika konteks dikosongkan. Nilai properti dihapus setelah dikembalikan. Jika Anda memanggil properti ini pada konteks yang memiliki kunci CNG, CRYPT_E_NOT_FOUND dikembalikan.

CERT_IE30_RESERVED_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Hash MD5 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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

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 .

Mengembalikan struktur CERT_KEY_CONTEXT .

CERT_KEY_IDENTIFIER_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Jika tidak ada, cari ekstensi szOID_SUBJECT_KEY_IDENTIFIER. Jika gagal, hash SHA1 dilakukan pada anggota SubjectPublicKeyInfo sertifikat untuk menghasilkan nilai pengidentifikasi.

CERT_KEY_PROV_HANDLE_PROP_ID

Jenis data pvData: Penunjuk ke nilai HCRYPTPROV .

Mengembalikan handel penyedia yang diperoleh dari CERT_KEY_CONTEXT_PROP_ID.

CERT_KEY_PROV_INFO_PROP_ID

Jenis data pvData: Penunjuk ke struktur CRYPT_KEY_PROV_INFO .

Mengembalikan penunjuk ke struktur CRYPT_KEY_PROV_INFO .

CERT_KEY_SPEC_PROP_ID

Jenis data pvData: Penunjuk ke nilai DWORD .

Mengembalikan nilai DWORD yang menentukan kunci privat yang diperoleh dari CERT_KEY_CONTEXT_PROP_ID jika ada. Jika tidak, jika CERT_KEY_PROV_INFO_PROP_ID ada, itu adalah sumber dwKeySpec.

CERT_MD5_HASH_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan hash MD5. Jika hash tidak ada, hash dihitung dengan menggunakan fungsi CryptHashCertificate .

CERT_NCRYPT_KEY_HANDLE_PROP_ID

Jenis data pvData: Penunjuk ke jenis data NCRYPT_KEY_HANDLE .

Mengembalikan pilihan CERT_NCRYPT_KEY_SPEC jika berlaku.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Mengembalikan handel kunci CNG yang terkait dengan sertifikat. Pemanggil bertanggung jawab untuk membebaskan handel. Ini tidak akan dikosongkan ketika konteks dikosongkan. Nilai properti dihapus setelah dikembalikan. Jika Anda memanggil properti ini pada konteks yang memiliki kunci warisan (CAPI), CRYPT_E_NOT_FOUND dikembalikan.

CERT_NEW_KEY_PROP_ID

Pengidentifikasi ini dicadangkan.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan struktur CERT_ALT_NAME_INFO yang dikodekan ASN.1.

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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan respons OCSP yang dikodekan untuk sertifikat ini.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

Jenis data pvData: Penunjuk ke string Unicode yang dihentikan null.

Mengembalikan string L"<PUBKEY>/<BITLENGTH>" yang mewakili algoritma kunci publik sertifikat dan panjang bit. Algoritma PUBKEY> berikut< didukung:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Windows 8 dan Windows Server 2012: Dukungan untuk properti ini dimulai.

CERT_PUBKEY_ALG_PARA_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Untuk kunci publik yang mendukung pewarisan parameter algoritma, mengembalikan parameter Algoritma PublicKey yang dikodekan ASN.1. Untuk Digital Signature Standard (DSS), mengembalikan parameter yang dikodekan dengan menggunakan fungsi CryptEncodeObject . Properti 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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan string karakter lebar Unicode yang dihentikan null yang berisi nama file yang berisi kunci privat yang terkait dengan kunci umum sertifikat.

CERT_RENEWAL_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan hash sertifikat yang diperbarui.

CERT_REQUEST_ORIGINATOR_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan 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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

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_SHA1_HASH_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan hash SHA1. Jika hash tidak ada, hash dihitung dengan menggunakan fungsi CryptHashCertificate .

CERT_SIGN_HASH_CNG_ALG_PROP_ID

Jenis data pvData: Penunjuk ke string Unicode yang dihentikan null.

Mengembalikan string L"<SIGNATURE>/<HASH>" yang mewakili tanda tangan sertifikat. Nilai <SIGNATURE> mengidentifikasi algoritma kunci publik CNG. Algoritma berikut didukung:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Nilai <HASH> mengidentifikasi algoritma hash CNG. Algoritma berikut didukung:
  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)
Berikut ini adalah contoh umum:
  • L"RSA/SHA1"
  • L"RSA/SHA256"
  • L"ECDSA/SHA256"
Windows 7 dan Windows Server 2008 R2: Dukungan untuk properti ini dimulai.

CERT_SIGNATURE_HASH_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan hash tanda tangan. Jika hash tidak ada, hash dihitung dengan menggunakan fungsi CryptHashToBeSigned . Panjang hash adalah 20 byte untuk SHA dan 16 untuk MD5.

CERT_SMART_CARD_DATA_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan penunjuk ke data kartu pintar yang dikodekan. Sebelum memanggil CertGetCertificateContextProperty, Anda dapat menggunakan konstanta ini untuk mengambil sertifikat kartu pintar dengan menggunakan fungsi CertFindCertificateInStore dengan parameter pvFindPara yang diatur ke CERT_SMART_CARD_DATA_PROP_ID dan parameter dwFindType diatur ke CERT_FIND_PROPERTY.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan penunjuk ke struktur CRYPT_SMART_CARD_ROOT_INFO yang dikodekan.

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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan 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 array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

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 nilai DWORD .

Mengembalikan panjang, dalam bit, dari kunci publik dalam sertifikat.

Windows 8 dan Windows Server 2012: Dukungan untuk properti ini dimulai.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

Jenis data pvData: Penunjuk ke array nilai BYTE . Ukuran array ini ditentukan dalam parameter pcbData .

Mengembalikan hash MD5 dari kunci umum sertifikat ini.

Untuk semua pengidentifikasi properti yang ditentukan pengguna, pvData menunjuk ke array nilai BYTE .

Untuk informasi selengkapnya tentang setiap pengidentifikasi properti, lihat dokumentasi tentang parameter dwPropId di CertSetCertificateContextProperty.

[out] pvData

Penunjuk ke buffer untuk menerima data seperti yang ditentukan oleh dwPropId. Struktur yang ditujukkan oleh anggota struktur yang dikembalikan juga dikembalikan mengikuti struktur dasar. Oleh karena itu, ukuran yang terkandung dalam pcbData sering melebihi ukuran struktur dasar.

Parameter ini bisa NULL untuk mengatur ukuran informasi untuk tujuan alokasi memori. Untuk informasi selengkapnya, lihat Mengambil Data Dengan Panjang Tidak Diketahui.

[in, out] pcbData

Penunjuk ke nilai DWORD yang menentukan ukuran, dalam byte, dari buffer yang diacu oleh parameter pvData . Saat fungsi kembali, nilai DWORD berisi jumlah byte yang akan disimpan dalam buffer.

Untuk mendapatkan ukuran buffer yang diperlukan pada durasi, berikan NULL untuk parameter pvData , dan atur nilai yang ditunjukkan oleh parameter ini ke nol. Jika parameter pvData bukan NULL dan ukuran yang ditentukan dalam pcbData kurang dari jumlah byte yang diperlukan untuk memuat data, fungsi gagal, GetLastError mengembalikan ERROR_MORE_DATA, dan ukuran yang diperlukan ditempatkan dalam variabel yang ditunjukkan oleh parameter pcbData .

Catatan Saat memproses data yang dikembalikan dalam buffer, aplikasi harus menggunakan ukuran aktual data yang dikembalikan. Ukuran aktual bisa sedikit lebih kecil dari ukuran buffer yang ditentukan pada input. (Pada input, ukuran buffer biasanya ditentukan cukup besar untuk memastikan bahwa data output terbesar yang mungkin cocok dalam buffer.) Pada output, variabel yang diacu oleh parameter ini diperbarui untuk mencerminkan ukuran aktual data yang disalin ke buffer.
 

Mengembalikan nilai

Jika fungsi berhasil, fungsi mengembalikan TRUE.

Jika fungsi gagal, fungsi akan mengembalikan FALSE. Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

Beberapa kemungkinan kode kesalahan mengikuti.

Menampilkan kode Deskripsi
CRYPT_E_NOT_FOUND
Sertifikat tidak memiliki properti yang ditentukan.
ERROR_MORE_DATA
Jika buffer yang ditentukan oleh parameter pvData tidak cukup besar untuk menyimpan data yang dikembalikan, fungsi mengatur kode ERROR_MORE_DATA dan menyimpan ukuran buffer yang diperlukan, dalam byte, dalam variabel yang ditunjukkan oleh pcbData.
 

Kesalahan dari fungsi yang disebut CryptHashCertificate dapat disebarluaskan ke fungsi ini.

Keterangan

Properti tidak disimpan di dalam sertifikat. Biasanya, sertifikat dikaitkan dengan sertifikat setelah respons sertifikat diterima lalu disimpan dengan sertifikat di penyimpanan. Untuk alasan keamanan, kami sarankan Anda memvalidasi nilai properti sebelum menyimpannya dan anda hanya menyimpan properti informasi seperti nilai CERT_FRIENDLY_NAME_PROP_ID di penyimpanan pengguna. Semua tipe properti lainnya harus disimpan di penyimpanan komputer lokal.

Kode Anda dapat menggunakan makro untuk mengevaluasi kelas hash untuk konteks sertifikat. Untuk informasi selengkapnya, lihat CertSetCertificateContextProperty.

Contoh

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

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_KEY_CONTEXT

CertCreateCertificateContext

CertSetCertificateContextProperty

CryptHashCertificate

CryptHashToBesigned

Fungsi Properti yang Diperluas