Verfahren zum Signieren von Daten
Eine einzelne Funktion, CryptSignMessage,führt alle Aufgaben aus, die unter Erstellen einer signierten Nachricht aufgeführt sind. Die Initialisierung von Strukturen und anderen Daten ist jedoch weiterhin erforderlich. Die folgende Abbildung zeigt die Beziehung zwischen diesen Funktionsparametern, die auf Strukturen oder Arrays verweisen, und ihren initialisierten Daten. Die Abbildung zeigt nur die Funktionsparameter und Strukturmitglieder, die von anderen Strukturen oder Funktionen abgeleitet sind. Die restlichen Parameter sind einfache Initialisierungen.

So signieren Sie Daten mit CryptSignMessage
- Sie erhalten einen Zeiger auf die Daten, die signiert werden sollen.
- Weisen Sie den Zeiger auf die Daten zu, um 0 (null) eines Zu signierten Datenarrays zu indizieren.
- Hier erhalten Sie ein Handle für den Kryptografieanbieter.
- Öffnen Sie einen Zertifikatspeicher, der das Zertifikat des Signers enthält.
- Hier erhalten Sie eine Adresse für das Zertifikat des Signers.
- Weisen Sie die Adresse des Zertifikats dem Index 0 (null) des MsgCert-Arrays zu.
- Weisen Sie dem MsgCert-Array die Adressen anderer Zertifikate zu, die in die Nachricht eingeschlossen werden sollen.
- Initialisieren Sie die CRYPT _ ALGORITHM _ IDENTIFIER-Struktur, und initialisieren Sie den pszObjId-Member entsprechend dem gewünschten Hashalgorithmus und den anderen Membern.
- Initialisieren Sie die CRYPT _ SIGN MESSAGE _ _ PARA-Struktur, und initialisieren Sie das pSigningCert-Member auf die Adresse des Zertifikats des Signierers, das MsgCert-Arraymitglied auf die Adresse der Zertifikate des Signierers und anderer Zertifikate, das HashAlgorithm-Member auf die Adresse der CRYPT ALGORITHM _ _ IDENTIFIER-Struktur und die anderen Member nach Bezeichnern.
- Rufen Sie die CryptSignMessage-Funktion auf, und übergeben Sie dabei die CRYPT _ SIGN MESSAGE _ _ PARA-Struktur für den pSignPara-Parameter, die Adresse des Arrays "zu signierende Daten" für den Parameter rgpbToBeSigned, eine Adresse für den pbSignedBlob-Ausgabeparameter und werte für die anderen Parameter entsprechend.