Freigeben über


CMSG_SIGNER_ENCODE_INFO-Struktur (wincrypt.h)

Die CMSG_SIGNER_ENCODE_INFO-Struktur enthält Signiererinformationen. Er wird an CryptMsgCountersign, CryptMsgCountersignEncoded und optional an CryptMsgOpenToEncode als Member der CMSG_SIGNED_ENCODE_INFO-Struktur übergeben, wenn der dwMsgType-Parameter CMSG_SIGNED ist.

Syntax

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;

Member

cbSize

Die Größe (in Bytes) dieser Struktur.

pCertInfo

Ein Zeiger auf eine CERT_INFO-Struktur , die die

Issuer-, SerialNumber- und SubjectPublicKeyInfo-Member .

Die pbData-Member der Issuer - und SerialNumber-Strukturen identifizieren ein Zertifikat eindeutig. Das Algorithm-Element der SubjectPublicKeyInfo-Struktur gibt den verwendeten Hashverschlüsselungsalgorithmus an.

DUMMYUNIONNAME

DUMMYUNIONNAME.hCryptProv

Ein Handle für den Kryptografiedienstanbieter (Cryptographic Service Provider , CSP). Wenn HashEncryptionAlgorithm auf szOID_PKIX_NO_SIGNATURE festgelegt ist, kann dieses Handle das Handle eines CSP sein, der mithilfe des auf CRYPT_VERIFYCONTEXT festgelegten dwFlags-Parameters abgerufen wird. Die CNG-Funktion NCryptIsKeyHandle wird aufgerufen, um die Union-Auswahl zu bestimmen.

DUMMYUNIONNAME.hNCryptKey

Ein Handle für den CNG-CSP. Die CNG-Funktion NCryptIsKeyHandle wird aufgerufen, um die Union-Auswahl zu bestimmen. Neue Verschlüsselungsalgorithmen werden nur in CNG-Funktionen unterstützt. Die CNG-Funktion NCryptTranslateHandle wird aufgerufen, um bei Bedarf die Wahl CryptoAPI hCryptProv zu konvertieren. Es wird empfohlen, dass Anwendungen das CNG-CSP-Handle, das von der NCryptOpenKey-Funktion zurückgegeben wird, an das hNCryptKey-Element übergeben.

DUMMYUNIONNAME.hBCryptKey

dwKeySpec

Gibt den zu verwendenden privaten Schlüssel an. Dieses Element wird nicht verwendet, wenn das hNCryptKey-Element verwendet wird.

Wenn dwKeySpec null ist, wird der Standardwert AT_KEYEXCHANGE verwendet.

Die folgenden dwKeySpec-Werte sind für den Standardanbieter definiert.

Wert Bedeutung
AT_KEYEXCHANGE
Schlüssel, die zum Verschlüsseln/Entschlüsseln von Sitzungsschlüsseln verwendet werden.
AT_SIGNATURE
Schlüssel, die zum Erstellen und Überprüfen digitaler Signaturen verwendet werden.

HashAlgorithm

Eine CRYPT_ALGORITHM_IDENTIFIER-Struktur , die den Hashalgorithmus angibt.

pvHashAuxInfo

Wird nicht verwendet. Dieser Member muss auf NULL festgelegt werden.

cAuthAttr

Die Anzahl der Elemente im rgAuthAttr-Array . Wenn in rgAuthAttr keine authentifizierten Attribute vorhanden sind, ist cAuthAttr null.

rgAuthAttr

Ein Array von Zeigern auf CRYPT_ATTRIBUTE Strukturen, von denen jede authentifizierte Attributinformationen enthält.

Der PKCS #9-Standard schreibt vor, dass, wenn Attribute vorhanden sind, mindestens zwei vorhanden sein müssen: den Inhaltstypobjektbezeichner (OID) und den Hash der Nachricht. Diese Attribute werden automatisch vom System hinzugefügt.

cUnauthAttr

Die Anzahl der Elemente im rgUnauthAttr-Array . Wenn keine nicht authentifizierten Attribute vorhanden sind, ist cUnauthAttr null.

rgUnauthAttr

Ein Array von Zeigern auf CRYPT_ATTRIBUTE Strukturen, von denen jede nicht authentifizierte Attributinformationen enthält. Nicht authentifizierte Attribute können unter anderem Gegensignaturen enthalten.

SignerId

Eine CERT_ID-Struktur , die einen eindeutigen Bezeichner des Zertifikats des Unterzeichners enthält. Dieses Element kann optional mit PKCS #7 mit kryptografischer Nachrichtensyntax (CMS) verwendet werden. Wenn dieser Member nicht NULL ist und sein dwIdChoice-Element nicht null ist, wird es verwendet, um das Zertifikat anstelle der Issuer - und SerialNumber-Member der CERT_INFO Struktur zu identifizieren, auf die von pCertInfo verwiesen wird. CMS unterstützt die KEY_IDENTIFIER- und ISSUER_SERIAL_NUMBER CERT_ID-Strukturen. PKCS Version 1.5 unterstützt nur die ISSUER_SERIAL_NUMBER CERT_ID Wahl. Dieser Member wird mit CMS für die PKCS #7-Verarbeitung verwendet und kann nur verwendet werden, wenn CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS definiert ist.

HashEncryptionAlgorithm

Eine CRYPT_ALGORITHM_IDENTIFIER Struktur, die optional mit PKCS #7 mit CMS verwendet wird. Wenn dieser Member nicht NULL ist, wird der identifizierte Algorithmus anstelle des SubjectPublicKeyInfo.Algorithm-Algorithmus verwendet. Wenn dieser Member auf szOID_PKIX_NO_SIGNATURE festgelegt ist, enthält der Signaturwert nur die Hashoktette.

Bei RSA ist der Hashverschlüsselungsalgorithmus normalerweise mit dem Algorithmus für öffentliche Schlüssel identisch. Für DSA ist der Hashverschlüsselungsalgorithmus normalerweise ein DSS-Signaturalgorithmus.

Dieser Member wird mit CMS für die PKCS #7-Verarbeitung verwendet und kann nur verwendet werden, wenn CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS definiert ist.

pvHashEncryptionAuxInfo

Dieser Member wird nicht verwendet. Dieser Member muss auf NULL festgelegt werden, wenn es in der Datenstruktur vorhanden ist. Dieser Member ist nur vorhanden, wenn CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS definiert ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile wincrypt.h

Weitere Informationen

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptMsgControl

CryptMsgCountersign