Decodieren von umumschlagten Daten

Die allgemeinen Aufgaben, die zum Decodieren einer umschlagten Nachricht erforderlich sind, sind in der folgenden Abbildung dargestellt und in der folgenden Liste beschrieben.

Decodieren von umhumhierten Daten

Die Abfolge der Ereignisse zum Decodieren von umhumhierten Daten mithilfe der Schlüsseltransportschlüsselverwaltung, wie in der vorherigen Abbildung dargestellt, lautet wie folgt:

  • Ein Zeiger auf die digital umhumhierte Nachricht wird abgerufen.
  • Ein Zertifikatspeicher wird geöffnet.
  • Aus der Nachricht wird die Empfänger-ID (Meine ID) abgerufen.
  • Die Empfänger-ID wird zum Abrufen des Zertifikats verwendet.
  • Der private Schlüssel, der diesem Zertifikat zugeordnet ist, wird abgerufen.
  • Der private Schlüssel wird verwendet, um den symmetrischen Schlüssel (Sitzung)zu entschlüsseln.
  • Der Verschlüsselungsalgorithmus wird aus der Nachricht abgerufen.
  • Mithilfe des privaten Schlüssels und des Verschlüsselungsalgorithmus werden die Daten entschlüsselt.

Im folgenden Verfahren werden Nachrichtenfunktionen auf niedriger Ebene verwendet, um die gerade aufgeführten Aufgaben auszuführen.

So decodieren Sie eine umschlagte Nachricht

  1. Hier erhalten Sie einen Zeiger auf das codierte BLOB.
  2. Rufen Sie CryptMsgOpenToDecode auf,und übergeben Sie die erforderlichen Argumente.
  3. Rufen Sie CryptMsgUpdate einmal auf, und übergeben Sie dabei das in Schritt 2 abgerufene Handle und einen Zeiger auf die daten, die decodiert werden sollen. Dies führt dazu, dass je nach Nachrichtentyp die entsprechenden Aktionen für die Nachricht durchgeführt werden.
  4. Rufen Sie CryptMsgGetParamauf, und übergeben Sie das in Schritt 2 abgerufene Handle und CMSG TYPE PARAM, um zu überprüfen, ob die Nachricht den Umschlagdatentyp _ auf _ hat.
  5. Rufen Sie erneut CryptMsgGetParam auf,und übergeben Sie CMSG _ INNER CONTENT TYPE _ _ PARAM, um den Datentyp _ des inneren Inhalts zu erhalten.
  6. Wenn der innere Inhaltsdatentyp Daten ist, fahren Sie mit dem Entschlüsseln und Decodieren des Inhalts fort. Führen Sie andernfalls eine decodierungsprozedur aus, die für den Inhaltsdatentyp geeignet ist.
  7. Unter der Annahme, dass der innere Inhaltstyp "data" ist, initialisieren Sie die CMSG-DATENstruktur STRG _ _ DECRYPT _ PARA, und rufen Sie CryptMsgControlauf, und übergeben Sie CMSG STRG DECRYPT und die Adresse der _ _ Struktur. Der Inhalt wird entschlüsselt.
  8. Rufen Sie CryptMsgGetParamauf, und übergeben Sie CMSG CONTENT PARAM, um einen Zeiger auf das _ decodierte Inhaltsdaten-BLOB _ (BYTE-Zeichenfolge) zu erhalten.
  9. Rufen Sie CryptMsgClose auf, um die Nachricht zu schließen.

Das Ergebnis dieser Prozedur ist, dass die Nachricht decodiert und entschlüsselt wird und ein Zeiger auf das Inhaltsdaten-BLOB abgerufen wird.

Beispiel C-Programm: Codieren einer umschlagenden, signierten Nachricht