struktur CMSG_SIGNER_ENCODE_INFO (wincrypt.h)

Struktur CMSG_SIGNER_ENCODE_INFO berisi informasi penanda tangan. Ini diteruskan ke CryptMsgCountersign, CryptMsgCountersignEncoded, dan secara opsional ke CryptMsgOpenToEncode sebagai anggota struktur CMSG_SIGNED_ENCODE_INFO , jika parameter dwMsgType CMSG_SIGNED.

Sintaks

typedef struct _CMSG_SIGNER_ENCODE_INFO {
  DWORD                      cbSize;
  PCERT_INFO                 pCertInfo;
  union {
    HCRYPTPROV        hCryptProv;
    NCRYPT_KEY_HANDLE hNCryptKey;
    BCRYPT_KEY_HANDLE hBCryptKey;
  } DUMMYUNIONNAME;
  DWORD                      dwKeySpec;
  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  void                       *pvHashAuxInfo;
  DWORD                      cAuthAttr;
  PCRYPT_ATTRIBUTE           rgAuthAttr;
  DWORD                      cUnauthAttr;
  PCRYPT_ATTRIBUTE           rgUnauthAttr;
  CERT_ID                    SignerId;
  CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
  void                       *pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;

Anggota

cbSize

Ukuran, dalam byte, dari struktur ini.

pCertInfo

Penunjuk ke struktur CERT_INFO yang berisi

Penerbit, SerialNumber, dan anggota SubjectPublicKeyInfo .

Anggota pbData dari struktur Penerbit dan SerialNumber digabungkan secara unik mengidentifikasi sertifikat. Anggota Algoritma dari struktur SubjectPublicKeyInfo menentukan algoritma enkripsi hash yang digunakan.

DUMMYUNIONNAME

DUMMYUNIONNAME.hCryptProv

Handel ke penyedia layanan kriptografi (CSP). Jika HashEncryptionAlgorithm diatur ke szOID_PKIX_NO_SIGNATURE, handel ini dapat menjadi penanganan CSP yang diperoleh dengan menggunakan parameter dwFlags yang diatur ke CRYPT_VERIFYCONTEXT. Fungsi CNG NCryptIsKeyHandle dipanggil untuk menentukan pilihan gabungan.

DUMMYUNIONNAME.hNCryptKey

Handel ke CNG CSP. Fungsi CNG NCryptIsKeyHandle dipanggil untuk menentukan pilihan gabungan. Algoritma enkripsi baru hanya didukung dalam fungsi CNG. Fungsi CNG NCryptTranslateHandle akan dipanggil untuk mengonversi pilihan CryptoAPI hCryptProv jika perlu. Kami menyarankan agar aplikasi meneruskan, ke anggota hNCryptKey , handel CNG CSP yang dikembalikan dari fungsi NCryptOpenKey .

DUMMYUNIONNAME.hBCryptKey

dwKeySpec

Menentukan kunci privat yang akan digunakan. Anggota ini tidak digunakan ketika anggota hNCryptKey digunakan.

Jika dwKeySpec adalah nol, maka nilai AT_KEYEXCHANGE default digunakan.

Nilai dwKeySpec berikut didefinisikan untuk penyedia default.

Nilai Makna
AT_KEYEXCHANGE
Kunci yang digunakan untuk mengenkripsi/mendekripsi kunci sesi.
AT_SIGNATURE
Kunci yang digunakan untuk membuat dan memverifikasi tanda tangan digital.

HashAlgorithm

Struktur CRYPT_ALGORITHM_IDENTIFIER yang menentukan algoritma hash.

pvHashAuxInfo

Tidak digunakan. Anggota ini harus diatur ke NULL.

cAuthAttr

Jumlah elemen dalam array rgAuthAttr . Jika tidak ada atribut terautentikasi yang ada di rgAuthAttr, maka cAuthAttr adalah nol.

rgAuthAttr

Array pointer ke struktur CRYPT_ATTRIBUTE , yang masing-masing berisi informasi atribut yang diautentikasi.

Standar PKCS #9 menentukan bahwa jika ada atribut, setidaknya harus ada dua: pengidentifikasi objek jenis konten (OID) dan hash pesan. Atribut ini secara otomatis ditambahkan oleh sistem.

cUnauthAttr

Jumlah elemen dalam array rgUnauthAttr . Jika tidak ada atribut yang tidak terauthenticated, cUnauthAttr adalah nol.

rgUnauthAttr

Array penunjuk ke struktur CRYPT_ATTRIBUTE , yang masing-masing berisi informasi atribut yang tidak diaturentikasi. Atribut yang tidak terauthenticated dapat berisi countersignature, di antara kegunaan lainnya.

SignerId

Struktur CERT_ID yang berisi pengidentifikasi unik sertifikat penanda tangan. Anggota ini secara opsional dapat digunakan dengan PKCS #7 dengan Sintaks Pesan Kriptografi (CMS). Jika anggota ini bukan NULL dan anggota dwIdChoice-nya bukan nol, maka digunakan untuk mengidentifikasi sertifikat alih-alih anggota Penerbit dan SerialNumber dari struktur CERT_INFO yang ditunjukkan oleh pCertInfo. CMS mendukung struktur KEY_IDENTIFIER dan ISSUER_SERIAL_NUMBER CERT_ID. PKCS versi 1.5 hanya mendukung pilihan ISSUER_SERIAL_NUMBER CERT_ID. Anggota ini digunakan dengan CMS untuk pemrosesan PKCS #7 dan hanya dapat digunakan jika CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS ditentukan.

HashEncryptionAlgorithm

Struktur CRYPT_ALGORITHM_IDENTIFIER secara opsional digunakan dengan PKCS #7 dengan CMS. Jika anggota ini bukan NULL, algoritma yang diidentifikasi digunakan alih-alih algoritma SubjectPublicKeyInfo.Algorithm. Jika anggota ini diatur ke szOID_PKIX_NO_SIGNATURE, nilai tanda tangan hanya berisi oktet hash.

Untuk RSA, algoritma enkripsi hash biasanya sama dengan algoritma kunci publik. Untuk DSA, algoritma enkripsi hash biasanya merupakan algoritma tanda tangan DSS.

Anggota ini digunakan dengan CMS untuk pemrosesan PKCS #7 dan hanya dapat digunakan jika CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS ditentukan.

pvHashEncryptionAuxInfo

Anggota ini tidak digunakan. Anggota ini harus diatur ke NULL jika ada dalam struktur data. Anggota ini hanya ada jika CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS ditentukan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Header wincrypt.h

Lihat juga

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptMsgControl

CryptMsgCountersign