CRYPT_SIGN_MESSAGE_PARA-Struktur (wincrypt.h)

Die CRYPT_SIGN_MESSAGE_PARA-Struktur enthält Informationen zum Signieren von Nachrichten mithilfe eines angegebenen Signaturzertifikatkontexts.

Syntax

typedef struct _CRYPT_SIGN_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  PCCERT_CONTEXT             pSigningCert;
  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  void                       *pvHashAuxInfo;
  DWORD                      cMsgCert;
  PCCERT_CONTEXT             *rgpMsgCert;
  DWORD                      cMsgCrl;
  PCCRL_CONTEXT              *rgpMsgCrl;
  DWORD                      cAuthAttr;
  PCRYPT_ATTRIBUTE           rgAuthAttr;
  DWORD                      cUnauthAttr;
  PCRYPT_ATTRIBUTE           rgUnauthAttr;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
  CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
  void                       *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;

Member

cbSize

Größe dieser Struktur in Bytes.

dwMsgEncodingType

Verwendeter Codierungstyp. Es ist immer akzeptabel, sowohl den Zertifikat- als auch den Nachrichtencodierungstyp anzugeben, indem sie mit einem bitweisen OR-Vorgang kombiniert werden, wie im folgenden Beispiel gezeigt:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Derzeit definierte Codierungstypen sind:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

pSigningCert

Ein Zeiger auf die CERT_CONTEXT , die bei der Signatur verwendet werden soll.

Entweder die CERT_KEY_PROV_INFO_PROP_ID oder CERT_KEY_CONTEXT_PROP_ID-Eigenschaft muss für den Kontext festgelegt werden, um Zugriff auf den privaten Signaturschlüssel zu gewähren.

HashAlgorithm

CRYPT_ALGORITHM_IDENTIFIER mit dem Hashingalgorithmus, der zum Hashen der zu signierten Daten verwendet wird.

pvHashAuxInfo

Derzeit nicht verwendet, und muss auf NULL festgelegt werden.

cMsgCert

Anzahl der Elemente im rgpMsgCert-Array von CERT_CONTEXT Strukturen. Wenn auf null festgelegt ist, sind keine Zertifikate in der signierten Nachricht enthalten.

rgpMsgCert

Array von Zeigern auf CERT_CONTEXT Strukturen, die in die signierte Nachricht eingeschlossen werden sollen. Wenn das pSigningCert eingeschlossen werden soll, muss sich ein Zeiger darauf im rgpMsgCert-Array befinden.

cMsgCrl

Anzahl der Elemente im rgpMsgCrl-Array von Zeigern auf CRL_CONTEXT Strukturen. Wenn dieser Wert auf 0 festgelegt ist, sind keine CRL_CONTEXT Strukturen in der signierten Nachricht enthalten.

rgpMsgCrl

Array von Zeigern auf CRL_CONTEXT Strukturen, die in die signierte Nachricht eingeschlossen werden sollen.

cAuthAttr

Anzahl der Elemente im rgAuthAttr-Array . Wenn in rgAuthAttr keine authentifizierten Attribute vorhanden sind, wird dieser Member auf 0 (null) festgelegt.

rgAuthAttr

Array von Zeigern auf CRYPT_ATTRIBUTE Strukturen, die jeweils authentifizierte Attributinformationen enthalten. Wenn authentifizierte Attribute vorhanden sind, schreibt der PKCS #9-Standard vor, dass mindestens zwei Attribute vorhanden sein müssen: der Inhaltstypobjektbezeichner (OID) und der Hash der Nachricht selbst. Diese Attribute werden automatisch vom System hinzugefügt.

cUnauthAttr

Anzahl der Elemente im rgUnauthAttr-Array . Wenn in rgUnauthAttr keine nicht authentifizierten Attribute vorhanden sind, ist dieser Member null.

rgUnauthAttr

Array von Zeigern auf CRYPT_ATTRIBUTE Strukturen, die jeweils nicht authentifizierte Attributinformationen enthalten. Nicht authentifizierte Attribute können unter anderem verwendet werden, um Gegensignaturen zu enthalten.

dwFlags

Normalerweise 0. Wenn die codierte Ausgabe ein CMSG_SIGNED innerer Inhalt einer äußeren kryptografischen Nachricht sein soll, z. B. eine CMSG_ENVELOPED Nachricht, muss die CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG festgelegt werden. Wenn sie nicht festgelegt ist, wird die Nachricht als innerer Inhaltstyp CMSG_DATA codiert.

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG kann so festgelegt werden, dass innere Inhalte , die keine Daten enthalten, in eine OKTETTZEICHENFOLGE gekapselt werden. CRYPT_MESSAGE_KEYID_SIGNER_FLAG kann so festgelegt werden, dass Die Unterzeichner anhand ihres Schlüsselbezeichners und nicht anhand des Ausstellers und der Seriennummer identifiziert werden.

CRYPT_MESSAGE_SILENT_KEYSET_FLAG kann so festgelegt werden, dass eine beliebige Benutzeroberfläche durch den CSP unterdrückt wird. Weitere Informationen zum CRYPT_SILENT-Flag finden Sie unter CryptAcquireContext.

dwInnerContentType

Normalerweise 0. Legen Sie auf den Codierungstyp der Eingabenachricht fest, wenn die zu signierte Eingabe die codierte Ausgabe einer anderen kryptografischen Nachricht ist.

HashEncryptionAlgorithm

Ein CRYPT_ALGORITHM_IDENTIFIER. Wenn vorhanden und nicht NULL, wird es anstelle des PublicKeyInfo.Algorithm-Zertifikatselements des Signierers verwendet. Beachten Sie, dass der Hashverschlüsselungsalgorithmus für RSA normalerweise mit dem Algorithmus für öffentliche Schlüssel identisch ist. Für DSA ist der Hashverschlüsselungsalgorithmus normalerweise ein DSS-Signaturalgorithmus. Dieser Member kann nur verwendet werden, wenn CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS definiert ist.

pvHashEncryptionAuxInfo

Derzeit nicht verwendet und muss auf NULL festgelegt werden. Dieser Member kann nur verwendet werden, wenn CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS definiert ist.

Hinweise

Die Member HashEncryptionAlgorithm und pvHashEncryptionAuxInfo können nur verwendet werden, wenn CRYPT_SIGN_MESSAGE_PARA_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_CONTEXT

CRL_CONTEXT

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptSignAndEncryptMessage

CryptSignMessage