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.
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 |