Bagikan melalui


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
E_INVALIDARG
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

CERT_CONTEXT

CertCreateCRLContext

CertCreateCTLContext

CertDuplicateCertificateContext

CertFreeCertificateContext

CertGetCertificateContextProperty

CertSetCertificateContextProperty

Fungsi Sertifikat