CryptMsgEncodeAndSignCTL-Funktion (wincrypt.h)

Die Funktion CryptMsgEncodeAndSignCTL codiert eine CTL und erstellt eine signierte Nachricht, die die codierte CTL enthält.

Diese Funktion codiert zunächst die CTL, auf die pCtlInfo verweist, und ruft dann CryptMsgSignCTL auf, um die codierte Nachricht zu signieren.

Syntax

BOOL CryptMsgEncodeAndSignCTL(
  [in]      DWORD                    dwMsgEncodingType,
  [in]      PCTL_INFO                pCtlInfo,
  [in]      PCMSG_SIGNED_ENCODE_INFO pSignInfo,
  [in]      DWORD                    dwFlags,
  [out]     BYTE                     *pbEncoded,
  [in, out] DWORD                    *pcbEncoded
);

Parameter

[in] dwMsgEncodingType

Gibt den verwendeten Codierungstyp an. 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

[in] pCtlInfo

Ein Zeiger auf die CTL_INFO-Struktur , die die zu codierende und signierte CTL enthält.

[in] pSignInfo

Ein Zeiger auf eine CMSG_SIGNED_ENCODE_INFO-Struktur , die ein Array einer CMSG_SIGNER_ENCODE_INFO-Struktur enthält.

Die Nachricht kann ohne Signierer codiert werden, wenn der cbSize-Member der -Struktur auf die Größe der -Struktur festgelegt ist und alle anderen Member auf 0 (null) festgelegt sind.

[in] dwFlags

CMSG_ENCODE_SORTED_CTL_FLAG wird festgelegt, wenn die CTL-Einträge vor der Codierung sortiert werden sollen. Dieses Flag wird festgelegt, wenn die Funktionen CertFindSubjectInSortedCTL oder CertEnumSubjectInSortedCTL aufgerufen werden.

CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG wird festgelegt, wenn CMSG_ENCODE_SORTED_CTL_FLAG festgelegt ist, und der Bezeichner für trustedSubjects ein Hash ist, z. B. MD5 oder SHA1.

Wenn CMS_PKCS7 definiert ist, kann dwFlags auf CMSG_CMS_ENCAPSULATED_CTL_FLAG festgelegt werden, um eine CMS-kompatible V3 SignedData-Nachricht zu codieren.

[out] pbEncoded

Ein Zeiger auf einen Puffer, der die codierte, signierte Nachricht empfängt, die erstellt wurde.

Dieser Parameter kann NULL sein, um die Größe dieser Informationen für die Speicherbelegung festzulegen. Weitere Informationen finden Sie unter Abrufen von Daten mit unbekannter Länge.

[in, out] pcbEncoded

Ein Zeiger auf ein DWORD , der die Größe des pbEncoded-Puffers in Bytes angibt. Wenn die Funktion zurückgibt, enthält das DWORD die Anzahl der im Puffer gespeicherten oder zu speichernden Bytes.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich null (TRUE).

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE). Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Fehler können von Aufrufen von CryptMsgOpenToEncode und CryptMsgUpdate weitergegeben werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

CMSG_SIGNED_ENCODE_INFO

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

CryptMsgOpenToEncode

CryptMsgSignCTL

Überprüfungsfunktionen mithilfe von CTLs