Verfahren zum Signieren von Daten

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

Initialisierungszuordnung für einen Aufruf von cryptsignmessage

So signieren Sie Daten mit CryptSignMessage

  1. Rufen Sie einen Zeiger auf die Daten ab, die signiert werden sollen.
  2. Weisen Sie den Zeiger auf die Daten zu, um null eines Arrays für zu signierte Daten zu indizieren.
  3. Rufen Sie ein Handle für den Kryptografieanbieter ab.
  4. Öffnen Sie einen Zertifikatspeicher , der das Zertifikat des Signierers enthält.
  5. Rufen Sie eine Adresse für das Zertifikat des Signierers ab.
  6. Weisen Sie die Adresse des Zertifikats dem Nullindex des MsgCert-Arrays zu.
  7. Weisen Sie dem MsgCert-Array die Adressen aller anderen Zertifikate zu, die in die Nachricht eingeschlossen werden sollen.
  8. Initialisieren Sie die CRYPT_ALGORITHM_IDENTIFIER-Struktur , und initialisieren Sie den pszObjId-Member für den gewünschten Hashalgorithmus und die anderen Member entsprechend.
  9. Initialisieren Sie die CRYPT_SIGN_MESSAGE_PARA-Struktur , und initialisieren Sie dabei das pSigningCert-Element mit der Adresse des Zertifikats des Unterzeichners, das MsgCert-Arraymember mit der Adresse der Zertifikate des Signierers und der anderen Zertifikate, das HashAlgorithm-Element mit der Adresse der CRYPT_ALGORITHM_IDENTIFIER-Struktur und ggf. die anderen Member.
  10. 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 signierenden Daten" für den Parameter rgpbToBeSigned , eine Adresse für den pbSignedBlob-Ausgabeparameter und gegebenenfalls Werte für die anderen Parameter.