AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Sonstiges C# überprüfen von digitalen Signaturen und Zertifikaten
Thema durchsuchen
Ansicht
Themen-Optionen

überprüfen von digitalen Signaturen und Zertifikaten

Ein Thema von TurboMartin · begonnen am 16. Jul 2007
Antwort Antwort
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#1

überprüfen von digitalen Signaturen und Zertifikaten

  Alt 16. Jul 2007, 17:33
Zu diesem Thema, dem überprüfen von digitalen Signaturen und deren Zertifikaten, gibt es zwei Möglichkeiten.
Die erste ist sehr kurz und einfach gehalten. Dadurch hat man kaum/keine Möglichkeit zur veränderung der Parameter, wie in der Zweiten Funktion.
Code:
private static void CheckData(byte[] data)
{
    try
    {
        SignedCms signedMessage = new SignedCms();
        //Hier werden die signierten Daten dekordiert und in SignedMessage geschrieben
        signedMessage.Decode(data);

        //Hier werden die Signatur _UND_ das Zertifikat überprüft
        signedMessage.CheckSignature(false);
        Console.WriteLine("Daten und Zertifikat erfolgreich überprüft");
    }
    catch (CryptographicException)
    {
        Console.WriteLine(
          "Fehler beim Überprüfen der Daten oder des Zertifikats");
    }
}

Hier wird zuerst nur die Signatur überprüft. Daraufhin werden mit Hilfe des X509Chain Objektes die Überprüfungs-Parameter festgelegt.

Code:
private static void CheckData2(byte[] data)
{
    try
    {
        SignedCms signedMessage = new SignedCms();

        signedMessage.Decode(data);                                         //Hier werden die signierten Daten dekordiert und in SignedMessage geschrieben

        signedMessage.CheckSignature(true);                                 // überprüfen der Signatur

        //Hier werden nun die Zertifikat-Überprüfungs-Parameter gesetzt
        X509Chain chain = new X509Chain();
        chain.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;
        chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
        chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
        chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 0, 30);

        //Und hier endlich die Überprüfen des Zertifikats
        chain.Build(signedMessage.SignerInfos[0].Certificate);
        foreach (X509ChainStatus status in chain.ChainStatus)
        {
            Console.WriteLine(status.Status);                               //Status der Überprüfung ausgeben
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
    }
}
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz