Decodieren signierter Daten
Der folgende allgemeine Prozess entschlüsselt einen signierten Datentyp .
So decodieren Sie eine signierte Nachricht
- Rufen Sie einen Zeiger auf das codierte BLOB ab.
- Rufen Sie CryptMsgOpenToDecode auf, und übergeben Sie die erforderlichen Argumente.
- Rufen Sie CryptMsgUpdate einmal auf, indem Sie den in Schritt 2 abgerufenen Handle und einen Zeiger auf die Daten übergeben, die decodiert werden sollen. Dies bewirkt, dass je nach Nachrichtentyp die entsprechenden Aktionen für die Nachricht ausgeführt werden.
- Rufen Sie CryptMsgGetParam auf, indem Sie den in Schritt 2 abgerufenen Handle und die entsprechenden Parametertypen übergeben, um auf die decodierten Daten zuzugreifen. Übergeben Sie beispielsweise CMSG_CONTENT_PARAM, um einen Zeiger auf den decodierten Inhalt abzurufen.
Der folgende allgemeine Prozess überprüft die Signatur einer decodierten, signierten Nachricht.
So überprüfen Sie die Signatur einer decodierten, signierten Nachricht
- Rufen Sie CryptMsgGetParam auf, indem Sie den Nachrichtenhandpunkt übergeben und CMSG_SIGNER_CERT_INFO_PARAM, um die CERT_INFO des Signierers aus der Nachricht abzurufen.
- Rufen Sie CertOpenStore auf, um einen temporären Speicher zu öffnen, der mit den Zertifikaten aus der Nachricht initialisiert wird.
- Rufen Sie CertGetSubjectCertificateFromStore auf, um die CERT_INFO des Signierers aus den in der Nachricht enthaltenen Zertifikaten abzurufen.
- Rufen Sie CryptMsgControl auf, indem Sie CMSG_CTRL_VERIFY_SIGNATURE übergeben, um die Signaturen zu überprüfen.
- Rufen Sie CryptMsgClose auf, um die Nachricht zu schließen.
Das Ergebnis dieser Verfahren besteht darin, dass die Signatur überprüft wird und ein Zeiger auf den decodierten Nachrichteninhalt abgerufen wird, der in Schritt 4 der Prozedur zum Decodieren einer signierten Nachricht abgerufen wird.
Details zur C-Codierung finden Sie unter Beispiel C-Programm: Signieren, Codieren, Decodieren und Überprüfen einer Nachricht.