Fungsi CryptSignCertificate (wincrypt.h)

Fungsi CryptSignCertificate menandatangani informasi "yang akan ditandatangani" dalam konten yang ditandatangani yang dikodekan.

Sintaks

BOOL CryptSignCertificate(
  [in]      BCRYPT_KEY_HANDLE           hBCryptKey,
  [in]      DWORD                       dwKeySpec,
  [in]      DWORD                       dwCertEncodingType,
  [in]      const BYTE                  *pbEncodedToBeSigned,
  [in]      DWORD                       cbEncodedToBeSigned,
  [in]      PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
  [in]      const void                  *pvHashAuxInfo,
  [out]     BYTE                        *pbSignature,
  [in, out] DWORD                       *pcbSignature
);

Parameter

[in] hBCryptKey

Menangani CSP yang melakukan tanda tangan. Handel ini harus berupa 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 bisa AT_KEYEXCHANGE atau AT_SIGNATURE. Parameter ini diabaikan jika NCRYPT_KEY_HANDLE digunakan dalam parameter hCryptProvOrNCryptKey .

[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 saat ini ditentukan adalah:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbEncodedToBeSigned

Penunjuk ke konten yang dikodekan untuk ditandatangani.

[in] cbEncodedToBeSigned

Ukuran, dalam byte, dari konten yang dikodekan, pbEncodedToBeSigned.

[in] pSignatureAlgorithm

Penunjuk ke struktur CRYPT_ALGORITHM_IDENTIFIER dengan anggota pszObjId diatur ke salah satu hal berikut ini:

  • szOID_RSA_MD5RSA
  • szOID_RSA_SHA1RSA
  • szOID_X957_SHA1DSA
  • szOID_RSA_SSA_PSS
  • szOID_ECDSA_SPECIFIED
Jika algoritma tanda tangan adalah algoritma hash, tanda tangan hanya berisi oktet hash yang tidak dienkripsi. Kunci privat tidak digunakan untuk mengenkripsi hash. dwKeySpec tidak digunakan dan hCryptProvOrNCryptKey dapat berupa NULL jika CSP default yang sesuai dapat digunakan untuk hashing.

[in] pvHashAuxInfo

Saat ini tidak digunakan. Harus NULL.

[out] pbSignature

Penunjuk ke buffer untuk menerima hash konten yang ditandatangani.

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] pcbSignature

Penunjuk ke DWORD yang berisi ukuran, dalam byte, dari buffer yang diarahkan oleh parameter pbSignature . Saat fungsi kembali, DWORD berisi jumlah byte yang disimpan atau disimpan dalam buffer.

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 akan pas di buffer.) Pada output, variabel yang diacu oleh parameter ini diperbarui untuk mencerminkan ukuran aktual data yang disalin ke buffer.
 

Nilai kembali

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.

Catatan Kesalahan dari fungsi yang disebut CryptCreateHash, CryptSignHash dan CryptHashData mungkin disebarluaskan ke fungsi ini.
 
Fungsi ini memiliki kode kesalahan berikut.
Menampilkan kode Deskripsi
ERROR_MORE_DATA
Jika buffer yang ditentukan oleh parameter pbSignature 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 pcbSignature.
NTE_BAD_ALGID
Pengidentifikasi objek algoritma tanda tangan (OID) tidak memetakan ke algoritma hash yang diketahui atau didukung.

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

Lihat juga

CryptSignAndEncodeCertificate

Fungsi Manajemen Data