Fungsi CryptMsgVerifyCountersignatureEncodedEx (wincrypt.h)

Fungsi CryptMsgVerifyCountersignatureEncodedEx memverifikasi bahwa parameter pbSignerInfoCounterSignature berisi hash terenkripsi dari bidang encryptedDigest dari struktur parameter pbSignerInfo . Penanda tangan dapat berupa struktur CERT_PUBLIC_KEY_INFO , konteks sertifikat, atau konteks rantai.

Sintaks

BOOL CryptMsgVerifyCountersignatureEncodedEx(
  [in, optional] HCRYPTPROV_LEGACY hCryptProv,
  [in]           DWORD             dwEncodingType,
  [in]           PBYTE             pbSignerInfo,
  [in]           DWORD             cbSignerInfo,
  [in]           PBYTE             pbSignerInfoCountersignature,
  [in]           DWORD             cbSignerInfoCountersignature,
  [in]           DWORD             dwSignerType,
  [in]           void              *pvSigner,
                 DWORD             dwFlags,
                 void              *pvExtra
);

Parameter

[in, optional] hCryptProv

Parameter ini tidak digunakan dan harus diatur ke NULL.

Windows Server 2003 dan Windows XP: NULL atau handel penyedia kriptografi untuk digunakan untuk hash bidang encryptedDigest dari pbSignerInfo. Jenis data parameter ini adalah HCRYPTPROV.

Kecuali ada alasan kuat untuk meneruskan penyedia kriptografi tertentu di hCryptProv, teruskan NULL untuk menyebabkan penyedia RSA atau DSS default digunakan.

[in] dwEncodingType

Jenis pengodean yang digunakan. Saat ini, hanya X509_ASN_ENCODING dan PKCS_7_ASN_ENCODING yang digunakan; namun, jenis pengodean tambahan dapat ditambahkan di masa mendatang. Untuk salah satu jenis pengodean saat ini, gunakan:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] pbSignerInfo

Penunjuk ke BLOB yang dikodekan yang berisi penanda tangan konten pesan yang akan ditandatangani.

[in] cbSignerInfo

Jumlah, dalam byte, dari BLOB yang dikodekan untuk penanda tangan konten.

[in] pbSignerInfoCountersignature

Penunjuk ke BLOB yang dikodekan yang berisi informasi countersigner.

[in] cbSignerInfoCountersignature

Hitungan, dalam byte, dari BLOB yang dikodekan untuk penghitung pesan.

[in] dwSignerType

Struktur yang berisi informasi penanda tangan. Tabel berikut ini memperlihatkan nilai yang telah ditentukan sebelumnya dan struktur yang ditunjukkan.

Nilai Makna
CMSG_VERIFY_SIGNER_PUBKEY
pvSigner adalah penunjuk ke struktur CERT_PUBLIC_KEY_INFO .
CMSG_VERIFY_SIGNER_CERT
pvSigner adalah penunjuk ke struktur CERT_CONTEXT .
CMSG_VERIFY_SIGNER_CHAIN
pvSigner adalah penunjuk ke struktur CERT_CHAIN_CONTEXT .

[in] pvSigner

Penunjuk ke struktur CERT_PUBLIC_KEY_INFO , konteks sertifikat, atau konteks rantai tergantung pada nilai dwSignerType.

dwFlags

Bendera yang mengubah perilaku fungsi. Ini bisa nol atau nilai berikut.

Nilai Makna
CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG
0x00000001
Melakukan pemeriksaan tanda tangan yang kuat setelah verifikasi tanda tangan berhasil. Atur parameter pvExtra untuk menunjuk ke struktur CERT_STRONG_SIGN_PARA yang berisi parameter yang diperlukan untuk memeriksa kekuatan tanda tangan..

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

pvExtra

Jika Anda mengatur parameter dwFlags ke CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG, atur parameter ini (pvExtra) untuk menunjuk ke struktur CERT_STRONG_SIGN_PARA yang berisi parameter yang digunakan untuk memeriksa kekuatan tanda tangan.

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.

Kode kesalahan berikut paling sering dikembalikan oleh fungsi GetLastError .

Menampilkan kode Deskripsi
CRYPT_E_AUTH_ATTR_MISSING
Pesan tidak berisi atribut terautentikasi yang diharapkan.
CRYPT_E_HASH_VALUE
Nilai hash tidak benar.
CRYPT_E_UNEXPECTED_ENCODING
Pesan tidak dikodekan seperti yang diharapkan.
CRYPT_E_UNKNOWN_ALGO
Algoritma kriptografi tidak diketahui.
E_INVALIDARG
Satu atau beberapa argumen tidak valid.
E_OUTOFMEMORY
Kehabisan memori.
 

Kesalahan yang disebarkan dari fungsi berikut mungkin dikembalikan.

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

Verifikasi countersigner dilakukan menggunakan struktur PKCS #7 SIGNERINFO . Tanda tangan harus berisi hash terenkripsi dari bidang encryptedDigest dari pbSignerInfo.

Penerbit dan nomor seri countersigner harus cocok dengan informasi countersigner dari pbSignerInfoCountersignature. Satu-satunya bidang yang direferensikan dari pciCountersigner adalah SerialNumber, Issuer, dan SubjectPublicKeyInfo. SubjectPublicKeyInfo digunakan untuk mengakses kunci umum yang kemudian digunakan untuk mengenkripsi hash dari pciCountersigner sehingga bandingkan dengan hash dari pbSignerInfo.

Contoh

Untuk contoh yang menggunakan fungsi ini, lihat Contoh Program C: Pengodean dan Pendekodean Pesan CounterSigned.

Persyaratan

Persyaratan Nilai
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

CryptMsgCountersign

CryptMsgCountersignEncoded

Fungsi Pesan tingkat rendah

Fungsi Pesan yang Disederhanakan