Fungsi CryptSignAndEncodeCertificate (wincrypt.h)
Fungsi CryptSignAndEncodeCertificate mengodekan dan menandatangani sertifikat, daftar pencabutan sertifikat (CRL), daftar kepercayaan sertifikat (CTL), atau permintaan sertifikat.
Fungsi ini melakukan operasi berikut:
- Memanggil CryptEncodeObject menggunakan lpszStructType untuk mengodekan informasi "yang akan ditandatangani".
- Memanggil CryptSignCertificate untuk menandatangani informasi yang dikodekan ini.
- Memanggil CryptEncodeObject lagi, dengan lpszStructType diatur ke X509_CERT, untuk mengodekan lebih lanjut informasi yang ditandatangani dan dikodekan yang dihasilkan.
Sintaks
BOOL CryptSignAndEncodeCertificate(
[in] BCRYPT_KEY_HANDLE hBCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const void *pvStructInfo,
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
[in] const void *pvHashAuxInfo,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded
);
Parameter
[in] hBCryptKey
Handel penyedia layanan kriptografi (CSP) untuk melakukan tanda tangan. Handel ini adalah handel HCRYPTPROV yang telah dibuat dengan menggunakan fungsi CryptAcquireContext atau handel NCRYPT_KEY_HANDLE yang telah dibuat dengan menggunakan fungsi NCryptOpenKey . Aplikasi baru harus selalu meneruskan penanganan NCRYPT_KEY_HANDLE CSP CNG.
[in] dwKeySpec
Mengidentifikasi kunci privat yang akan digunakan dari kontainer penyedia. Ini harus menjadi salah satu nilai berikut. Parameter ini diabaikan jika kunci CNG diteruskan dalam parameter hCryptProvOrNCryptKey .
Nilai | Makna |
---|---|
|
Gunakan kunci pertukaran kunci. |
|
Gunakan kunci tanda tangan digital. |
[in] dwCertEncodingType
Menentukan jenis pengodean yang digunakan. Ini bisa menjadi nilai berikut.
Nilai | Makna |
---|---|
|
Menentukan pengodean sertifikat X.509 . |
[in] lpszStructType
Penunjuk ke string ANSI yang dihentikan null yang berisi jenis data yang akan dikodekan dan ditandatangani. Konstanta lpszStructType yang telah ditentukan sebelumnya berikut digunakan dengan operasi pengodean.
Nilai | Makna |
---|---|
|
pvStructInfo adalah alamat struktur CRL_INFO . |
|
pvStructInfo adalah alamat struktur CERT_REQUEST_INFO . |
|
pvStructInfo adalah alamat struktur CERT_INFO . |
|
pvStructInfo adalah alamat struktur CERT_KEYGEN_REQUEST_INFO . |
[in] pvStructInfo
Alamat struktur yang berisi data yang akan ditandatangani dan dikodekan. Format struktur ini ditentukan oleh parameter lpszStructType .
[in] pSignatureAlgorithm
Penunjuk ke struktur CRYPT_ALGORITHM_IDENTIFIER yang berisi pengidentifikasi objek (OID) algoritma tanda tangan dan parameter tambahan apa pun yang diperlukan. Fungsi ini menggunakan OID algoritma berikut:
- szOID_RSA_MD5RSA
- szOID_RSA_SHA1RSA
- szOID_X957_SHA1DSA
[in] pvHashAuxInfo
Dicadangkan. Harus NULL.
[out] pbEncoded
Penunjuk ke buffer untuk menerima output yang ditandatangani dan dikodekan.
Parameter ini bisa NULL untuk mengatur ukuran informasi ini untuk tujuan alokasi memori. Untuk informasi selengkapnya, lihat Mengambil Data Dengan Panjang Tidak Diketahui.
[in, out] pcbEncoded
Penunjuk ke DWORD yang berisi ukuran, dalam byte, dari buffer yang diacu oleh parameter pbEncoded . Saat fungsi kembali, DWORD berisi jumlah byte yang disimpan atau disimpan dalam buffer.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol (TRUE).
Jika fungsi gagal, nilai yang dikembalikan adalah nol (FALSE). Untuk informasi kesalahan yang diperluas, hubungi GetLastError.
Menampilkan kode | Deskripsi |
---|---|
|
Jika buffer yang ditentukan oleh parameter pbEncoded tidak cukup besar untuk menyimpan data yang dikembalikan, fungsi mengatur kode ERROR_MORE_DATA dan menyimpan ukuran buffer yang diperlukan, dalam byte, ke dalam variabel yang ditunjukkan oleh pcbEncoded. |
|
Tipe pengodean sertifikat tidak valid. Saat ini hanya X509_ASN_ENCODING yang didukung. |
|
OID algoritma tanda tangan tidak memetakan ke algoritma hash yang diketahui atau didukung. |
|
Terjadi kesalahan saat pengodean atau pendekodean. Penyebab paling mungkin dari kesalahan ini adalah inisialisasi bidang yang tidak tepat dalam struktur yang ditujukkan oleh pvStructInfo. |
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.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wincrypt.h |
Pustaka | Crypt32.lib |
DLL | Crypt32.dll |