Fungsi CertCreateCertificateContext (wincrypt.h)
Fungsi CertCreateCertificateContext membuat konteks sertifikat dari sertifikat yang dikodekan. Konteks yang dibuat tidak dipertahankan ke penyimpanan sertifikat. Fungsi ini membuat salinan sertifikat yang dikodekan dalam konteks yang dibuat.
Sintaks
PCCERT_CONTEXT CertCreateCertificateContext(
[in] DWORD dwCertEncodingType,
[in] const BYTE *pbCertEncoded,
[in] DWORD cbCertEncoded
);
Parameter
[in] dwCertEncodingType
Menentukan jenis pengodean yang digunakan. Selalu dapat diterima untuk menentukan jenis pengodean sertifikat dan pesan dengan menggabungkannya dengan operasi bitwise-OR seperti yang ditunjukkan dalam contoh berikut:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING Jenis pengodean yang ditentukan saat ini adalah:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pbCertEncoded
Penunjuk ke buffer yang berisi sertifikat yang dikodekan dari mana konteks akan dibuat.
[in] cbCertEncoded
Ukuran, dalam byte, dari buffer pbCertEncoded .
Nilai kembali
Jika fungsi berhasil, fungsi mengembalikan penunjuk ke CERT_CONTEXT baca-saja. Setelah Anda selesai menggunakan konteks sertifikat, bebaskan dengan memanggil fungsi CertFreeCertificateContext .
Jika fungsi tidak dapat mendekode dan membuat konteks sertifikat, fungsi mengembalikan NULL. Untuk informasi kesalahan yang diperluas, hubungi GetLastError. Beberapa kemungkinan kode kesalahan mengikuti.
Menampilkan kode | Deskripsi |
---|---|
|
Tipe pengodean sertifikat yang tidak valid ditentukan. Saat ini, hanya jenis X509_ASN_ENCODING yang didukung. |
Jika fungsi gagal, GetLastError dapat mengembalikan kesalahan pengodean/pendekodean Abstract Syntax Notation One (ASN.1). Untuk informasi tentang kesalahan ini, lihat Nilai Pengembalian Pengodean/Pendekodean ASN.1.
Keterangan
CERT_CONTEXT harus dibebaskan dengan memanggil CertFreeCertificateContext. CertDuplicateCertificateContext dapat dipanggil untuk membuat duplikat. CertSetCertificateContextProperty dan CertGetCertificateContextProperty dapat dipanggil untuk menyimpan dan membaca properti untuk sertifikat.
Contoh
Contoh berikut menunjukkan pembuatan konteks sertifikat dari sertifikat yang dikodekan. Konteks yang dibuat tidak dimasukkan ke dalam penyimpanan sertifikat. Untuk contoh lain yang menggunakan fungsi ini, lihat Contoh Program C: Operasi Penyimpanan Sertifikat.
#include <windows.h>
#include <stdio.h>
#include <Wincrypt.h>
#define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
void main()
{
PCCERT_CONTEXT pCertContext = NULL;
//------------------------------------------------------------------
// Create a new certificate from the encoded part of
// an available certificate. pDesiredCert is a previously
// assigned PCCERT_CONTEXT variable.
if(pCertContext = CertCreateCertificateContext(
MY_ENCODING_TYPE, // The encoding type
pDesiredCert->pbCertEncoded, // The encoded data from
// the certificate retrieved
pDesiredCert->cbCertEncoded)) // The length of the encoded data
{
printf("A new certificate has been created.\n");
// Use the certificate context as needed.
// ...
// When finished, free the certificate context.
CertFreeCertificateContext(pCertContext);
}
else
{
printf("A new certificate could not be created.\n");
exit(1);
}
}
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
CertDuplicateCertificateContext
CertGetCertificateContextProperty
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk